Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rejestracja PHP/MySQL + Walidacja, GOTOWY SKRYPT
korey
post
Post #1





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


Ostatnio napisałem ciekawy i prosty skrypt'cik do rejestracji opierający się na PHP i MySQL.

Skrypt rejestracji składa się z 4 pól: Login, Hasło, Powtórz Hasło i E-Mail.
Jego zadaniem jest Określić:
    - Czy wszystkie pola zostały wypełnione,
    - Czy wpisywane informacje mają odpowiednią ilość znaków,
    - Czy pola Hasło i Powtórz Hasło są takie same,
    - Czy Login I adres E-Mail nie są już zajęte.

Gdy zostanie to zrobione i któryś z powyższych warunków nie zostanie spełniony, bądź tez pole zostanie uzupełnione poprawnie, zostaniemy o tym poinformowani.

W praktyce będzie wyglądać to tak:
(IMG:http://img21.imageshack.us/img21/8743/registerz.jpg)

Aby osiągnąć taki efekt należy użyć następujących kodów:

ZAPYTANIE MySQL:
Kod
-- --------------------------------------------------------
--
-- Tworzymy Baze danych o nazwie BAZA
-- Baza danych: `baza`
--
CREATE DATABASE `baza` DEFAULT CHARACTER SET latin1 COLLATE latin1_swedish_ci;
USE `baza`;
--
-- --------------------------------------------------------
--
-- Tworzymy tabele Która będzie Składować konta nowych urzytkowników
-- Struktura tabeli dla  `users`
--

CREATE TABLE `users` (
  `user_id` tinyint(10) unsigned NOT NULL auto_increment,
  `user_name` varchar(13) collate latin1_general_cs NOT NULL,
  `user_password` varchar(40) collate latin1_general_cs NOT NULL,
  `user_password_short` varchar(17) collate latin1_general_cs NOT NULL,
  `user_email` text collate latin1_general_cs NOT NULL,
  PRIMARY KEY  (`user_id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=latin1 COLLATE=latin1_general_cs AUTO_INCREMENT=3;
--
-- --------------------------------------------------------


Teraz kolej na Sam Skrypt:
PLIK REJESTRACJA.PHP:
Kod
<?php
include ('includes/config_includes.php'); // Odniesienie Do pliku który łączy nas z DB


//jesli byl wyslany formularz przechodzimy do obsługi danych
if(isset($_POST['wyslij']))
{

    //Obrabiamy wszystkie zmienne przekazane metodą POST
    foreach ($_POST AS $klucz => $wartosc)
    {
        $wartosc= trim($wartosc);//usuwamy białe znaki
          if (get_magic_quotes_gpc())
              $wartosc= stripslashes($wartosc);
        $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
        $_POST[$klucz]=$wartosc;
    }

    $login=$_POST['login'];
    $haslo=$_POST['haslo'];
    $re_haslo=$_POST['re_haslo'];
    $email=$_POST['email'];
    
    $blad_txt='';
    $blad=false;

    
    

//Sprawdzamy czy użytkownik o danym Loginie nie jest juz zajęty
    $zapytanie_sprawdz_usera= "select * from users where user_name='$login' ";
$wynik = mysql_query($zapytanie_sprawdz_usera);
if(!$wynik)
{
echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
.';
exit;
}
if(mysql_num_rows($wynik)>0)
{
$sprawdz_login=1;
}

// Sprawdzamy czy adres email sie nie powtarza.
    $zapytanie_sprawdz_email= "select * from users where user_email ='$email' ";
$wynik_email = mysql_query($zapytanie_sprawdz_email);
if(!$wynik_email)
{
echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
.';
exit;
}
if(mysql_num_rows($wynik_email)>0)
{
$sprawdz_email=1;
}
  
    
    //sprawdzamy czy poprawnie jest wypełnine pole login

    if(empty($login)){
        $info_txt_nick.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
        $blad=true;    
    }
    else if($sprawdz_login==1){
        $info_txt_nick.='<img src="x.gif" /> <font color="#B20000"> Login o takiej nazwie już istnieje.</font>';
        $blad=true;    
    }
    else if(strlen($login)<5){
        $info_txt_nick.='<font color="#B20000">Login jest za krótki.</font>';
        $blad=true;
    }
    else if(strlen($login)>12){
        $info_txt_nick.='<img src="x.gif" /> <font color="#B20000"> Nie poprawna nazwa loginu, max 12 znaków.</font>';
        $blad=true;
    }
    else{
    $info_txt_nick.='<img src="v.gif" /> <font color="#207C07"> OK.</font>';
    }
    
    //sprawdzamy czy jest prawidlowe haslo
    if(empty($haslo)){
        $info_txt_haslo.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
        $blad=true;
    }
    else if(strlen($haslo)<=6) {
        $info_txt_haslo.='<img src="x.gif" /> <font color="#B20000"> Hało jest za krótkie.</font>';
        $blad=true;
    }
    else if(strlen($haslo)>16){
        $info_txt_haslo.='<img src="x.gif" /> <font color="#B20000"> Hasło może składać sie z Max 16 znaków.</font>';
        $blad=true;
    }
    else{
    $info_txt_haslo.='<img src="v.gif" /> <font color="#207C07"><b> OK.</b></font>';
    }
        
    //sprawdzamy czy jest 2 hasło
    if(empty($re_haslo)){
        $info_txt_re_harlo.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
        $blad=true;
    }
    else if($haslo != $re_haslo){
        $info_txt_re_harlo.='<img src="x.gif" /> <font color="#B20000"> Hała muszą być takie same.</font>';
        $blad=true;    
    }    
    else{
    $info_txt_re_harlo.='<img src="v.gif" /> <font color="#B20000"><font color="#207C07"> OK.</font>';
    }
        
    
    
    //sprawdzamy czy jest podany prawidłowy adres e-mail
    if(empty($email)){
        $info_txt_email.='<img src="x.gif" /> <font color="#B20000"> Pole nie zostało wypełnione.</font>';
        $blad=true;    
    }
    else if($sprawdz_email==1){
        $info_txt_email.='<img src="x.gif" /> <font color="#B20000"> Adres email o takiej nazwie już istnieje.</font>';
        $blad=true;    
    }    
    else if(!preg_match('|^[_a-z0-9.-]*[a-z0-9]@[_a-z0-9.-]*[a-z0-9].[a-z]{2,3}$|e', $email)){
        $info_txt_email.='<img src="x.gif" /> <font color="#B20000"> Adres email jest nie prawidłowy.</font>';
        $blad=true;
    }
    else{
        $info_txt_email.='<img src="v.gif" /> <font color="#207C07"> OK.</font>';
    }
    
    
if(!$blad)
    {
    //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
    $pokaz_form=true;

// Wysyłamy zapytanie do bazy danych    
$zapytanie_add_user = "INSERT INTO `users` values(NULL, '".$login."', '".sha1($haslo)."', '".$haslo."', '".$email."')";

// Odpowiedz
$odpowiedz = mysql_query($zapytanie_add_user);
if($odpowiedz > 0){
    echo 'Rojestracja przebiegła pomyślnie do konca.<br /><ul><li>Twój nick to: '.$login.'</li><li>haslo: '.$haslo.'</li><li>re_haslo: '.$re_haslo.'</li><li>email: '.$email.'</li></ul>';
}
else{
  $pokaz_form=false;
echo 'Problem z MySQL.';
}
    
    
    }
    else
    {
    //cos jest zle – wyświetlamy stosowne komunikaty
  //      echo $blad_txt;
  $pokaz_form=false;
    }
}
else
{
    //wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
    $login='';
    $haslo='';
    $re_haslo='';
    $email='';
}
//wyswietlamy formularz
if($pokaz_form!=true){
?>
<style>
table.form{
    margin-left: 120px;
    font-size: 12px;
}
td.title{
    vertical-align: bottom;
    text-align: right;
}
td.info{
    vertical-align: bottom;
    text-align: left;    
}
</style>
<form action="<? $_SERVER['PHP_SELF']; ?>" method="POST">
<table class="form" name="form" border="0px" cellpadding="3px" cellspacing="0px">
<tbody>
<tr>
<td style="width:80px;"></td>
<td>REJESTRACJA</td>
</tr>

<tr>
<td class="title">Login:</td>
<td class="info">
<input type="text" name="login" value="<? echo $login; ?>">  <? echo $info_txt_nick; ?>
</td>
</tr>

<tr>
<td class="title">Hasło:</td>
<td class="info">
<input type="text" name="haslo" value="<? echo $haslo; ?>">  <? echo $info_txt_haslo; ?>
</td>
</tr>

<tr>
<td class="title">Powtórz Hasło:</td>
<td class="info">
<input type="password" name="re_haslo" value="<? echo $re_haslo; ?>">  <? echo $info_txt_re_harlo; ?>
</td>
</tr>

<tr>
<td class="title">E-Mail:</td>
<td class="info">
<input type="text" name="email" value="<? echo $email; ?>">  <? echo $info_txt_email; ?>
</td>
</tr>

<tr>
<td>
</td>
<td>
<input type="submit" name="wyslij" value="Wyślij" />
<input type="button" value="wyczyść" class="clean" onclick="window.location='<? $_SERVER['PHP_SELF']; ?>' "/>
</td>
</tr>
</tbody>
</table>
</form>
v2.0
<?
}
else{
return false;
}
?>

Zawartość pliku config_includes.php
Kod
<?php
include ('cfg/database_cfg.php'); //połączenie z bazą danych
?>


Zawartość pliku database_cfg.php
Kod
<?PHP
/*
=============================
===== Database Settings =====
=============================
*/
######## DO EDYCJI ########
$MySQL['serv'] = 'localhost';      // Serwer/Host DB MySQL
$MySQL['user'] = 'root';     // Nazwa użytkownika DB MySQL
$MySQL['pass'] = '';    // Hasło DB MySQL
$MySQL['db'] = 'baza';     // Nazwa DB MySQL
#######################

// NIE Ruszać (IMG:style_emoticons/default/exclamation.gif)
mysql_connect($MySQL['serv'],$MySQL['user'],$MySQL['pass']) or die("Nie mozna polaczyc sie z Serverem SQL: ".mysql_error());
mysql_select_db($MySQL['db']) or die("Nie mozna połączyc sie z baza MySQL: ".mysql_error());

/*
=================================
===== End Database Settings =====
=================================
*/
?>

All 100$ by Me
Mam nadzieję że komuś sie to może przyda (IMG:style_emoticons/default/smile.gif)

Jeśli napisałem coś źle od razu pisać.

Pozdrawiam Korey

Ten post edytował korey 2.02.2010, 19:00:45
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
korey
post
Post #2





Grupa: Zarejestrowani
Postów: 122
Pomógł: 2
Dołączył: 14.08.2009
Skąd: Łódź

Ostrzeżenie: (0%)
-----


No więc jeśli wpisywany login znajduje się w DB od razu dostajemy komunikat który informuje ze podany nick jest już zajęty. jeśli wpiszemy jakiś inny nick który spełnia wszystkie "kryteria", Formularz poinformuje nas pisząc OK obok.

Do
Cytat
echo 'Przepraszamy rejestracja w tej chwili jest nie mozliwa. Prosze spróbowac pozniej
.';

możemy dopisać np: "problem z zapytaniem MySQL" i ewenrualnie dodać link raportujący błąd.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.02.2026 - 05:00