Afficher/cacher Sommaire
Authentification
Création dossier
sudo mkdir /var/www/login
Virtualhost
sudo nano /etc/nginx/conf.d/login.cinay.pw.conf
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name login.cinay.pw;
root /var/www/login;
include ssl_params;
include header_params;
include dh_param;
index index.php index.html index.htm;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.0-fpm.sock; # PHP7.0
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
}
access_log /var/log/nginx/map.cinay.pw-access.log;
error_log /var/log/nginx/map.cinay.pw-error.log;
}
Créer base utilisateurs mariadb
mysql -uroot -p8Niy3BzgYu422N -e "CREATE DATABASE utilisateurs; GRANT ALL PRIVILEGES ON utilisateurs.* TO 'utilisateurs'@'localhost' IDENTIFIED BY 'm9pB26Fd'; FLUSH PRIVILEGES;"
Créer une table users
mysql -uroot -p8Niy3BzgYu422N utilisateurs -e "CREATE TABLE users (id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY,username VARCHAR(30) NOT NULL,password VARCHAR(255) NOT NULL,email VARCHAR(50),reg_date TIMESTAMP);"
Insertion d’un utilisateur
mysql -uroot -p8Niy3BzgYu422N utilisateurs -e 'INSERT INTO users(username, password) VALUES("yannick", "$2y$10$HFY4XC9C.lSaGEbQMokQWOryO9dGqUtnLelzY3DEwcShUEP94XhQW");'
Affichage
mysql -uroot -p8Niy3BzgYu422N utilisateurs -e "select * from users;"
Enregistrement
sudo nano /var/www/login/register.php
<?php
//Connexion à la base de données
//(via PDO, utilisez la méthode de votre choix comme le type de base de données de votre choix)
$pdo = new PDO(
'mysql:host=localhost;dbname=utilisateurs', 'utilisateurs', 'm9pB26Fd');
//On vérifie que l'utilisateur a bien envoyé les informations demandées
if(isset($_POST["username"]) && isset($_POST["password"]) && isset($_POST["password2"])){
//On vérifie que password et password2 sont identiques
if($_POST["password"] == $_POST["password2"]){
//On utilise alors notre fonction password_hash :
$hash = password_hash($_POST["password"], PASSWORD_DEFAULT);
//Puis on stock le résultat dans la base de données :
$query = $pdo->prepare('INSERT INTO users (username, password) VALUES(:username, :password);');
$query->bindParam(':username', $_POST["username"]);
$query->bindParam(':password', $hash);
$query->execute();
header('Location: index.php');
exit();
}
}
?>
Vérification connexion
sudo nano /var/www/login/login.php
<?php
echo "test connexion<br />";
//Connexion à la base de données
//(via PDO, utilisez la méthode de votre choix comme le type de base de données de votre choix)
$pdo = new PDO(
'mysql:host=localhost;dbname=utilisateurs', 'utilisateurs', 'm9pB26Fd');
//Nous vérifions que l'utilisateur a bien envoyé les informations demandées
if(isset($_POST["username"]) && isset($_POST["password"])){
echo "utilisateur : ".$_POST["username"]."<br />";
echo "mp : ".$_POST["password"]."<br />";
//Nous allons demander le hash pour cet utilisateur à notre base de données :
$query = $pdo->prepare('SELECT password FROM users WHERE username = :username');
$query->bindParam(':username', $_POST["username"]);
$query->execute();
$result = $query->fetch();
$hash = $result[0];
//Nous vérifions si le mot de passe utilisé correspond bien à ce hash à l'aide de password_verify :
$correctPassword = password_verify($_POST["password"], $hash);
if($correctPassword){
//Si oui nous accueillons l'utilisateur identifié
echo "Bienvenue ".$_POST["username"];
}else{
//Sinon nous signalons une erreur d'identifiant ou de mot de passe
echo "le hash lu dans la base : ".$hash."<br />";
echo "login/password incorrect";
}
}
?>
Fichier index.html
sudo nano /var/www/login/index.html
<!DOCTYPE html>
<html >
<head>
<meta charset="UTF-8">
<title>login.cinay.pw</title>
<link rel="stylesheet" href="css/style.css" />
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/prefixfree/1.0.7/prefixfree.min.js"></script>-->
</head>
<body>
<div class="body"></div>
<div class="grad"></div>
<div class="header">
<div>Site<span>cinay.pw</span></div>
</div>
<br>
<div class="login">
<form action="login.php" method="POST">
<input type="text" placeholder="utilisateur" name="username"><br>
<input type="password" placeholder="mot de passe" name="password"><br>
<input type="button" value="Connexion">
</form>
<a href="#">Mot de passe oublié?</a>
<a href="#">Enregistrement</a>
</div>
<script src='http://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js'></script>
</body>
</html>
css
.login input[type=submit]{
width: 260px;
height: 35px;
background: #fff;
border: 1px solid #fff;
cursor: pointer;
border-radius: 2px;
color: #a18d6c;
font-family: 'Exo', sans-serif;
font-size: 16px;
font-weight: 400;
padding: 6px;
margin-top: 10px;
}
.login input[type=submit]:hover{
opacity: 0.8;
}
.login input[type=submit]:active{
opacity: 0.6;
}
.login input[type=submit]:focus{
outline: none;
}