Witam
Przy pomocy tego i kilku innych forum stworzyłem sobie logowanie do strony www z zapisem w bazie SQL kiedy konto zostało założone i kiedy było ostatnie logowanie przez danego użytkownika.
Może się komuś przyda.
Po pierwsze strona główna (index)
<!DOCTYPE html>
<html><head>
<meta charset="utf-8"><title>Logowanie do tablicy</title></head><body>
<center>
Proszę o przetestowanie i Państwa opinie. <br><br>
<h1>Formularz logowanie</h1>
<font color="RED" size="5"><br>
<font size="3">
</font></font><form action="login.php" method="post">
<font color="RED" size="5"><font size="3"> <input name="email" placeholder="Email" type="email"><br>
<input name="password" placeholder="Password" type="password"><br>
<button type="submit" name="register">Zaloguj</button>
<br>
<a href="http://adres.pl/formularz.html">załóż konto</a><br><br>
<a href="http://adres.pl/kontakt.php">kontakt</a>
<br>
<br>
</HEAD>
<BODY>
</font></font></form></center>
</body></html>
Po drugie formularz do zakładania konta
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>dodaj nowego użytkownika</title>
</head>
<body>
<center>
<h1>Formularz rejestracyjny</h1>
<form action="registration.php" method="post">
<input type="email" name="email" placeholder="Email"><br>
<input type="password" name="password1" placeholder="Password"><br>
<input type="password" name="password2" placeholder="Password"><br>
<button type="submit" name="register">Zarejestruj</button>
</form>
<br><br>
<a href="index.html">powrót do logowania</a>
</center>
</body>
</html>
Po trzecie kod rejestracji nowego użytkownika
<?php
try
{
require_once("config.php");
$email =addslashes(trim($_POST['email']));
$password1 = trim($_POST['password1']);
$password2 = trim($_POST['password2']);
$hashPassword = password_hash($password1,PASSWORD_BCRYPT);
if ($password1 != $password2){
die ("Wpisane hasła nie są takie same");
}
else{
if( empty( $email ) || empty($password1) || empty($password2)){
header("Location: http://adres.pl/formularz.html");
die ('Wróć i wypełnij wszystkie pola');
}
$stmt = $db->query("SELECT email FROM user where email ='$email'");
$istnienie_uzytkownika = $stmt->rowCount();
if ($istnienie_uzytkownika>0)
{
echo 'Ten email jest już w bazie';
foreach($stmt as $row)
{
echo '<li>'.$row['email'].'</li>';
}
$stmt->closeCursor();
}
else
{
$data_zal=date('Y-m-d H:i:s');
$sth = $db->prepare('INSERT INTO user (email,password, data_zal)VALUE (:email,:password, :data_zal)');
$sth->bindValue(':email', $email, PDO::PARAM_STR);
$sth->bindValue(':password', $hashPassword, PDO::PARAM_STR);
$sth->bindValue(':data_zal', $data_zal, PDO::PARAM_STR);
$sth->execute();
echo "Rejestracja pomyslna! " .$data_zal. " <br>";
echo "<a href='index.html'>powrót do logowania</a>";
}
}
}
catch(PDOException $e)
{
echo 'Połączenie nie mogło zostać utworzone: ' . $e->getMessage();
}
?>
Po czwarte samo logowanie
<?php
require_once("config.php");
//if(isset($_POST['login'])){
$email = addslashes(trim($_POST['email']));
$password = trim($_POST['password']);
$sth = $db->prepare('SELECT * FROM user WHERE email=:email limit 1');
$sth->bindValue(':email', $email, PDO::PARAM_STR);
$sth->execute();
$user = $sth->fetch(PDO::FETCH_ASSOC);
if($user){
if(password_verify($password,$user['password'])){
$data_log=date('Y=m-d H:i:s');
//$emaill = trim($_POST['email']);
//
//UPDATE tabela SET pole = 'nowa_wartosc' WHERE pole = 'szukana_wartosc'
$sth = $db->prepare('UPDATE user SET data_log = :data_log WHERE email = :email');
$sth->bindValue(':data_log', $data_log, PDO::PARAM_STR);
$sth->bindValue(':email', $email, PDO::PARAM_STR);
$sth->execute();
//
echo "<h3>Uzytkownik zalogowany pomyslnie</h3>";
header("Location: http://strona_do_ktorej_sie_logujesz");
}else{
echo "<h3>Nieprawidlowe haslo</h3>";
echo "<a href='index.html'>powrót do logowania</a>";
}
}else{
echo "<h3>Nie znaleziono uzytkownika</h3>";
echo "<a href='index.html'>powrót do logowania</a>";
}
//}
?>
W pliku config podałem takie dane:
<?php
try{
$db = new PDO('mysql:host=localhost;dbname=nazwa', 'nazwa', 'haslo');
}
catch (PDOException $e){
die ("Error connecting to database!");
}
do tego utworzyłem jeszcze bazę SQL z polami:
id, email (jako login), password, data_zal, data_log
Pozdrawiam