
Αναρωτηθήκατε ποτέ πως είναι ένα σύστημα πρόσβασης χρηστών σε μια ιστοσελίδα; Σε αυτό το βοήθημα λοιπόν θα δούμε πως μπορούμε να δημιουργήσουμε για αρχή ένα απλό σύστημα εγγραφής χρηστών, χρησιμοποιόντας απλές εντολές της PHP, λίγη SQL και HTML.
H Φόρμα Εγγραφής
Καταρχάς θα χρειαστούμε μια φόρμα την οποία πρέπει να συμπληρώσει ο χρήστης για να προχωρήσει στην εγγραφή του .
Ο παρακάτω κώδικας είναι μια απλή φόρμα με λίγο κώδικα της php ο οποίος θα μας χρησιμεύσει αργότερα για την εμφάνιση μηνυμάτων.
forma.php
<?php
session_start();
?>
<html >
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Φόρμα Εισαγωγής στοιχείων</title>
</head>
<body>
<pre>
<form action="register.php" method="get" >
Όνομα : <input name="name" style="background:#3281C0" /><br />
Κωδικός:<input name="name" style="background:#3281C0" /><br />
Email : <input name="email" style="background:#3281C0" />
<br />
<input value="Καταχωρηση" />
<?php
if (isset($_SESSION['errors'])){
echo $_SESSION['errors'];
}
else
echo $_SESSION['error2']; ?>
</pre>
</form>
</body>
</html>
Η Βάση Δεδομένων
Έπειτα θα χρειαστούμε μια βάση δεδομένων στην οποία θα καταχωρήσουμε τα στοιχειά που θα εισάγουν οι χρήστες
Ας δούμε λοιπόν πως θα δημιουργήσουμε αυτή την βάση :
Δημιουργία βάσης :
CREATE DATABASE `Greektuts` ;
έπειτα αφού επιλέξουμε την βάση δημιουργούμε έναν πίνακα:
Δημιουργία πίνακα:
CREATE TABLE `Greektuts`.`Register` ( `Name` VARCHAR( 40 ) NOT NULL , `Password` VARCHAR( 40 ) NOT NULL , `Email` VARCHAR( 60 ) NOT NULL , PRIMARY KEY ( `Name` ) ) ENGINE = MYISAM ;
Έτσι έχουμε δημιουργήσει την βάση μας και τον πίνακα μας .
Διαχείρηση Δεδομένων
Τώρα το κομμάτι του κώδικα που θα διαχειριστεί τα δεδομένα:
Δημιουργούμε ένα αρχείο php με όνομα register.php
Για αρχή θα δημιουργήσουμε μια function για να διαχειριζόμαστε την σύνδεση μας με την βάση
<?php
function db_con(){
$connection=mysql_connect("$localhost","$db_username","db_password") or die("Δεν επιτεύχθηκε η σύνδεση");
$db_selct=mysql_select_db($db_name,$connection) or die("Δεν επιτεύχθηκε η σύνδεση με τον πίνακα ");
}
?>
Λοιπόν δημιουργήσαμε μια μέθοδο για να μπορούμε να την καλούμε όποτε εμείς θέλουμε
Ας δούμε αναλυτικά τι κάναμε μέχρι στιγμής
Είναι ο κώδικας σύνδεσης στην βάση
$connection=mysql_connect("$localhost","$db_username","db_password") or die("Δεν επιτεύχθηκε η σύνδεση");
Σημαντικό*
Αντικαταστήστε το $localhost,$db_username,$db_password και παρακάτω το $db_name
με τα δικά σας στοιχειά ένα παράδειγμα :
$connection=mysql_connect("localhost","root","") or die("Δεν επιτεύχθηκε η σύνδεση");
Η σύνδεση αυτή καθορίζει το όνομα της βάσης την οποία θέλουμε να επιλέξουμε
$db_selct=mysql_select_db($db_name,$connection) or die("Δεν επιτεύχθηκε η σύνδεση με τον πίνακα ");
Έπειτα προχωράμε παρακάτω :
<?php
session_start();
$name = $_POST['name'];
$pass = $_POST['password'];
$email = $_POST['email'];
if(isset($_POST['submit'])){
unset($_SESSION['errors']);
if(empty($name)){
$_SESSION['errors']=" Το πεδίο όνομα θα πρέπει να συμπληρωθεί ";
}
if(empty($pass)){
$_SESSION['errors'].=" Το πεδιο κωδικός θα πρέπει να συμπληρωθεί ";
}
if(empty($email)){
$_SESSION['errors'].=" Το πεδιο email θα πρεπει να συμπληρωθει ";
}
Εδώ απλά κάνουμε έναν έλεγχο απλό για το αν έχουν εισαχθεί δεδομένα στην φόρμα που είχαμε δημιουργήσει προηγουμένως.
Ας το πάρουμε κομμάτι κομμάτι
session_start();
αυτή η μέθοδος θα μας χρησιμεύσει αργότερα για την επιστροφή μηνυμάτων στον χρήστη .
Ο παρακάτω κώδικας ελέγχει αν έχει “πατηθεί “ το κουμπί Καταχώρησε αν όντως έχει “πατηθεί”
τότε βγάζει όλα τα δεδομένα από το $_SESSION['errors'] ώστε να μην έχουμε κολλήματα αργότερα
if(isset($_POST['submit'])){
unset($_SESSION['errors']);
Εδώ κάνουμε έναν έλεγχο από τους πιο απλούς που θα μπορούσατε να κάνετε
ελέγχουμε αν το πεδίο όνομα είναι άδειο αν ναι τότε εκχωρούμε μέσα στο $_SESSION το ακόλουθο μήνυμα. Το ίδιο γίνετε για όλα τα πεδία τα οποία θέλουμε να ελέγξουμε.
if(empty($name)){
$_SESSION['errors']=" Το πεδίο όνομα θα πρέπει να συμπληρωθεί ";
}
Παρατήρηση στο δεύτερο έλεγχο και ούτω κάθε ξης βάζουμε μια . πριν το =
Τέλος προσθέτουμε λίγο ακόμη έλεγχο και είμαστε έτοιμοι
if(!isset($_SESSION['errors'])){
db_con();
$query=mysql_query("SELECT * FROM register where Name='$name' ") or die("Κάτι πήγε στραβά");
$check=mysql_num_rows($query);
if($check >0){
$_SESSION['error2']="Το όνομα χρήστη $name υπάρχει ήδη στην βάση ";
header( "Location: forma.php" );
}
else {
$query=("INSERT INTO register (Name, Password,Email) VALUES ('$name', '$pass', '$email')");
$insert=mysql_query($query);
}
}
else {
header( "Location: forma.php" );
}
}
Ελέγχουμε αν υπάρχουν errors αν όχι τότε προχωράμε στον επόμενο έλεγχο ο οποίος είναι η ύπαρξη του ονόματος που εισαχθεί μέσα στην βάση μας. Εάν υπάρχει τότε δηλώνουμε το μήνυμα σε μια μεταβλητή και στέλνουμε τον χρήστη πίσω στην φόρμα εκεί θα του επιστρέφουν τα ανάλογα μηνύματα.
Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ























19 Σχόλια
otan patao kataxorisi mou bgazei auto
"; } if(empty($pass)){ $_SESSION['errors'].=" Το πεδιο κωδικος θα Ï€Ïεπει να συμπληÏωθει"."
"; } if(empty($email)){ $_SESSION['errors'].=" Το πεδιο email θα Ï€Ïεπει να συμπληÏωθει "."
"; } if(!isset($_SESSION['errors'])){ db_con(); $query=mysql_query("SELECT * FROM register where Name='$name' ") or die("Κατι πηγε στÏαβα"); $check=mysql_num_rows($query); if($check >0){ $_SESSION['error2']="Το ονομα χÏηστη $name υπαÏχει ηδη στην βαση "; header( "Location: forma.php" ); } else { $query=("INSERT INTO register (Name, Password,Email) VALUES ('$name', '$pass', '$email')"); $insert=mysql_query($query); } } else { header( "Location: forma.php" ); } }
Απότι καταλαβαίνω υπάρχει θέμα με την κωδικοποίηση των χαρακτήρων. Δοκίμασε να δείς αν έχει UTF-8
kai pws t vlepw auto?. aaa prin kanw format ta arxeia .php ta evlepe san anagnorisima arxeia kodika.. tora m ta blepei san ksena.. den kserei me t na t aniksei
Ποιόν editor χρησιμοποιείς? Συνήθως οι ιδιότητες κωδικοποίησης λέγονται Encoding Options
Αυτό είναι ΑΠΛΌ;
Τότε το σύνθετο πως είναι; 
Όλοι αυτοί οι κώδικες που μπαίνουν;
Αν κατεβάσεις τα αρχεία που υπάρχουν στο τέλος του βοηθήματος, θα δείς ακριβώς τι μπαίνει που. Μπορεί να μοιάζει λίγο μπέρδεμα, αλλά είναι αρκετά απλός τρόπος σε σχέση με λύσεις και software που κυκλοφορούν. Βέβαια αυτό σημαίνει λιγότερη ασχφάλεια, αλλά έτσι κ αλλιώς το βοήθημα είναι περισσότερο για την επίδειξη των συναρτήσεων και του κώδικα
OK, θα δω τι μπορώ να κάνω.
Ευχαριστώ.
Μια παρένθεση
εκει που είναι ο κώδικας
if(emptyempty($name))
είναι μια φορα το empty
if(empty($name)){}
Μαλλον τυπογραφικό
Πιστεύω πως αν μελετήσετε και τα προηγούμενα Βοηθήματα περι php mysql τοτε θα σας φανει παιχνιδάκι
επίσης θα προτεινα να διαβάσετε με προσοχή το αρθρο και αν δεν καταλαβέτε κατι ριξτε μια ματιά στο τελικό αρχείο.
Για ότι αλλο είμαστε εδω για απαντήσεις .
egw den xrisimopoeiw kapoion sigkekrimeno editor…me wordpad t kanw,…. peirazei?
Καλό θα ήταν να χρησιμοποιήσεις κάποιον δωρεάν editor όπως ο Notepad++ ή το Programmers Notepad
Εγώ προσωπικά χρησιμοποιώ Notepad++ ελευθερο λογισμικό ευχρηστο πολλα χρησιμα plug in's και υποστηριξη πολλων γλωσσων προγραμματισμου.
Επίσης δοκίμασε αν εγκαταστήσεις το Notepad++ να αποθηκευσεις το αρχείο σε μορφή UTF-8 χωρίς BOM
okay to ekana install to notepad ++ thanks alla opws sas eipa m bgazei auto
"; } if(empty($pass)){ $_SESSION['errors'].=" Το πεδιο κωδικος θα Ï€Ïεπει να συμπληÏωθει"."
"; } if(empty($email)){ $_SESSION['errors'].=" Το πεδιο email θα Ï€Ïεπει να συμπληÏωθει "."
"; } if(!isset($_SESSION['errors'])){ db_con(); $query=mysql_query("SELECT * FROM register where Name='$name' ") or die("Κατι πηγε στÏαβα"); $check=mysql_num_rows($query); if($check >0){ $_SESSION['error2']="Το ονομα χÏηστη $name υπαÏχει ηδη στην βαση "; header( "Location: forma.php" ); } else { $query=("INSERT INTO register (Name, Password,Email) VALUES ('$name', '$pass', '$email')"); $insert=mysql_query($query); } } else { header( "Location: forma.php" ); } }
otan patao kataxorisi
tora pws mporoume na t fiaxume ? rotisa 1 filo alla opws eipes k esi prepei na einai prob me utf egw prepei na exw allo version i kati tetoio den poliksero apo auto. ti mporo na kanw?
Λοιπον ωραία αν και δοκίμασα να καταλάβω τι κανεις λαθος δεν τα καταφερα .
Εφοσον έβαλες το Notepadd ++ Ανοιξε το αρχείο σου με το προγραμμα και πηγαινε Ρυθμίσεις ->Προτιμήσεις->Καρτέλα Νέο Εγγραφο /Ανοιγμα Αποθηκευση Καταλόγου στην κωδικοποίση τσέκαρε το UTF-8 χωρίς BOM aplly to opened ANSI files .
Δοκίμασε αυτο προς το παρον.
to ekana auto p m eipes alla pali t idio
Ευρηκα που ειπε και ο αρχιμιδης!αν θυμαμαι καλα
Το αρχείο σου μαλλον απο τι καταλαβα δεν το ανοιγεις μεσα απο καποιο προγραμμα δηλαδη μεσω xampp η wampp η κατι παρομοιο δηλαδη το ανοιγεις απευθειας μεσω καποιου explorer να υποθέσω !!
nai akrivos auto. to anoigo kateu8ian meso firefox.
Αυτό που πρέπει να κάνεις είναι να κάνεις εγκατάσταση του WAMP ή του XAMMP, καθώς τα αρχεία PHP χρειάζονται server για να τρέξουν. Έτσι τα παραπάνω προγράμματα κάνουν προσομοίωση server στον υπολογιστή σου
Υπάρχουν ορισμένα βασικά λάθη στο παράδειγμα. Στη φόρμα υπάρχουν 2 πεδία με όνομα "name". Το δεύτερο θα έπρεπε να ήταν "password". Επίσης τα πεδία της φόρμας δεν έχουν type attribute. Ειδικά για το πεδίο του κωδικού για λόγους ασφάλειας θα πρέπει να οπωσδήποτε να βάλουμε type="password". Στα υπόλοιπα: type="text". Ένα άλλο τραγικό λάθος είναι ότι η φόρμα έχει Method="get" αλλά μετά την υποβολή τις τιμές των πεδίων τις λαμβάνετε με μέσω της super global POST! Μετά την υποβολή της φόρμας δεν γίνεται κανένα Validation στο τι στοιχεία έδωσε ο χρήστης πράγμα το οποίο είναι τραγικό. Επίσης εφόσον το "name" είναι primary key θα πρέπει να ελέγξουμε αν υπάρχει ήδη τέτοιος χρήστης στη βάση και αν ναι να δείξουμε σχετικό μήνυμα. Τέλος δεν καταλαβαίνω γιατί βάζετε τα errors στο session. Εφόσον εμφανίζετε το μήνυμα στη σελίδα που έγινε υποβολή η φόρμα δεν χρειάζεται να χρησιμοποιήσετε session. Γενικά η φόρμα θέλει πολλές βελτιώσεις. Εύχομαι να μην πάει κανείς και βάλει online κάτι τέτοιο χωρίς να το βελτιώσει πρώτα… Συγνώμη, αλλά το tutorial είναι τραγικό.
Τα σχόλια σας με δυσαρέστησαν προς στιγμην .
Λοιπον το πρόβλημα είναι οτι:
1ον Οτι προφανώς πρόκειτε για τυπογραφικά λάθη και θα παρακαλουσα να διορθοθούν.
2ον Το πιο πιθανό έστω και ετσι λάθος που είναι τωρα τα πεδία είναι να μην γινόταν ποτε εγγραφή χρήστη διότι θα ήταν το πεδίο Κωδικός πάντα κενό.
3ον Θα ήθελα να μάθω πως να χειρίζομαι τα λάθη με άλλους τρόπους έκτος απο sessions και cookies σε μία φόρμα που κάνει submit τα στοιχεία της φόρμας σε άλλο αρχείο php.