Stworzyłem stronę na podstawie kursu pana Mirosława i logowanie działało do puki nie doszło do momentu zmiany w logowaniu. Teraz nie można zalogować się ani w sposób wklejając zakodowane hasło, ani normalnie.
Podaje skrypty stron:
Logowanie
<?php
session_start();
if ((!isset($_POST['login'])) || (!isset($_POST['password'])))
{
header('Location: index.php');
exit();
}
require_once "dbinfo.php";
$connect = @new mysqli($host, $db_user, $db_password, $db_name);
if ($connect->connect_errno!=0)
{
echo "Error".$connect->connect_errno;
}
else
{
$login= $_POST ['login'];
$password= $_POST ['password'];
$login = htmlentities($login, ENT_QUOTES, "UTF-8");
if ($rezultat = @$connect -> query (sprintf("SELECT * FROM users WHERE user='%s'",
mysqli_real_escape_string($connect, $login))))
{
$ilu_userow = $rezultat->num_rows;
if($ilu_userow >0)
{
$wiersz = $rezultat->fetch_assoc();
if(password_verify($password, $wiersz['pass']))
{
$_SESSION['zalogowany']=true;
$_SESSION['id']=$wiersz['id'];
$_SESSION['user'] = $wiersz['user'];
$_SESSION['money'] = $wiersz['money'];
$_SESSION['rank'] = $wiersz['rank'];
$_SESSION['email'] = $wiersz['email'];
unset($_SESSION['blad']);
$rezultat -> free_result();
header ('Location: index.php');
}
else
{
echo $_SESSION['blad'] = '<div id="blad">Nieprawidłowy login lub hasło!</div>';
header('Location: loginpage.php');
}
}
else
{
echo $_SESSION['blad'] = '<div id="blad">Nieprawidłowy login lub hasło!</div>';
header('Location: loginpage.php');
}
}
$connect->close();
}
?>
Rejestrowanie
<?php
session_start();
if (isset($_POST['email']))
{
//Udana walidacja? Załóżmy, że tak!
$wszystko_OK=true;
//Sprawdź poprawność nickname'a
$nick = $_POST['nick'];
//Sprawdzenie długości nicka
if ((strlen($nick)<3) || (strlen($nick)>25))
{
$wszystko_OK=false;
$_SESSION['e_nick']="Nick musi posiadać od 3 do 25 znaków!";
}
if (ctype_alnum($nick)==false)
{
$wszystko_OK=false;
$_SESSION['e_nick']="Nick może składać się tylko z liter i cyfr (bez polskich znaków)";
}
// Sprawdź poprawność adresu email
$email = $_POST['email'];
$emailB = filter_var($email, FILTER_SANITIZE_EMAIL);
if ((filter_var($emailB, FILTER_VALIDATE_EMAIL)==false) || ($emailB!=$email))
{
$wszystko_OK=false;
$_SESSION['e_email']="Podaj poprawny adres e-mail!";
}
//Sprawdź poprawność hasła
$haslo1 = $_POST['haslo1'];
$haslo2 = $_POST['haslo2'];
if ((strlen($haslo1)<6) || (strlen($haslo1)>25))
{
$wszystko_OK=false;
$_SESSION['e_haslo']="Hasło musi posiadać od 6 do 25 znaków!";
}
if ($haslo1!=$haslo2)
{
$wszystko_OK=false;
$_SESSION['e_haslo']="Podane hasła nie są identyczne!";
}
$haslo_hash = password_hash($haslo1, PASSWORD_DEFAULT);
//Czy zaakceptowano regulamin?
if (!isset($_POST['regulamin']))
{
$wszystko_OK=false;
$_SESSION['e_regulamin']="Potwierdź akceptację regulaminu!";
}
//Bot or not? Oto jest pytanie!
$sekret = "6LdhyigTAAAAAAMMxoYt29A6CbYzoSVHiVxvQlDm";
$sprawdz = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$sekret.'&response='.$_POST['g-recaptcha-response']);
$odpowiedz = json_decode($sprawdz);
if ($odpowiedz->success==false)
{
$wszystko_OK=false;
$_SESSION['e_bot']="Potwierdź, że nie jesteś botem!";
}
//Zapamiętaj wprowadzone dane
$_SESSION['fr_nick'] = $nick;
$_SESSION['fr_email'] = $email;
$_SESSION['fr_haslo1'] = $haslo1;
$_SESSION['fr_haslo2'] = $haslo2;
if (isset($_POST['regulamin'])) $_SESSION['fr_regulamin'] = true;
require_once "dbinfo.php";
mysqli_report(MYSQLI_REPORT_STRICT);
try
{
$polaczenie = new mysqli($host, $db_user, $db_password, $db_name);
if ($polaczenie->connect_errno!=0)
{
throw new Exception(mysqli_connect_errno());
}
else
{
//Czy email już istnieje?
$rezultat = $polaczenie->query("SELECT id_user FROM users WHERE email='$email'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_maili = $rezultat->num_rows;
if($ile_takich_maili>0)
{
$wszystko_OK=false;
$_SESSION['e_email']="Istnieje już konto przypisane do tego adresu e-mail!";
}
//Czy nick jest już zarezerwowany?
$rezultat = $polaczenie->query("SELECT id_user FROM users WHERE user='$nick'");
if (!$rezultat) throw new Exception($polaczenie->error);
$ile_takich_nickow = $rezultat->num_rows;
if($ile_takich_nickow>0)
{
$wszystko_OK=false;
$_SESSION['e_nick']="Istnieje już gracz o takim nicku! Wybierz inny.";
}
if ($wszystko_OK==true)
{
//Hurra, wszystkie testy zaliczone, dodajemy gracza do bazy
if ($polaczenie->query("INSERT INTO users VALUES ('', '$nick', '$haslo_hash', 0, 'brak' ,'0', '$email')"))
{
$_SESSION['udanarejestracja']=true;
echo '<div id="zarejestrowano"><br><zarejestrowano<br><br>
<a href="loginpage.php"><div id="login_button">Przedź do strony logowania</div></a></div>';
}
else
{
throw new Exception($polaczenie->error);
}
}
$polaczenie->close();
}
}
catch(Exception $e)
{
echo '<div id="devconsole"><span style="color:red;">Błąd serwera! Przepraszamy za niedogodności i prosimy o rejestrację w innym terminie!</span>';
echo '<br />Informacja developerska: '.$e.'</div>';
}
}
?>
<html>
<?php
include('head.php');
?>
<body>
<div id="all">
<?php
include('logo.php');
include('ad.php');
?>
<main>
<div id="registerform">
<form method="post">
Nickname: <br /> <input type="text" value="
<?php
if (isset($_SESSION['fr_nick']))
{
echo $_SESSION['fr_nick'];
unset($_SESSION['fr_nick']);
}
?>" name="nick" /><br />
<?php
if (isset($_SESSION['e_nick']))
{
echo '<div class="error">'.$_SESSION['e_nick'].'</div>';
unset($_SESSION['e_nick']);
}
?>
E-mail: <br /> <input type="text" value="
<?php
if (isset($_SESSION['fr_email']))
{
echo $_SESSION['fr_email'];
unset($_SESSION['fr_email']);
}
?>" name="email" /><br />
<?php
if (isset($_SESSION['e_email']))
{
echo '<div class="error">'.$_SESSION['e_email'].'</div>';
unset($_SESSION['e_email']);
}
?>
Twoje hasło: <br /> <input type="password" value="
<?php
if (isset($_SESSION['fr_haslo1']))
{
echo $_SESSION['fr_haslo1'];
unset($_SESSION['fr_haslo1']);
}
?>" name="haslo1" /><br />
<?php
if (isset($_SESSION['e_haslo']))
{
echo '<div class="error">'.$_SESSION['e_haslo'].'</div>';
unset($_SESSION['e_haslo']);
}
?>
Powtórz hasło: <br /> <input type="password" value="
<?php
if (isset($_SESSION['fr_haslo2']))
{
echo $_SESSION['fr_haslo2'];
unset($_SESSION['fr_haslo2']);
}
?>" name="haslo2" /><br />
<label>
<input type="checkbox" name="regulamin"
<?php
if (isset($_SESSION['fr_regulamin']))
{
echo "checked";
unset($_SESSION['fr_regulamin']);
}
?>/> Akceptuję regulamin
</label>
<?php
if (isset($_SESSION['e_regulamin']))
{
echo '<div class="error">'.$_SESSION['e_regulamin'].'</div>';
unset($_SESSION['e_regulamin']);
}
?>
<div class="g-recaptcha" data-sitekey="6LdhyigTAAAAALjx_WfZK1RrfA1JSv6pHA-vq_Rl"></div>
<?php
if (isset($_SESSION['e_bot']))
{
echo '<div class="error">'.$_SESSION['e_bot'].'</div>';
unset($_SESSION['e_bot']);
}
?>
<br />
<input type="submit" value="Zarejestruj się" />
</form>
</div>
<?php
include('regulamin.html');
?>
</main>
<?php
include('ad.php');
include('footer.php');
?>
</div>
</body>
</html>
No i pola w bazie danych:
Porównywałem z pobranym kodem i wszystko jest prawie identyczne. Proszę o pomoc, pewnie popełniłem jakiś głupi błąd i dlatego nie działa, ale się uczę i jak wiadomo uczymy się na błędach :D