[Super Débutant] Page d'accueil protégée par password simple

ViPHP
ViPHP | 1996 Messages

16 avr. 2015, 05:42

Bonjour,

Tu ne me gonfle pas. Si j'ai un peu de temps, je t'aide c'est tout ;-).
Je vais t'expliquer comment fonctionne les sessions.

Une session est gérée côté serveur, l'utilisateur ne peut pas modifier les données d'une session.
Elle démarre avec session_start(); qui doit se trouver n'importe où dans toutes les pages qui utiliseront les sessions mais avant une sortie texte (genre un echo.. ou <!DOCTYPE html>). C'est pour cela qu'on le place souvent en début de page.

Si tu utilises session_start(); sur une page, une super variable (c'est comme cela qu'on l'appelle) $_SESSION est créée et se comporte comme un tableau. Elle se transmets de page en page qui ont session_start();. Tu peux ajouter à cette super variable des clefs numériques, associatives. (ex. $_SESSION["motDePasseVerifie"]). Là où cela devient sympa, c'est que, comme cette super variable est disponible sur toutes les pages où session_start(); est placé, si tu modifies la variable dans une page, elle est aussi modifiée dans les autres.

Dans ton cas, nous allons vérifier si le mot de passe est correct et s'il l'est, un valide via une variable de session ($_SESSION["motDePasseVerifie"] = true; dans l'exemple ci dessous).

Ensuite, il te reste à vérifier si $_SESSION["motDePasseVerifie"] est bien "true" sur toute les autres pages. Si oui, l'utilisateur a validé le mot de passe, sinon non !
<?php
ini_set('session.use_trans_sid', "0");
ini_set('session.use_cookies', "1");
ini_set('session.use_only_cookies', "1"); 

session_start(); //démarrage de session
session_regenerate_id(); //régénération de l'id de session pour la sécurité

//fonction pour la vérification du mot de passe oublié lors du dernier code
function sha256($string = false) {
	return (!is_string($string) or empty($string)) ? false : hash('sha256',$string);
}

if (!isset($_SESSION["motDePasseVerifie"]))
	$_SESSION["motDePasseVerifie"] = false;

if (!empty($_POST)) {
	$motDePasseVerifie = sha256('coucoulemotdepasse123');
	$messageRetour = false;
	if (empty(trim($_POST["password"]))) {
		$messageRetour = "Le mot de passe ne peut être vide";		
	}
	elseif (sha256($_POST["password"]) == $motDePasseVerifie) {
		$messageRetour = "Le mot de passe n'est pas le bon !";
	}
	else
		$_SESSION["motDePasseVerifie"] = true;
}
?>
<!DOCTYPE html>
<html>
	<head>
	<title>HTML5 Login</title>
	<link rel="stylesheet" href="normalize.css">
	<link rel="stylesheet" href="style.css">
	</head>
<body>
	<section class="loginform cf">
	<?php
	if (empty($_SESSION["motDePasseVerifie"])) {
		?>
		<form name="login" action="<?php echo $_POST["PHP_SELF"]; ?>" method="post" accept-charset="utf-8">
			<ul>
				<li>
					<label for="password">Password</label>
					<input type="password" name="password" placeholder="password" required />
				</li>
				<li>
					<input type="submit" value="Login" />
				</li>
				<?php
				if (!empty($messageRetour)) {
					?>
					<p><?php echo $messageRetour; ?></p>
					<?php
				}
				?>
			</ul>
		</form>
		<?php
	}
	else {
		?>
		<p>Vous êtes maintenant connecté</p>
		<p>
			<a href="lien.php">lien</a>
		<?php
	}
	?>
	</section>
</body>
</html>
Sur les autres pages (ex. lien.php) :
<?php
ini_set('session.use_trans_sid', "0");
ini_set('session.use_cookies', "1");
ini_set('session.use_only_cookies', "1"); 
session_start(); //démarrage de session
session_regenerate_id(); //régénération de l'id de session pour la sécurité

if (empty($_SESSION["motDePasseVerifie"])) {
  // pas utilisateurs
  echo 'Vous n'êtes aps autorisé à consulter cette page ! ';
  exit;
}
else {
  //utilisateurs
  echo 'bonjour utilisateurs';
  echo 'les variables de sessions sont : <pre>'.print_r($_SESSION).'</pre>';
}
?>
It is nice to be important but it is more important to be nice
http://www.aureuswebfactory.fr

Eléphanteau du PHP | 10 Messages

17 avr. 2015, 10:07

Je t'ai envoyé par mp l'adresse de mon site, je sens que je m'approche du but mais j'ai bien peur d'ètre trop débutant pour pouvoir exploiter tes explications comme il faut!

Eléphanteau du PHP | 10 Messages

03 mai 2015, 20:32

Salut à tous! Je relance le sujet et me tourne à nouveau vers vous car je ne parviens malheureusement pas à m'en sortir..
J'ai bien suivi tes conseils (très) détaillés Aureusms mais je bute sur cette fameuse page de "Server Error".
Image
Pour résumer, après qu'Aureusms m'ait fourni les codes php pour mettre en place un sha256, il m'a expliqué comment effectuer un rewriting html vers php via un fichier .htaccess contenant le code suivant:
AddType x-mapp-php5.4 .php
AddHandler x-mapp-php5.4 .php
Options +FollowSymlinks
RewriteEngine on
RewriteRule ^(index\.html)$ index.php [L]
Mais comme je l'ai annoncé dès la création du sujet, je suis ce qu'on appelle un vrai débutant. Je pense donc ne pas exploiter ces infos comme il se doit puisque ça ne semble pas fonctionner.. Est ce que quelqu'un se sentirait chaud pour prendre le relai? =D>
Merci d'avance!