Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Rejestracja PHP/MySQL + Walidacja, GOTOWY SKRYPT
korey
post 2.02.2010, 15:03:04
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:


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ć 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 smile.gif

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

Pozdrawiam Korey

Ten post edytował korey 2.02.2010, 19:00:45


--------------------
”Jestem nędzarzem, mam tylko marzenia.
Rozsyłam je u twych stóp,
Stąpaj lekko, gdyż stąpasz po mych marzeniach„
Go to the top of the page
+Quote Post

Posty w temacie


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

 



RSS Wersja Lo-Fi Aktualny czas: 27.07.2025 - 09:39