Cześć,
krótka piłka. Czym kodować(hashować) hasła? SHA1, MD5 czy połączenie tego?
$register->bindValue(":haslo", $crypted, PDO::PARAM_STR); $register->bindValue(":haslo2", $crypted, PDO::PARAM_STR);
$login = $db->prepare("SELECT `nick`, `haslo` FROM `gracze` WHERE `nick` = BINARY :nick && `haslo` = BINARY :haslo"); $login->bindValue(":nick", $_POST['nick'], PDO::PARAM_STR); $login->bindValue(":haslo", $crypted_login, PDO::PARAM_STR); $login->execute(); $idlogin = $db->prepare("SELECT `id` FROM `gracze` WHERE `nick` = BINARY :nick && `haslo` = BINARY :haslo"); $idlogin->bindValue(":nick", $_POST['nick'], PDO::PARAM_STR); $idlogin->bindValue(":haslo", $crypted_login, PDO::PARAM_STR); $idlogin->execute();
$login = $db->prepare("SELECT `nick`, `haslo` FROM `gracze` WHERE `nick` = BINARY :nick && `haslo` = BINARY :haslo"); $login->bindValue(":nick", $_POST['nick'], PDO::PARAM_STR); $login->bindValue(":haslo", $pass_crypt, PDO::PARAM_STR); $login->execute(); $idlogin = $db->prepare("SELECT `id` FROM `gracze` WHERE `nick` = BINARY :nick && `haslo` = BINARY :haslo"); $idlogin->bindValue(":nick", $_POST['nick'], PDO::PARAM_STR); $idlogin->bindValue(":haslo", $pass_crypt, PDO::PARAM_STR); $idlogin->execute();
string(5) "Kerth" string(34) "$1$5g..oE..$xKTUYQsNnm1RFq.SNdTvp0"
string(5) "Kerth" string(34) "$1$R73.GT/.$TcoBKLZYo3iJHm2Y0N4K61"
$msg = 'Nieprawidłowy login i/lub hasło.'; //check if request data exist if($nick && $passowrd) { $sql = $db->prepare('SELECT * FROM `gracze` WHERE `nick` = BINARY :nick'); $sql->bindValue(':nick', $nick, PDO::PARAM_STR); $login = $sql->execute(); //check if user exist if(false !== $data = $login->fetch()) { //compare hash from db with hash from request password { //do something after login } else { } } else { } } else { }
<?php function form_logowanie(){ <div class = "pogrub">Logowanie do konta: </div> <form action="login.php" method="post"> Wpisz Nick:<br/> <input type="text" name="nick" /><br/> Wpisz hasło:<br /> <input type="password" name="haslo" /><br/> <input type="submit" value="Wyślij" name = "wyslij"/> <br/> </form> </div> '); } include 'zmienne.php'; include ('inc/sql.php'); //część z danymi po zalogowaniu }else{ $login = $db->prepare("SELECT `nick`, `haslo` FROM `gracze` WHERE `nick` = BINARY :nick && `haslo` = BINARY :haslo"); $login->bindValue(":nick", $_POST['nick'], PDO::PARAM_STR); $login->bindValue(":haslo", $pass_crypt, PDO::PARAM_STR); $login->execute(); $idlogin = $db->prepare("SELECT `id` FROM `gracze` WHERE `nick` = BINARY :nick && `haslo` = BINARY :haslo"); $idlogin->bindValue(":nick", $_POST['nick'], PDO::PARAM_STR); $idlogin->bindValue(":haslo", $pass_crypt, PDO::PARAM_STR); $idlogin->execute(); //walidacja... if ($login->rowCount() == 1) { if ($idlogin->rowCount() == 1) { $_SESSION['zalogowany'] = true; $_SESSION['nick'] = $_POST['nick']; $_SESSION['haslo'] = $_POST['haslo']; } else { } echo ('<div class="blue">Zostałeś zalogowany. Za chwilę zostaniesz przeniesiony do swojego panelu.</div>'); } else { echo ('<div class="red">* Użytkownik '.$_POST['nick'].' nie istnieje lub wpisałeś błędne hasło!</div>'); } } else { form_logowanie(); ?>
NULL string(34) "$1$965.cX/.$U44X4w5ZHaZuMZshS0DVB." string(0) "" * Musisz wypełnić wszystkie pola! * Hasło nie może być krótsze niż 4 znaki! * Nick nie może być krótszy niż 4 znaki! * Użytkownik nie istnieje lub wpisałeś błędne hasło!
NULL string(34) "$1$bN0.Ik4.$M1bVE15aVpjbHzWIDLAzf0" string(0) "" * Musisz wypełnić wszystkie pola! * Hasło nie może być krótsze niż 4 znaki! * Nick nie może być krótszy niż 4 znaki! * Użytkownik nie istnieje lub wpisałeś błędne hasło!
<?php include 'zmienne.php'; include 'inc/sql.php'; { //część z danymi po zalogowaniu } else { if('POST' == $_SERVER['REQUEST_METHOD']) { $msg = 'Nieprawidłowy login i/lub hasło.'; //sprawdzanie czy przsłane dane są prawidłowe if(mb_strlen($nick) > 3 && mb_strlen($password) > 3) { $login = $db->prepare('SELECT * FROM `gracze` WHERE `nick` = BINARY :nick'); $login->bindValue(':nick', $nick, PDO::PARAM_STR); $login->execute(); //sprawdzanie czy użytkownik istnieje if(false !== $data = $login->fetch()) { //porównanie hash hasła z bazy danych, z hash'em hasła przesłanego przez użytkownika { //logowanie użytkownika $_SESSION['zalogowany'] = true; $_SESSION['nick'] = $nick; $_SESSION['haslo'] = $password; //przekierowanie na aktualny adres exit; } else { //komunikat błędu w przypadku różnicy hasła z bazy i przesłanego hasła } } else { //komunikat błedu dla niepoprawnego loginu } } else { //komunikat błedu kiedy login/hasło są pustę, lub mają mniej niż 3 znaki } } else { echo ' <div class = "pogrub">Logowanie do konta: </div> <form action="login.php" method="post"> Wpisz Nick:<br/> <input type="text" name="nick" /><br/> Wpisz hasło:<br /> <input type="password" name="haslo" /><br/> <input type="submit" value="Wyślij" name = "wyslij"/> <br/> </form> </div>'; } }
if(false !== $data = $login->fetch())
Fatal error: Call to a member function fetch() on a non-object in C:\WebServ\httpd\strona4\login.php on line 61
if(false !== $data = $login->fetch())
Fatal error: Call to a member function fetch() on a non-object in C:\WebServ\httpd\strona4\login.php on line 61