Jump to content
smix

Logowanie & rejestracja

Recommended Posts

smix

Witam.

Ten poradnik dotyczy jak zrobić rejestrację, logowanie itd. :D

Zaczynajmy.

Na początek musimy wykonać zapytanie do bazy danych :

Robimy to następująco :

Logujemy się do cPanel a następnie wchodzimy w zakładkę PHPMyAdmin, następnie wybieramy naszą bazę i z górnego menu dajemy SQL.

CREATE TABLE IF NOT EXISTS `sklep_users` ( 
 `user` int(11) NOT NULL AUTO_INCREMENT, 
 `nick` text NOT NULL, 
 `pass` varchar(50) NOT NULL, 
  PRIMARY KEY (`user`) 
) ENGINE=InnoDB  DEFAULT CHARSET=latin2 AUTO_INCREMENT=6;

Kolejnym krokiem będzie wykonanie pliku Rejestracja. A więc tak tworzymy nowy plik o nazwa rejestracja.php

I wklejamy następujący kod :

<?php 
ob_start(); 
require('config.php'); 
session_start(); 
$User = fgracz($_SESSION['user']); 


if(!empty($_POST)){ 
   $error = array(); 
   $errors = 0; 
    

   if(empty($_POST['nick'])){ 
       $error[2] = "Przykro nam ale nie podano nicku"; 
       $errors++; 
   } else { 
       $_POST['nick'] = tekst($_POST['nick']); 
       if(strlen($_POST['nick']) < 6 || strlen($_POST['nick']) > 40){ 
           $error[2] = "Przykro nam ale pole nick nie spełnia wymagań. Musi mieć od 6 do 40 znaków."; 
           $errors++; 
       } 
   } 

   if(empty($_POST['haslo'])){ 
       $error[3] = "Przykro nam ale nie podano Hasła"; 
       $errors++; 
   } else { 
       $_POST['haslo'] = tekst($_POST['haslo']); 
       if(strlen($_POST['haslo']) < 5 || strlen($_POST['haslo']) > 15){ 
           $error[3] = "Przykro nam ale pole nick nie spełnia wymagań. Musi mieć od 5 do 15 znaków."; 
           $errors++; 
       } 
   } 

   if(empty($_POST['haslop'])){ 
       $error[4] = "Przykro nam ale nie podano Hasła"; 
       $errors++; 
   } else { 
       $_POST['haslop'] = tekst($_POST['haslop']); 
       if(strlen($_POST['haslop']) < 5 || strlen($_POST['haslop']) > 15){ 
           $error[4] = "Przykro nam ale pole nick nie spełnia wymagań. Musi mieć od 5 do 15 znaków."; 
           $errors++; 
       } 
   } 

   if(!empty($_POST['haslo']) && !empty($_POST['haslop']) && ($_POST['haslop'] != $_POST['haslo'])){ 
       $error[4] = "Przykro nam ale podane przez Ciebie hasła nie pasują do siebie."; 
       $errors++; 
   } 

   if($errors == 0){ 
       $jest = mysql_num_rows(mysql_query("select * from sklep_users where md5(nick) ='".md5($_POST['nick'])."' limit 1")); 
       if($jest > 0){ 
           $error[2] = "Przykro nam ale użytkownik o takim nicku już istnieje. Prosimy wpisać inny."; 
           $errors++; 
       } else { 
           mysql_query("insert into sklep_users(nick, pass) value ('".$_POST['nick']."','".md5($_POST['haslo'])."')"); 
           $error[6] = "Gratulacje zostałeś zarejstrowany!! Teraz mozesz sie zalogować."; 
       } 
   } 


} 
?> 
<div id="content"> 
<table class="tborder" border="0" cellpadding="4" cellspacing="0"> 
<thead> 
<tr> 
<td class="thead" colspan="5"> 

<div><strong>Rejestracja</strong><br><div class="smalltext">Załóż darmowe konto w naszym systemie</div></div> 
</td> 
</tr> 
</thead> 
<tbody style="" id="cat_1_e"> 
   <tr> 
       <td class="tcat"> 
           <span class="smalltext"><strong>Wypełnij wszystkie pola poprawnie</strong></span> 
       </td> 
        
        
   </tr> 
   <tr> 
        
       <td class="trow1" valign="top"> 
           <form action='rejestracja.php' method='post'> 
           <table> 
           <?php 
           if(isset($error[6])){ 
               echo "<tr><td align='center' colspan='2' style='color:#009900'>".$error[6]."</td></tr>"; 
           } 
            
            
            
           if(isset($error[2])){ 
               echo "<tr><td align='center' colspan='2' style='color:#CC0000'>".$error[2]."</td></tr>"; 
           } 
           ?> 
           <tr> 
               <td>Nick *:</td> 
               <td><input type='text' name='nick' /></td> 
           </tr> 
           <?php 
           if(isset($error[3])){ 
               echo "<tr><td align='center' colspan='2' style='color:#CC0000'>".$error[3]."</td></tr>"; 
           } 
           ?> 
           <tr> 
               <td>Hasło **:</td> 
               <td><input type='password' name='haslo' /></td> 
           </tr> 
           <?php 
           if(isset($error[4])){ 
               echo "<tr><td align='center' colspan='2' style='color:#CC0000'>".$error[4]."</td></tr>"; 
           } 
           ?> 
           <tr> 
               <td>Powtórz Hasło:</td> 
               <td><input type='password' name='haslop' /></td> 
           </tr> 
           <tr> 
               <td></td> 
               <td align='center'><input type='submit' value='zarejestruj'/></td> 
           </tr> 
           </table> 
           </form> 
           <div class="smalltext"> 
               * Pole <i><b>Nick</b></i> może posiadać od 6 do 40 znaków<br/> 
               ** Pole <i><b>Hasło</b></i> może posiadać od 6 do 15 znaków<br/> 
           </div> 
       </td> 
    
   </tr> 
</tbody> 
</table> 
</div> 

<?php 
ob_end_flush(); 

?>

Przy rejestracji jest wymagane podanie Nicku i Hasła. Jak dodać inne pola pokaże wam w kolejnym poradniku.


Kolejnym krokiem będzie utworzenie pliku o nazwie logowanie.php

<?php 
ob_start(); 
require('config.php'); 
session_start(); 
$User = fgracz($_SESSION['user']); 


if(!empty($_POST['pass']) && !empty($_POST['nick'])){ 
    

       $jest = mysql_fetch_array(mysql_query("select * from sklep_users where md5(nick) ='".md5($_POST['nick'])."' and pass ='".md5($_POST['pass'])."' limit 1")); 
       if(empty($jest)){ 
           $error[1] = "taki użytkownik nie istnieje"; 
       } else { 
           $_SESSION['user'] = $jest['user']; 
           header('location: index.php'); /*Zamias index.php podajemy stronę gdzie ma nas przekierować po zalogowaniu.*/ 
       } 


} 

?> 
<div id="content"> 
<table class="tborder" border="0" cellpadding="4" cellspacing="0"> 
<thead> 
<tr> 
<td class="thead" colspan="5"> 

<div><strong>Logowanie</strong><br><div class="smalltext">Zaloguj się</div></div> 
</td> 
</tr> 
</thead> 
<tbody style="" id="cat_1_e"> 
   <tr> 
       <td class="tcat"> 
           <span class="smalltext"><strong>Wypełnij wszystkie pola poprawnie</strong></span> 
       </td> 
        
        
   </tr> 
   <tr> 
        
       <td class="trow1" valign="top"> 
           <form action='logowanie.php' method='post'> 
           <table> 
           <?php 
            
            
           if(isset($error[1])){ 
               echo "<tr><td align='center' colspan='2' style='color:#CC0000'>".$error[1]."</td></tr>"; 
           } 
           ?> 
           <tr> 
               <td>Nick:</td> 
               <td><input type='text' name='nick' /></td> 
           </tr> 
            
           <tr> 
               <td>Hasło:</td> 
               <td><input type='password' name='pass' /></td> 
           </tr> 
            
           <tr> 
               <td></td> 
               <td align='center'><input type='submit' value='zaloguj'/></td> 
           </tr> 
           </table> 
           </form> 
            
       </td> 
    
   </tr> 
    
    

</tbody> 
</table> 
</div> 
<?php 
ob_end_flush(); 
?>

Ok możemy się zalogować to teraz trzeba jakoś się wylogować :D W tym celu musimy stworzyć plik wyloguj.php

<?php 
ob_start(); 
session_start(); 

$_SESSION = array(); 
$_SESSION = ""; 
session_destroy(); 

header('location: index.php');/*Zamiast index.php podajemy stronę gdzie ma nas przenieś po wylogowaniu.*/ 
ob_end_flush(); 
?>

No i to już prawie koniec teraz tylko tworzymy plik config.php odpowiadający za połączenie z bazą danych :

<?php 
$host_bazy_danych = 'localhost'; 
$uzytkownik_bazy_danych = 'uzytkownik'; 
$haslo_bazy_danych = 'haslo'; 
$nazwa_bazy_danych = 'nazwabazy'; 

$polacz = mysql_connect($host_bazy_danych, $uzytkownik_bazy_danych, $haslo_bazy_danych) or die('socket error'); 
mysql_select_db($nazwa_bazy_danych,$polacz) or die('socket error - no db'); 
mysql_query("SET NAMES 'utf8'"); 
function tekst($tekst){      
   if(!empty($tekst)){ 
       $szukaj = array('@<script[^>]*?>.*?</script>@si', '@<[\/\!]*?[^<>]*?>@si' ); 
       $tekst = preg_replace($szukaj, '', $tekst); 
   } 
   return $tekst = trim(mysql_real_escape_string(nl2br($tekst))); 
} 

function fgracz($sesja){ 
   if(!empty($sesja)  && is_numeric($sesja)){ 
       $gracz = mysql_fetch_array(mysql_query("select * from sklep_users where user = ".$sesja)); 
   } else { 
       $gracz['nick'] = ""; 
   } 

   return $gracz ; 
} 
?>

Oczywiście musimy zmienić dane do bazy danych w pliku config w tym momencie :

$host_bazy_danych = 'localhost'; 
$uzytkownik_bazy_danych = 'uzytkownik'; 
$haslo_bazy_danych = 'haslo'; 
$nazwa_bazy_danych = 'nazwabazy';

No i to wszystko. Jeżeli chcesz aby dana strona była dostępna po zalogowaniu na początku danej strony musisz wkleić ten kod :

<?php 
if(empty($User['nick'])) header('location: wyloguj.php'); 
?>

Jeżeli robimy osobne pod strony nie zapomnij na początku podać połączenie z bazą danych :

<?php 
ob_start(); 
require('config.php'); 
session_start(); 
$User = fgracz($_SESSION['user']); 
?>

 

  • Like 1

Share this post


Link to post
Share on other sites
Slayer66

Mi nie dziala rejestrowanie

Nic nie wysyła nic do bazy danych

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

U mnie wszystko jest ok.

Wejdź do bazy i jak masz :

sklep_users
Z menu u góry wybierasz :
Przeglądaj

I tam masz userów :D

Share this post


Link to post
Share on other sites
Daniel

Wyłacz hide, bo nie będę oceniał za piwko. Masa w sieci tego jest i Michael ma lepsze. ;)

Share this post


Link to post
Share on other sites
Tamo

zdejmij hide. Bo łamiesz regulamin.

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

Hide zdjęte :)

Share this post


Link to post
Share on other sites
Slayer66

Mam menu Strona Glowna, Forum, Oferta, Zaloguj sie, Zarejestruj sie

i chce zeby po zalogowaniu bylo takie cos Strona glowna, forum, Oferta, Wyloguj sie,

jak to zrobic ?

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

Slayer66, Zrób tak tylko pozmieniaj sobie linki itd. :

<?php
if(empty($User['nick']))
echo "

";
else
echo "

";
?>[/php]

Share this post


Link to post
Share on other sites
Slayer66

smix,

Dzieks :D

A dorobisz edycje profilu i przypomnienie hasla ? :D

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

Slayer66, nie mam za bardzo czasu ale gdzieś mam te pliki może bo było wszystko ale porozrzucane a miałem format i nie wiem gdzie mam resztę :( Jak znajdę to na pewno podeślę.

PS. Daj jakieś demko tego co robisz używając tej rejestracji ;)

Share this post


Link to post
Share on other sites
Daniel
smix,

Dzieks

A dorobisz edycje profilu i przypomnienie hasla ?

php.net - nikt tutaj gotowców nie daje.

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

Alastor, mam tylko zmianę hasło to mogę podesłać mu jak znajdę ;) bo mi już to nie jest potrzebne więc może komuś się przyda.

Share this post


Link to post
Share on other sites
Slayer66

smix, No ja próbuje sklepik :D

Tylko ta rejestracja cos nie ten tego :D

Chyba czas zabrać sie samemu za to :D

Mam male 2 problemy

Po 1 primo to co dales troszke nie dziala

Po 2 primo Czemu mi sie nie chce zarejestrować


mysql_query("insert into sklep_users(nick, pass, e-mail) value ('".$_POST['nick']."', '".md5($_POST['haslo'])."', '".md5($_POST['e-mail'])""")"); 

Tu dorobilem opcje e-mail ale nie wysyla niczego do bazy czemu ?

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

Po 1 Połączenie z bazą jest ?? Po 2 Czy dałeś ten kod co ja wstawiłem

?? Dokładnie ten :

<?php 

ob_start(); 

require('config.php'); 

session_start(); 

$User = fgracz($_SESSION['user']); 

?>

Share this post


Link to post
Share on other sites
Slayer66

tak jest tylko mowie ze jak usune opcje e-mail to dziala a jak dodalem to nie dziala

wtf cos zle napisalem ja noobek z laczeniem sql i php :D

Share this post


Link to post
Share on other sites
smix
Posted Original Poster

A dodałeś do bazy danych pole email ?? :D

Zrób takie zapytanie :

CREATE TABLE IF NOT EXISTS `sklep_users` ( 

  `user` int(11) NOT NULL AUTO_INCREMENT, 

  `nick` text NOT NULL, 

  `email` text NOT NULL, 

  `pass` varchar(50) NOT NULL, 

   PRIMARY KEY (`user`) 

) ENGINE=InnoDB  DEFAULT CHARSET=latin2 AUTO_INCREMENT=6 ;

Share this post


Link to post
Share on other sites
Slayer66

tak dodawalem

Share this post


Link to post
Share on other sites
Guest
This topic is now closed to further replies.
×
×
  • Create New...