J'utilise un script de connexion PHP qui défie l'utilisateur pour le nom d'utilisateur & mot de passe.empêcher l'utilisateur de se reconnecter après s'être déconnecté en appuyant sur le bouton précédent
Une fois le programme authentifié stocke une valeur de session. Lors de la déconnexion, la valeur de la session est définie sur des espaces.
Une fois déconnecté Je veux éviter de laisser l'utilisateur appuyant sur le bouton de retour plusieurs fois et et les paris autorisés à voir l'écran des données ou se connecter accidentaly avant.
J'utilise des sessions, une nouvelle direct à Envoyer un utilisateur validé à une nouvelle page. J'utilise aussi ob_start, ob_flush et ob_end_clean pour éviter les erreurs ou rediriger.
Questions: Est-ce vraiment sécurisé? Est-ce une approche courante?
Y a-t-il une alternative à la mise en mémoire tampon?
ci-dessous est une petite preuve de concept.
<?php
header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT");
header("Pragma: public");
session_cache_limiter('nocache');
// I'm not sure how effective any of the above seem to be.
session_start();
// start buffering because if we use header later we want to avoid error
ob_start();
echo "Type <b>in</b> or <b>out</b> to login/logout<br>";
?>
<form action='' method='POST'>
<input type='text' name='status' size='10' value=""><br/><br/>
<p> </p>
<input type='submit' name='Login' value='Login' /></form></p>
<?php
if ($_POST['status'] == 'in')
{
$_SESSION['logged_in'] = 'in';
ob_end_clean(); // clean and erase buffer so far
header('location:test2.php');
exit;
}
if ($_POST['status'] == 'out')
{
$_SESSION['logged_in'] = 'no';
echo "you are logged out <br>";
}
ob_flush(); // push output
echo "login status = " . $_SESSION['logged_in'] ;
?>
file test2.php
<?php
echo "You have logged in";
?>
ça semble beaucoup plus facile ... –