Post Pic

Απλό Σύστημα Εγγραφής Χρηστών

Αναρωτηθήκατε ποτέ πως είναι ένα σύστημα πρόσβασης χρηστών σε μια ιστοσελίδα; Σε αυτό το βοήθημα λοιπόν θα δούμε πως μπορούμε να δημιουργήσουμε για αρχή ένα απλό σύστημα εγγραφής χρηστών, χρησιμοποιόντας απλές εντολές της 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 αν όχι τότε προχωράμε στον επόμενο έλεγχο ο οποίος είναι η ύπαρξη του ονόματος που εισαχθεί μέσα στην βάση μας. Εάν υπάρχει τότε δηλώνουμε το μήνυμα σε μια μεταβλητή και στέλνουμε τον χρήστη πίσω στην φόρμα εκεί θα του επιστρέφουν τα ανάλογα μηνύματα.

Μπορείτε να κατεβάσετε τα αρχεία του βοηθήματος εδώ

download



Γίνετε Συνδρομητής

Γραφτείτε στις ενημερώσεις

Powered by FeedBurner

Γίνετε Συνδρομητής

19 Σχόλια

17:45 / 21.07.10
#1

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" ); } }

21:28 / 21.07.10
#2

Απότι καταλαβαίνω υπάρχει θέμα με την κωδικοποίηση των χαρακτήρων. Δοκίμασε να δείς αν έχει UTF-8

00:50 / 22.07.10
#3

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

08:10 / 22.07.10
#4

Ποιόν editor χρησιμοποιείς? Συνήθως οι ιδιότητες κωδικοποίησης λέγονται Encoding Options

10:07 / 22.07.10
#5

Αυτό είναι ΑΠΛΌ; :P Τότε το σύνθετο πως είναι; :P
Όλοι αυτοί οι κώδικες που μπαίνουν;

10:37 / 22.07.10
#6

Αν κατεβάσεις τα αρχεία που υπάρχουν στο τέλος του βοηθήματος, θα δείς ακριβώς τι μπαίνει που. Μπορεί να μοιάζει λίγο μπέρδεμα, αλλά είναι αρκετά απλός τρόπος σε σχέση με λύσεις και software που κυκλοφορούν. Βέβαια αυτό σημαίνει λιγότερη ασχφάλεια, αλλά έτσι κ αλλιώς το βοήθημα είναι περισσότερο για την επίδειξη των συναρτήσεων και του κώδικα

10:41 / 22.07.10
#7

OK, θα δω τι μπορώ να κάνω. :)
Ευχαριστώ.

18:32 / 22.07.10
#8

Μια παρένθεση

εκει που είναι ο κώδικας
if(emptyempty($name))
είναι μια φορα το empty
if(empty($name)){}
Μαλλον τυπογραφικό
Πιστεύω πως αν μελετήσετε και τα προηγούμενα Βοηθήματα περι php mysql τοτε θα σας φανει παιχνιδάκι
επίσης θα προτεινα να διαβάσετε με προσοχή το αρθρο και αν δεν καταλαβέτε κατι ριξτε μια ματιά στο τελικό αρχείο.
Για ότι αλλο είμαστε εδω για απαντήσεις .

18:57 / 22.07.10
#9

egw den xrisimopoeiw kapoion sigkekrimeno editor…me wordpad t kanw,…. peirazei?

21:52 / 22.07.10
#10

Καλό θα ήταν να χρησιμοποιήσεις κάποιον δωρεάν editor όπως ο Notepad++ ή το Programmers Notepad

22:11 / 22.07.10
#11

Εγώ προσωπικά χρησιμοποιώ Notepad++ ελευθερο λογισμικό ευχρηστο πολλα χρησιμα plug in's και υποστηριξη πολλων γλωσσων προγραμματισμου.
Επίσης δοκίμασε αν εγκαταστήσεις το Notepad++ να αποθηκευσεις το αρχείο σε μορφή UTF-8 χωρίς BOM

22:25 / 22.07.10
#12

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?

23:39 / 22.07.10
#13

Λοιπον ωραία αν και δοκίμασα να καταλάβω τι κανεις λαθος δεν τα καταφερα .
Εφοσον έβαλες το Notepadd ++ Ανοιξε το αρχείο σου με το προγραμμα και πηγαινε Ρυθμίσεις ->Προτιμήσεις->Καρτέλα Νέο Εγγραφο /Ανοιγμα Αποθηκευση Καταλόγου στην κωδικοποίση τσέκαρε το UTF-8 χωρίς BOM aplly to opened ANSI files .
Δοκίμασε αυτο προς το παρον.

02:52 / 23.07.10
#14

to ekana auto p m eipes alla pali t idio

15:42 / 23.07.10
#15

Ευρηκα που ειπε και ο αρχιμιδης!αν θυμαμαι καλα :P
Το αρχείο σου μαλλον απο τι καταλαβα δεν το ανοιγεις μεσα απο καποιο προγραμμα δηλαδη μεσω xampp η wampp η κατι παρομοιο δηλαδη το ανοιγεις απευθειας μεσω καποιου explorer να υποθέσω !!

20:16 / 23.07.10
#16

nai akrivos auto. to anoigo kateu8ian meso firefox.

00:28 / 24.07.10
#17

Αυτό που πρέπει να κάνεις είναι να κάνεις εγκατάσταση του WAMP ή του XAMMP, καθώς τα αρχεία PHP χρειάζονται server για να τρέξουν. Έτσι τα παραπάνω προγράμματα κάνουν προσομοίωση server στον υπολογιστή σου

09:54 / 01.08.10
#18

Υπάρχουν ορισμένα βασικά λάθη στο παράδειγμα. Στη φόρμα υπάρχουν 2 πεδία με όνομα "name". Το δεύτερο θα έπρεπε να ήταν "password". Επίσης τα πεδία της φόρμας δεν έχουν type attribute. Ειδικά για το πεδίο του κωδικού για λόγους ασφάλειας θα πρέπει να οπωσδήποτε να βάλουμε type="password". Στα υπόλοιπα: type="text". Ένα άλλο τραγικό λάθος είναι ότι η φόρμα έχει Method="get" αλλά μετά την υποβολή τις τιμές των πεδίων τις λαμβάνετε με μέσω της super global POST! Μετά την υποβολή της φόρμας δεν γίνεται κανένα Validation στο τι στοιχεία έδωσε ο χρήστης πράγμα το οποίο είναι τραγικό. Επίσης εφόσον το "name" είναι primary key θα πρέπει να ελέγξουμε αν υπάρχει ήδη τέτοιος χρήστης στη βάση και αν ναι να δείξουμε σχετικό μήνυμα. Τέλος δεν καταλαβαίνω γιατί βάζετε τα errors στο session. Εφόσον εμφανίζετε το μήνυμα στη σελίδα που έγινε υποβολή η φόρμα δεν χρειάζεται να χρησιμοποιήσετε session. Γενικά η φόρμα θέλει πολλές βελτιώσεις. Εύχομαι να μην πάει κανείς και βάλει online κάτι τέτοιο χωρίς να το βελτιώσει πρώτα… Συγνώμη, αλλά το tutorial είναι τραγικό.

10:50 / 02.08.10
#19

Τα σχόλια σας με δυσαρέστησαν προς στιγμην .
Λοιπον το πρόβλημα είναι οτι:
1ον Οτι προφανώς πρόκειτε για τυπογραφικά λάθη και θα παρακαλουσα να διορθοθούν.
2ον Το πιο πιθανό έστω και ετσι λάθος που είναι τωρα τα πεδία είναι να μην γινόταν ποτε εγγραφή χρήστη διότι θα ήταν το πεδίο Κωδικός πάντα κενό.
3ον Θα ήθελα να μάθω πως να χειρίζομαι τα λάθη με άλλους τρόπους έκτος απο sessions και cookies σε μία φόρμα που κάνει submit τα στοιχεία της φόρμας σε άλλο αρχείο php.

Αφήστε ένα σχόλιο

* Το όνομα σας, το Email, και το σχόλιο είναι απαιτούμενα

Γραφτείτε στις Email Ενημερώσεις

Εισάγετε το email σας:

Powered by FeedBurner

Log In

Register

Lost your Password?

Tag Cloud

Οι Φίλοι μας στο Twitter

Φίλοι: 270 Μας ακολουθούν: 237

To GreekTuts Στο Διαδίκτυο

Bookmark & Share

Γίνε Συνδρομητής Στο GreekTuts


Κερδίστε πρόσβαση σε επιπλέον υλικό και άρθρα, αλλά και πολλές άλλες παροχές και προσφορές αγοράζοντας μία απο τις συνδρομές που σας προσφέρει το GreekTuts.

Γράψτε Για Το GreekTuts


Θέλετε και εσείς να γράψετε άρθρα για το GreekTuts; Διαβάστε περισσότερα εδώ. Οποιοσδήποτε μπορεί να στείλει, γι'αυτό αδράξτε την ευκαιρία και στείλτε μας και εσείς.