Tutoriale WEB     [RO]  [EN]  
| HOME | Tutoriale | Stiri | SERVICII | Director | Unelte | FORUM | Despre | HARTA | Contact | CAUTA |
.....................................................
.....................................................
User happy birthdayAzi sarbatorim 1 zi de nastere.
(dannyb0y)
.....................................................
Autentificare
Inregistrare
Am uitat parola
.....................................................
HangMan Online Game
.....................................................
Online
In total exista
7 vizitatori online,
dintre care:
7 sunt boti
.....................................................
Pune reclama ta aici
.....................................................
.....................................................
.....................................................
.....................................................
.
Home - Cum fac un formular de inregistrare a utilizatorilor?

<< Cum ma conectez la o baza de date?   -   Cum fac un formular de contact? >>
Voteaza acest articol (doar membrii)
1 2 3 4 5
A - A Anuntati pe aceasta cale administratorul site-ului pentru orice problema observata la aceasta pagina.  Printeaza pagina ca document PDF  Email  
Suntem interesati de parerea ta, te invitam sa completezi formularul de aici

Cum fac un formular de inregistrare a utilizatorilor?


Data publicarii: 17-03-2010 - Copyright © Marian Barbu

Prin ce se caracterizează acest formular de înregistrare a utilizatorilor?

  • scriptul PHP îşi creează singur tabelul în care va stoca utilizatorii dacă acesta nu există în baza de date
  • toate datele introduse sunt validate server-side
  • scriptul verifică în baza de date dacă există deja numele de utilizator ales şi adresa de email a noului utilizator
  • fiecare mesaj de eroare este personalizat pentru fiecare eroare în parte
  • câmpurile care conţin date invalide sunt evidenţiate
  • scriptul păstrează datele introduse în câmpurile formularului atunci când detectează o eroare
  • designul formularului este creat EXCLUSIV din CSS
  • de protecţie antispam nu avem nevoie deoarece se presupune că formularul de înregistrare se află în interiorul unei secţiuni de administrare

Aşadar, ca să realizez un formular de înregistrare a utilizatorilor mai întâi creez în baza de date tabelul care va stoca toţi utilizatorii.

Cod:
<?php
$q = "CREATE TABLE IF NOT EXISTS ai_registrationform(
   user_id INT UNSIGNED NOT NULL AUTO_INCREMENT,
   username VARBINARY(30) NOT NULL,
   email VARCHAR(30) NOT NULL,
   password CHAR(40) NOT NULL,
   registration_date DATETIME NOT NULL,
   ip VARCHAR(16) NOT NULL,
   PRIMARY KEY(user_id))";

mysql_query($q) or die(mysql_error());
?>

Mai avem nevoie de connect_to_db.inc.php, fişierul care ne conectează la baza de date.

Cod:
<?php
/*
Titlu: Cum fac un formular de inregistrare a utilizatorilor?
Autor: Marian Barbu aka AccesInterzis
Website: http://www.accesinterzis.ro
2010 (c) Toate drepturile rezervate
*/

#1
include('includes/connect_to_db.inc.php');

#2
if (isset($_POST['add'])) {
   #3
   $errors = array();

   #4
   foreach($_POST as $k => $v) {
      #4.1
      $v = trim($v);

      #4.2
      /*
      Cand bag datele in baza de date le infasor in mysql_real_escape_string().
      Cand citesc datele din baza de date le infasor in stripslashes() si htmlentities().
      */
      if (ini_get('magic_quotes_gpc')) {
         $v = stripslashes($v);
      }

      $v = mysql_real_escape_string($v);

      #4.3
      $$k = $v;

      #4.4
      if (empty($v)) {
         if ($k != 'retype_password') {
            if ($k == 'email') {
               $errors[$k] = 'The email address is required.';
            } 
            else {
               $errors[$k] = 'The '.$k.' is required.';
            }
         }
      } 
      else {
         if (strlen($v) > 30) {
            if ($k == 'email') {
               $errors[$k] = 'The email address is too long.';
            } 
            else {
               $errors[$k] = 'The '.$k.' is too long.';
            }
         } 
         else {
            if ($k == 'username') {
               if (!preg_match('/^[a-z0-9_. ]*$/i', $v)) {
                  $errors[$k] = 'The username isn\'t valid.';
               } 
               else {
                  $q = "SELECT user_id FROM ai_registrationform WHERE 
                     LOWER(username)='".strtolower($v)."'";
                  $result = mysql_query($q) or die(mysql_error());

                  if (mysql_num_rows($result) != 0) {
                     $errors[$k] = 'The username already exists in our database.';
                  }
               }
            }

            if ($k == 'email') {
               if (!preg_match('/^[a-z0-9_.]+@[a-z0-9-.]+\.[a-z]{2,4}$/i', $v)) {
                  $errors[$k] = 'The email address isn\'t valid.';
               } 
               else {
                  $q = "SELECT user_id FROM ai_registrationform WHERE 
                     LOWER(email)='".strtolower($v)."'";
                  $result = mysql_query($q) or die(mysql_error());

                  if (mysql_num_rows($result) != 0) {
                     $errors[$k] = 'The email address already exists in our database.';
                  }
               }
            }

            if ($k == 'password') {
               if(!preg_match('/^[a-z0-9]*$/i', $v)) {
                  $errors[$k] = 'The password isn\'t valid.';
               } 
               else {
                  if (strlen($v) < 5) {
                     $errors[$k] = 'The password is too short.';
                  } 
                  else {
                     /*
                     Daca parola aleasa este valida verific daca a fost retiparita corect.
                     */
                     if ($k == 'retype_password' && ($password != $retype_password)) {
                        $errors['password'] = 'The two passwords don\'t match.';
                        $errors['retype_password'] = true;
                     }
                  }
               }
            }
         }
      }
   }

   #6
   if(count($errors) == 0) {
      #6.1
      $q = "INSERT INTO ai_registrationform(`username`, `email`, `password`, 
         `registration_date`, `ip`)"
         ."VALUES('$username', '$email', SHA('$password'), NOW(), 
         '".$_SERVER['REMOTE_ADDR']."')";

      #6.2
      if (mysql_query($q)) {
         $confirmation = 'The user <strong>'.$username.'</strong> was 
            succesfully registered in our databse.';
      } 
      else {
         $confirmation = 'Something is wrong with the server. 
            Your registration wasn\'t added.';
      }
   }
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
   "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
   <title>How do I make a registration form?</title>
   <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
   <meta name="description" content="How do I make a registration form?" />
   <meta name="keywords" content="registration,form,php,script,mysql,
      database,user,backend,admin,section,cms" />
   <meta name="abstract" content="How do I make a registration form?" />
   <meta name="author" content="AccesInterzis" />
   <meta name="copyright" content="AccesInterzis" />
   <meta name="robots" content="index,follow" />
   <meta name="revisit-after" content="7 days" />

   <style type="text/css">
      /*INCEPUT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE INREGISTRARE*/

      form#registration_form {
         width:335px;
         margin:0px auto;
      }

      form#registration_form h1 {
         color:black;
         font: normal normal normal 24px  Verdana;
         /*font-style font-variant font-weight font-size font-family*/
         padding-bottom:5px;
      }

      form#registration_form div {
         margin:0 0 5px 0;
      }

      form#registration_form label {
         width:130px;
         float:left;
      }

      form#registration_form label span {
         color:#c00;
      }

      form#registration_form input {
         width:200px;
      }

      form#registration_form textarea {
         width:300px;
         height:150px;
      }

      form#registration_form input, form#registration_form textarea {
         border:1px #ccc solid;
      }

      form#registration_form input:hover, form#registration_form textarea:hover {
         border:1px #666 solid;
      }

      form#registration_form input#add {
         width:auto;
         color:#FFF;
         background-color:#333;
         border:1px #000 solid !important;
         cursor:pointer;
      }

      form#registration_form input#add:hover {
         color:#333;
         background-color:#fff;
         border:1px #333 solid;
      }

      /*Inceput - stilurile erorilor*/
      form#registration_form p {
         color:#c00;
         padding:0 0 0 130px;
         font-size:10px;
         text-align:left;
      }

      form#registration_form div#username_field label,
      form#registration_form div#email_field label,
      form#registration_form div#password_field label,
      form#registration_form div#retype_password_field label {
         color:#c00;
      }

      form#registration_form div#username_field input,
      form#registration_form div#email_field input,
      form#registration_form div#password_field input,
      form#registration_form div#retype_password_field input {
         border:1px #c00 solid;
         color:#c00;
      }

      form#registration_form div#username_field input:hover,
      form#registration_form div#email_field input:hover,
      form#registration_form div#password_field input:hover,
      form#registration_form div#retype_password_field input:hover {
         border:1px #c00 solid;
      }
      /*Sfarsit - stilurile erorilor*/

      /*SFARSIT - LINIILE CSS CARE CREEAZA SKINUL FORMULARULUI DE INREGISTRARE*/
   </style>
</head>

<body>
   <form action="<? php echo htmlentities(strip_tags('http://'.$_SERVER['HTTP_HOST'].
      $_SERVER['PHP_SELF']), ENT_QUOTES, 'utf-8'); ?>" method="post" id="registration_form">
   <h1>
   <label> </label>
   Register an user
   </h1>

   <?php if ($confirmation) echo '<p>'.$confirmation.'</p>'; ?>

   <?php echo ($errors['username']) ? '<p>'.$errors['username'].'</p><div 
      id="username_field">' : '<div>' ; ?>
   <label for="username">Username<span>*</span>:</label>
   <input name="username" type="text" id="username" value="<?php 
      if ($username) echo htmlentities(stripslashes($username)); ?>" />
   </div>

   <?php echo ($errors['email']) ? '<p>'.$errors['email'].'</p><div 
      id="email_field">' : '<div>' ; ?>
   <label for="email">Email<span>*</span>:</label>
   <input name="email" type="text" id="email" value="<?php 
      if ($email) echo htmlentities(stripslashes($email)); ?>" />
   </div>

   <?php echo ($errors['password']) ? '<p>'.$errors['password'].'</p><div 
      id="password_field">' : '<div>' ; ?>
   <label for="password">Password<span>*</span>:</label>
   <input name="password" type="password" id="password" />
   </div>

   <?php echo ($errors['retype_password']) ? '<div id="email_field">' : '<div>' ; ?>
   <label for="retype_password">Retype password<span>*</span>:</label>
   <input name="retype_password" type="password" id="retype_password" />
   </div>

   <div>
   <label>   </label>
   <input name="add" type="submit" id="add" value="add" />
   </div>
   </form>
</body>
</html>

Pentru un mai bun managment al codului este indicat ca scriptul PHP de deasupra DOCTYPE-ului, care validează datele introduse în formular şi înregistrează utilizatorul în baza de date, să se bage într-un fişier include şi să fie apelat prin funcţia PHP include().

Cod:
<?php
@include('includes/register_user.inc.php');
?>

De asemenea, este indicat ca liniile CSS, care creează skinul formularului de înregistrare, din secţiunea <head> </head> să fie băgate într-un fişier CSS extern şi apelate cu tagul HTML <link />.

Cod:
<?php
<link href="css/registration_form_design.css" type="text/css" rel="stylesheet" media="all" />
?>

Articol preluat de la www.accesinterzis.ro

Data publicarii: 17-03-2010 - Copyright © Marian Barbu   
Apasati aici daca doriti sa vedeti alte articole de acelasi autor

Exista 2 articole asemanatoare, apasati aici pentru lista.

Exista 1 comentariu la acest articol.

clapa dan aurel - 17-02-2011 15:50:59

buna ziua!!! am urmat instructiunile indicate mai sus. tot este ok dar cand am facut formularul de login am costat
ca<br />parola care o introduce in baza de date nu este de format md5 <br />spre exeplu
eea1f28317ac72f1a0a2078daa4f364474399b23 genereaza scriptul acesta de mai sus si cu scriptul mb5<br
/>cc1ed2b33c52b65edfc44a962ea0cbd6 va rog puteti careva sa ma ajute sa gasesc ce tip de parola este aceasta<br
/>eea1f28317ac72f1a0a2078daa4f364474399b23 multumesc!!!sau ce as putea face in acest script sa genereze parola cu
care sa<br />recunosc cu md5?????

[edit NR]
daca te uiti atent in script la linia unde se face insertul datelor in bd ai exact asa
SHA('$password')
inlocuiesti sha cu md5 si obtii ce vrei tu.

Adauga un comentariu la acest articol (doar pentru membri autentificati pe site):
Aplicatie de facturare, chitantier, rapoarte contabile