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 wystarczy najprostszy ale możesz tą samą metodą co rejestracje:

Napisałem Ci moją propozycje:
Myślę ze nie jest najgorsza (IMG:style_emoticons/default/winksmiley.jpg)
  1. <?php
  2. if(isset($_POST['wyslij_login_box'])){
  3.  
  4. //Obrabiamy wszystkie zmienne przekazane metodą POST
  5. foreach ($_POST AS $klucz => $wartosc)
  6. {
  7. $wartosc= trim($wartosc);//usuwamy białe znaki
  8. $wartosc= stripslashes($wartosc);
  9. $wartosc=htmlspecialchars($wartosc, ENT_QUOTES);
  10. $_POST[$klucz]=$wartosc;
  11. }
  12.  
  13. // któkie nazwy zmiennych.
  14. $log = $_POST['login'];
  15. $pass = $_POST['haslo'];
  16.  
  17. $blad_txt='';
  18. $blad=false;
  19.  
  20. //sprawdzamy czy pola są wypełnione
  21. if(empty($log)){
  22. $info_txt_error.='Podaj Login. ';
  23. $blad=true;
  24. }
  25. else if(empty($pass)){
  26. $info_txt_error.='Podaj Hasło.';
  27. $blad=true;
  28. }
  29. else{
  30. }
  31. if(!$blad)
  32. {
  33. //poprawne dane - robmy z nimi co trzeba (zapisujemy do bazy danych itp.)
  34. $pokaz_form=true;
  35.  
  36.  
  37. // Odpowiedz
  38. $zapytanie = "SELECT count(*) FROM `TWOJA_TABELA` WHERE `login` = '$log' AND `haslo` = sha1('$pass') ";
  39. $wynik = mysql_query($zapytanie);
  40. if(!$wynik) // Jeśli nie wykonano zapytanie
  41. {
  42. echo 'Nie można wykonać zapytania.';
  43. }
  44. $wiersz = mysql_fetch_row($wynik);
  45. $odpowiedz = $wiersz[0];
  46.  
  47. if ( $odpowiedz > 0 )
  48. {
  49. // Jesli zapytanie Zwraca > 0 nadajemy sesje i ich krotki $zmienne
  50. $_SESSION['login'] = $log;
  51. $_SESSION['haslo'] = $pass;
  52. ?>
  53. <!-- TUTAJ INFORMACJA O ZALOGOWANIU I CZASOWE PRZENIESIENIE DO STRONY GŁÓWNEJ -->
  54. <script>setTimeout('document.location = \"index.php\"', 1500);</script>
  55. Witaj <?php echo $log; ?> Zostałeś pomyślnie zalogowany.
  56. Za chwilę zostaniesz przeniesiony do strony głównej.
  57. <br />
  58.  
  59. <?php
  60. }
  61. else{ /* JEŚLI ODPOWIEDZ NA ZAPYTANIE NIE BEDZIE > 0 WYSWIETLAMY fORMULARZ LOGOWANIA */
  62. $pokaz_form=false;
  63. $info_txt_error.='<b>Podany login lub hasło jest błędne</b> (sprawdź czy nie jest wciśnięty klawisz CapsLock).';
  64. }
  65. }
  66. else{ /* JESLI FORMULARZ ZGLASZA BŁĄD WYSWIELTAMY GO NA NOWO */
  67. $pokaz_form=false;
  68. }
  69. }
  70. else{
  71. //wypelniamy zmienne pustymi danymi jesli formularz nie został jeszcze wysłany
  72. $log='';
  73. $pass='';
  74. }
  75. //wyswietlamy formularz
  76. if($pokaz_form!=true){
  77. ?>
  78. <style type="text/css">
  79. .alert{
  80. -moz-border-radius: 5px;
  81. -webkit-border-radius: 5px
  82. border-radius: 5px;
  83. border: dashed 1px #C5C5BF;
  84. padding: 3px;
  85. font: 9px Arial;
  86. display: inline;
  87. background: #D6373A;
  88. color: #FFFFFF;
  89. height: 27px;
  90. width: 380px;
  91. }
  92. </style>
  93. <form action="<?php $_SERVER['PHP_SELF']; ?>" method="POST">
  94. Login: <input type="text" name="login" value="<?php echo $log; ?>" /><br />
  95. Hasło: <input type="password" name="haslo" />
  96. <input type="submit" name="wyslij_login_box" value="zaloguj się" />
  97. <?php
  98. if($info_txt_error!=""){
  99. echo '<div class="alert"> ' .$info_txt_error.' </div>';
  100. }else{
  101. // jeśli nie ma reeor kumunikat jest nie widoczny
  102. }
  103. ?>
  104. </form>
  105. <?php
  106. }
  107. else{
  108. return false;
  109. }
  110. /*
  111.  ========================
  112. Wygląd i style formularza zależa tylko od ciebie i twoich styli css
  113. aby utrzymać sesje poprostu dodaj w kodzie layauta takie coś:
  114.  
  115. <?php
  116. session_start();
  117. $log = $_SESSION['login'];
  118. $pass = $_SESSION['haslo'];
  119. $typ = $_SESSION['ranga'];
  120. ?>
  121.  
  122. Możesz też zrobic sobie osobny plik i includować.
  123.  
  124.  
  125.  ========================
  126.  */
  127. ?>
  128.  

Mam nadzieje ze pomogłem
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: 6.10.2025 - 14:38