Odpowiedz 
 
Ocena wątku:
  • 2 Głosów - 3 Średnio
  • 1
  • 2
  • 3
  • 4
  • 5
[Tutorial PHP + MYSQL] Logowanie + Rejestracja
Autor Wiadomość
maniek.a Offline
Użytkownik

Ilość postów: 1
Dołączył: 18-07-2009
Reputacja: 0
Post: #1
[Tutorial PHP + MYSQL] Logowanie + Rejestracja
maniek.a napisał(a):Witam! Postanowiłem napisać tutorial na logowanie z rejestracją które możemy użyć na swojej stronie. Tutorial ten jest raczej dla średnich "programistów" php.
Najpierw rejestracja
Na początku pliku startujemy z sesją i includem pliku conf
Kod:
<?
ob_start();
session_start();
//inkludujemy plik z hasłami

include("conf.php");

//Laczenie z baza
mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Nie można się połączyć z bazą: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());
?>
Teraz możemy wyświetlić nagłówki HTML'owskie

Kod:
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  <title>Rejestracja</title>
Teraz za pomocą javy sprawimy że guzik nie będzie działał gdy nie został zaakceptowany regulamin
Kod:
    <script type="text/javascript">
                <!-- //
                        function regulamin()
                        {
                        if(document.getElementById('reg').checked == true )
                        {
                                document.getElementById('dalej').disabled=false;
                        }
                        else
                        {
                                document.getElementById('dalej').disabled=true;
                        }
                        }
                //  -->
    </script>

</head>
Teraz właściwa część skryptu
Kod:
<form method="post" action="<? echo $PHP_SELF;?>" METHOD=POST enctype="multipart/form-data">
<center>
    <center><b>Login:<b><br />
    <input type="text" name="login" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br />
        <b>Email:<b><br />
    <input type="text" name="email" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br />
        <b>Hasło:</b><br />
    <input type="password" name="haslo" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br />
    <b>O¶wiadczam iż zaakceptowałem regulamin</b>
        <input type="checkbox" id="reg" onclick="regulamin()" /><br />
        <input type="submit" name="submit" value="Rejestracja" id="dalej" disabled="disabled" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /></center>


</form>
<?
//Jak wiadomo dobrze użyć funkcji trim aby usunąć zbędne znaki
$login = trim($_POST['login']);
$email = trim($_POST['email']);    
$pass_md5 = md5($_POST['haslo']);
$pass = $_POST['haslo'];
if($_POST['submit']) {
$checkuser = mysql_query("SELECT login FROM users WHERE login='$login'");
$username_exist = mysql_num_rows($checkuser);

//Jezeli zarejestrowanych takich nazw jest wiecej niz 0
if($username_exist > 0){
    echo '
      <h2><center><b>Ta nazwa jest już zajęta wybierz inn±</b></center></h2>
';
    unset($login);
    exit();
}

//Wysylamy zapytanie z logowaniem
$zapytanie = "INSERT INTO `users` (`id`, `login`, `email`, `haslo`) VALUES (NULL, '$login', '$email', '$pass_md5')";
$idzapytania = mysql_query($zapytanie);

if(!$idzapytania)
{
    echo 'blad!' .  mysql_error();
}
else
{
    echo '
      <h2><center><b>Poprawnie się zarejestrowałe¶, <a href="logowanie.php">możesz się zalogować</a></b></center></h2>
';
}}
?>

Cały ten plik zapisujemy jako np. rejestracja.php

Teraz logowanie
Zaczynamy podobnie:
Kod:
<?
ob_start();
session_start();
//inkludujemy plik z hasłami

include("conf.php");

//Laczenie z baza
mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Nie można się połączyć z bazą: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());
?>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  <title>Logowanie</title>
</head>
Teraz właściwa część skryptu
Kod:
<form method="post" action="<? echo $PHP_SELF;?>" METHOD=POST enctype="multipart/form-data">
<center>
        <b>Login:<b><br />
    <input type="text" name="login" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br />
        <b>Hasło:</b><br />
    <input type="password" name="haslo" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br />
        <input type="submit" value="Zaloguj" style="font-size: 10pt; font-family: Tahoma; font-weight: bold" /><br /><br>

            <b><a href="rejestracja.php">Zarejestrej Się</a><br></b></center>
</form>
<?
// 1 linijka sprawdza czy jest login i haslo (jesli tego by nie bylo wyskakiwalo by nie ma takiego loginu)
if (isset($_POST['login']) && isset($_POST['haslo'])){
$login = trim($_POST['login']); // z loginu usuwamy spacje
$haslo = md5($_POST['haslo']); //hasło kodujemy w MD5
$loguj = mysql_query ("select login,haslo from users where login='$login' and haslo='$haslo'");//pobranie z bazy loginu i hasła wpisanego w formularzu
if(mysql_num_rows($loguj)==0)// sprawdzenie czy dany użytkownik istnieje w bazie
{
echo'<center> Podany login i haslo jest błędne</center>'; // jeżeli nie istnieje taki użytkownik to wyświetla błąd
exit;
}
else
{
$_SESSION['zalogowany'] = $_POST['login']; // jeżeli istnieje taki użytkownik w bazie
Header('location: index.php');//To juz jest w innym pliku
exit;
}}
?>

No tak ale strona też musi współgrać z zalogowanym więc schemat jak zrobić stronę współgrającą z tym systemem:

Początek cały czas taki sam:
Kod:
<?
session_start();
//inkludujemy plik z hasłami

include("conf.php");
  include("ustawienia_conf.php");

//Laczenie z baza
mysql_connect ( $dbhost, $dbuser, $dbpass)or die("Nie można się połączyć z bazą: ".mysql_error());
mysql_select_db($dbname) or die(mysql_error());
?>
<html>
<head>
  <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-2" />
  <title>Strona po zalogowaniu</title>
</head>

Patrzymy czy jesteśmy zalogowani
Kod:
    <?if(isset($_SESSION['zalogowany']))
    {    
    echo'Witaj!: '. $_SESSION['zalogowany'];  
    echo'<br> <a href=wylogowanie.php>Wyloguj się</a>'
    ?>

Tutaj dajemy duperelki które mają być na stronie


i teraz koniec
Kod:
}
else
{
Header('location: logowanie.php'); // jeżeli ktoś wchodzi na ta strone bez logowania to przenosi go do formularza logowania.
exit;
}


?>

Teraz plik wylogowania

Kod:
<?
session_start(); //odpalenie sesji
$_SESSION=array();
session_destroy();// Usunięcie sesji
Header('location: logowanie.php'); //Przekierowanie do logowania
exit;
?>


Plik conf.php

Kod:
<?
$dbhost = "host";
$dbname = "nazwa";
$dbuser = "user";
$dbpass = "haslo";
?>


Do tego SQL

Kod:
CREATE TABLE `users` (
`id` INT NOT NULL AUTO_INCREMENT PRIMARY KEY ,
`email` TEXT NOT NULL ,
`login` TEXT NOT NULL ,
`haslo` TEXT NOT NULL
);

Tutek trochę zagmatwany ale mądrzy go zrozumieją. Niedługo pokaże jak do tego dorobić moduły.


Możliwe że zakradły się jakieś błędy, ale proszę o wyrozumiałość bo to mój pierwszy tutek. Nie biorę odpowiedzialności jeśli ten skrypt coś popsuje - co i tak jest mało prawdopodobne. Życzę powodzenia w programowaniu Smile Proszę o komentarzę.
18-07-2009 17:28
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
bartekk Offline
Użytkownik

Ilość postów: 285
Dołączył: 22-04-2009
Reputacja: 3
Post: #2
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
Brawo, pierwszy post i tutek odrazu Smile
Bardzo miło nam, a tutek napewno się przyda na dniach go przetestuję.
18-07-2009 18:04
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
codesign Offline
Użytkownik

Ilość postów: 40
Dołączył: 22-04-2009
Reputacja: 0
Post: #3
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
Duży + za napisanie, niestety tutorialów logowania i rejestracji jest w necie dużo i bez trudu można je znaleźć.
19-07-2009 17:45
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
bartekk Offline
Użytkownik

Ilość postów: 285
Dołączył: 22-04-2009
Reputacja: 3
Post: #4
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
(19-07-2009 17:45)codesign napisał(a):  Duży + za napisanie, niestety tutorialów logowania i rejestracji jest w necie dużo i bez trudu można je znaleźć.

Tak, ale spójrzmy też na bezpieczeństwo tych skryptów.
19-07-2009 18:23
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
ert Offline
Użytkownik

Ilość postów: 12
Dołączył: 25-07-2009
Reputacja: 0
Post: #5
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
(19-07-2009 18:23)bartekk napisał(a):  
(19-07-2009 17:45)codesign napisał(a):  Duży + za napisanie, niestety tutorialów logowania i rejestracji jest w necie dużo i bez trudu można je znaleźć.

Tak, ale spójrzmy też na bezpieczeństwo tych skryptów.

I tego też, samo trim w tym wypadku nic nie daje. Wiem, że to przykład ale potem są takie problemy, że komuś przejęto konto czy coś - jest przecież o hasłach tu temat ;]
email, login, haslo - wystarczy varchar
Tak to spoko. Jo
25-07-2009 23:35
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
Sephiruss Offline
Użytkownik

Ilość postów: 10
Dołączył: 25-08-2009
Reputacja: 0
Post: #6
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
O przyda się napewnoe, ja mam tylko takie pytanie:
Czy ten kod:
}
else
{
Header('location: logowanie.php'); // jeżeli ktoś wchodzi na ta strone bez logowania to przenosi go do formularza logowania.
exit;
}


?>

musi być na każdej stronie która ma być zabezpieczona, czy ogólnie działa na całej stronie?
i czy nie powinien być otwarty znacznikiem <php ??
25-08-2009 16:38
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
Grądziu Offline
Użytkownik

Ilość postów: 35
Dołączył: 24-08-2009
Reputacja: 0
Post: #7
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
Noo nieźle Big Grin Jak będę miał czas, to spróbuję przetestować. Wink

[img]http://gradziu.eu/baner.png[/img]
25-08-2009 16:42
Odwiedź stronę użytkownika Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
Tripix Offline
Użytkownik

Ilość postów: 6
Dołączył: 28-05-2010
Reputacja: 0
Post: #8
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
To ja to trochę poprawię :
Panel Logowanie po prawej Tongue....xD , Dodałem " Zaloguj " .
Kod:
<? if(isset($_SESSION['zalogowany']))
                              echo'Witaj!: '. $_SESSION['zalogowany'];  
                              echo' <br> Życzymy miłego dnia';
                              echo' <br> <a href=wlogowanie.php>Wyloguj Mnię!</a>';
                              echo' <br> <a href=logowanie.php>Zaloguj Mnię!</a>'
                              
                                    ?>
A zmiast tego :
Kod:
}
else
{
Header('location: logowanie.php'); // jeżeli ktoś wchodzi na ta strone bez logowania to przenosi go do formularza logowania.
exit;
}


?>
Napisałem coś takiego :
Kod:
<?php
// jezeli uzytkownik jest zalogowany wyswietlamy inforamcje
if($_SESSION['zalogowany']) {
echo 'Zawartość pokazywana po zalogowaniu , można użyć include oraz kolejne linijki echo.';
}

else {
echo 'ZALOGUJ SIĘ!';
}
?>

Może ktoś wymysli coś mądrzejszego ^^
a ten kod na zabespieczenia w ogóle nie działa ^^....... Błąd wyskakuje coś ze fraca coś tam , to wrzuciłem coś od siebie ^^.

Zamiast
Kod:
echo 'ZALOGUJ SIĘ!';

Można użyć twoje
Kod:
Header('location: logowanie.php');
(Ten post był ostatnio modyfikowany: 28-05-2010 09:20 przez Tripix.)
28-05-2010 09:17
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
WisJa Offline
Użytkownik

Ilość postów: 36
Dołączył: 27-02-2010
Reputacja: 1
Post: #9
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
Trzymanie w tablicy $_SESSION takich danych jak nick usera czy status zalogowania na pewno nie jest dobrym sposobem... Jak będę miał chwilę to napiszę tutka jak zrobić logowanie z PRAWDZIWEGO zdarzenia Wink

[url=http://miniphp.wisja.pl]Darmowy kurs PHP od podstaw[/url]
[url=http://wisja.pl]Portfolio[/url]
Moje gg: 2654683
28-05-2010 14:32
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
Tripix Offline
Użytkownik

Ilość postów: 6
Dołączył: 28-05-2010
Reputacja: 0
Post: #10
RE: [Tutorial PHP + MYSQL] Logowanie + Rejestracja
Czekamy Smile
28-05-2010 19:21
Znajdź wszystkie posty użytkownika Zacytuj ten post w odpowiedzi
Odpowiedz 


Skocz do: