пример сценария входа в систему с PHP DBO
<?php
// database class
class DB {
private $pdo;
// contructor to connect to database on db object create
public function __construct($host, $dbname, $username, $password) {
// database connect pdo object
$pdo = new PDO('mysql:host='.$host.';dbname='.$dbname.';charset=utf8', $username, $password);
// allow errors to haslt script
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$this->pdo = $pdo;
}
public function query($query, $params = array()) {
// prepare query from parameters
$statement = $this->pdo->prepare($query);
// execute query
$statement->execute($params);
// if 1st word in query is select
if (explode(' ', $query)[0] == 'SELECT') {
// fetch query data
$data = $statement->fetchAll(PDO::FETCH_ASSOC);
// fetched data
return $data;
}
}
}
// database variable
$db = new DB("host", "database", "username", "password");
// check if login button clicked
if (isset($_POST['login'])) {
// get form values and set to variables
$username = $_POST['username'];
$password = $_POST['password'];
// check if username is registered
if ($db-query('SELECT username FROM users WHERE username=:username', array(':username'=>$username))) {
// verify password submitted
if (password_verify($password, $db-query('SELECT password FROM users WHERE username=:username', array(':username'=>$username))[0]['password'])) {
echo 'Logged in!';
// set to true to generate token below
$cstrong = True;
$token = bin2hex(openssl_random_pseudo_bytes(64, $cstrong));
// set user id variable from actual user id
$user_id = $db-query('SELECT id FROM users WHERE username=:username', array(':username'=>$username))[0]['id'];
// insert token in login token table
$db-query('INSERT INTO login_tokens VALUES (\'\', :token, :user_id)', array(':token'=>sha1($token), ':user_id'=>$user_id));
// set main cookie
setcookie("SNID", $token, time() + 60 * 60 * 24 * 7, '/', NULL, NULL, TRUE);
// set cookie to reset 1st cookie without asking user to login again
setcookie("SNID_", '1', time() + 60 * 60 * 24 * 3, '/', NULL, NULL, TRUE);
} else {
echo 'Incorrect Password!';
}
} else {
echo 'User not registered!';
}
}