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

Post Pic
στις 21.07.10. Kατηγορίες HTML, MySQL, PHP με 20 Σχόλια

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



Tags: , , , , , , ,

Jimakos { Προσωπική Ιστοσελίδα / Άρθρα Στο GreekTuts }
Ο Δημήτρης είναι απόφοιτος ΙΕΚ και ασχολείται με την PHP εδω και ένα μίση χρόνο.

20 Σχόλια στο άρθρο Απλό Σύστημα Εγγραφής Χρηστών

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

  • datahell says:

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

  • Pantso says:

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

  • alex says:

    nai akrivos auto. to anoigo kateu8ian meso firefox.

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

  • alex says:

    to ekana auto p m eipes alla pali t idio

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

  • alex says:

    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?

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

  • Pantso says:

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

← Προηγούμενα σχόλια

Leave a Reply

Your email address will not be published. Required fields are marked *

*

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>