templates/include/header.php
<?php
if($_SESSION['logout']) {
echo 'Zostałeś wylogowany<br/>'; $_SESSION['logout']=false;
} elseif($_SESSION['justlogged']) {
echo 'Logowanie powiodło się<br/>'; $_SESSION['justlogged'] = false;
} elseif($_SESSION['logfailed']) {
echo 'Login i/lub hasło są nieprawidłowe'; $_SESSION['logfailed'] = false;
}
if(!$_SESSION['logged']) {
<form action="templates/include/log.php" method="post">
<input type="text" placeholder="nazwa użytkownika" name="login" required>
<input type="password" placeholder="hasło" name="password" required>
<br/>
<input type="submit" name="wyslano" value="Zaloguj"/>
</form>
<form action="rejestracja.php" method="post">
<input type="submit" value="Rejestracja"/>
</form>
<br/>';
} else {
$login=$_SESSION['login'];
echo 'Jesteś zalogowany jako <span class="login">'. $login . '</span> <form action="templates/include/logout.php">
<input type="submit" value="Wyloguj"/>
</form>';
}
if($_SESSION['reginfo']) {
echo $_SESSION['reginfo'].'<br/>'; $_SESSION['reginfo']=false;
}
?>
index.php
<?php
include "templates/include/header.php";
templates/include/log.php
<?php
include_once "../../config.php";
//function dbInit(){
if(isset($GLOBALS['db']))return $GLOBALS['db']; $db=new PDO('mysql:host='.$DBVARS['hostname'].';dbname='.$DBVARS['db_name'],$DBVARS['username'],$DBVARS['password']);
$db->query('SET NAMES utf8');
$db->num_queries=0;
$GLOBALS['db']=$db;
//Usuwamy białe znaki z przesłanych danych
$login = trim($_POST['login']); $password = trim($_POST['password']);
//Kodujemy hasło - przy rejestracji również je zakodowaliśmy, wiec przy porównywaniu musi być zakodowane
$password = sha1($password);
//Sprawdzamy czy użytkownik o podanych danych istnieje
$stmt = $db->prepare("SELECT * FROM users WHERE login=:login AND password=:password");
$stmt->bindValue(":login", $login, PDO::PARAM_STR);
$stmt->bindValue(":password", $password, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if($stmt->rowCount()!=0){
// Tworzymy sesję dla zalogowanego użytkownika z:
// - informacją, że użytkownik jest zalogowany
// - jego id
//
$_SESSION['logged'] = true;
$_SESSION['user_id'] = $row['id'];
$_SESSION['login'] = $row['login'];
$_SESSION['justlogged'] = true;
}
else{
$_SESSION['logfailed'] = true;
}
?>
templates/include/logout.php
// zniszczenie sesji
$_SESSION['logged']=false;
$_SESSION['logout']=true;
rejestracja.php
<?php include "templates/include/header.php";
if(!$_SESSION[logged]) {
<form action="templates/include/reg.php" method="post">
<label for="login">Login</label>
<input type="text" name="login" required>
<br/>
<label for="password">Hasło</label>
<input type="password" name="password" required>
<br/>
<label for="password2">Powtórz hasło</label>
<input type="password" name="password2" required>
<br/>
<label for="email">E-mail</label>
<input type="email" name="email" required>
<br>
<input type="submit" name="wyslano" value="Załóż konto"/>
</form> ';
} else {
echo '<p>Aby utworzyć nowego użytkownika, najpierw wyloguj się</p>'; }
echo $_SESSION['reginfo']; $_SESSION['reginfo']="";
templates/include/reg.php
<?php
//dbInit
require_once "../../config.php";
if(isset($GLOBALS['db']))return $GLOBALS['db']; $db=new PDO('mysql:host='.$DBVARS['hostname'].';dbname='.$DBVARS['db_name'],$DBVARS['username'],$DBVARS['password']);
$db -> setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
//$db -> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);// tą linijkę włącz, jak coś będziesz przerabiać i będziesz chciał widzieć błędy
$db->query('SET NAMES utf8');
$db->num_queries=0;
$GLOBALS['db']=$db;
//Usuwamy białe znaki z przesłanych danych
$login = trim($_POST['login']); $password = trim($_POST['password']); $password2 = trim($_POST['password2']); $email = trim($_POST['email']);
$errors = NULL; //Tworzymy zmienną przechowująca ewentualne błędy
//Sprawdzamy, czy przesłane dane mają odpowiednią ilość znaków
if(strlen($login)<3
) $errors .= 'Login musi zawierać co najmniej 3 znaki<br/>'; if(strlen($password)<6
) $errors .= 'Hasło musi zawierać co najmniej 6 znaków<br/>'; if($password!==$password2) $errors .= 'Hasła nie są takie same<br>';
if(!preg_match('/\@/', $email) || strlen($email)<5
) $errors .= 'Podany adres e-mail jest nieprawidłowy<br/>';
//Sprawdzamy czy użytkownik o takim samym loginie już nie istnieje ---------------------nie działą!!!!!!!!!!!!
$stmt = $db->prepare("SELECT FROM users WHERE 'login'=:login");
$stmt->bindValue(":login", $login, PDO::PARAM_STR);
$stmt->execute();
$row = $stmt->fetch(PDO::FETCH_ASSOC);
if(!empty($row[0
])) $errors = 'Konto o takim loginie już istnieje<br/>';
//Sprawdzamy czy użytkownik o takim samym adresie e-mail już nie istnieje ---------------------nie działą!!!!!!!!!!!!
$stmt2 = $db->prepare("SELECT FROM users WHERE email=:email");
$stmt2->bindValue(":email", $email, PDO::PARAM_STR);
$stmt2->execute();
$row2 = $stmt2->fetch();
if(!empty($row[0
])) $errors .= 'Konto o takim adresie e-mail już istnieje<br/>';
if(empty($errors)){ //Jeśli nie ma błędów, rejestrujemy użytkownika $password = sha1($password); //kodujemy hasło
global $login, $password, $email, $db; echo '<br/>Dane przesyłane do bazy: <br/>Nazwa użytkownika: ' . $login . '<br/>Hasło: ' . $password . '<br/>E-mail: ' . $email . '<br/>'; $stmt3=$db->prepare("INSERT INTO `users` (`login`, `password`, `email`) VALUES(:login, :password, :email)");
$stmt3->bindValue(":login", $login, PDO::PARAM_STR);
$stmt3->bindValue(":password", $password, PDO::PARAM_STR);
$stmt3->bindValue(":email", $email, PDO::PARAM_STR);
$stmt3->execute();
$_SESSION['reginfo'] ='Użytkownik został zarejestrowany. Zaloguj się!';
}
else{
$_SESSION['reginfo'] ='<div style="color:red">'.$errors.'</div>';
}
?>
config.php ->musisz wpisać dane swojej bazy
<?php
'username'=>'wpisz',
'password'=>'wpisz',
'hostname'=>'wpisz',
'db_name'=>'wpisz'
);
Z tego co pamiętam, to nie działa tu sprawdzanie, czy mail lub login już istnieją...
A wszystkie informacje możesz przechowywać w tablicy $_SESSION
Powinieneś ogarnąć ten kod bez problemu, jestem początkująca jeśli chodzi o php i bibliotekę PDO i uczyłam się jej pisząc to, więc tu nie ma skomplikowanych funkcji