Autor | Zpráva | ||
---|---|---|---|
Zoufalec Profil * |
#1 · Zasláno: 10. 8. 2006, 09:47:37
Jak je to s chováním přihlašovacího skriptu, pokud se použije tlačítko "zpět" na prohlížeči?
Příklad: Mám 2 stránky <?php // stránka login.php include "../mysql_class.php"; include "../db_connect.php"; include "../funkce.php"; $steno->connect(); $steno->select(); if (($_SERVER['REQUEST_METHOD']=='POST') && (isset($_POST['log_in'], $_POST['editor_user'], $_POST['editor_pass']))) { $error_string=''; $_POST['editor_user']=trim($_POST['editor_user']); $_POST['editor_pass']=trim($_POST['editor_pass']); if ($_POST['editor_user']=='' || $_POST['editor_pass']=='') { $error_string='Chyba: Přihlašovací jméno nebo heslo nebylo zadáno.'; } if (empty($error_string)) { // echo $_POST['editor_user']; // echo $_POST['editor_pass']; $steno->query(sprintf("SELECT * FROM users WHERE user_name='%s'", quote_smart($_POST['editor_user']))); list($user_id, $user_name, $user_password) = $steno->fetchRow(); if (!(crypt($_POST['editor_pass'],$user_password) == $user_password) || ($steno->numRows()!=1)) { $error_string='<p>Chyba: Přihlašovací jméno nebo heslo bylo zadáno chybně</p>'; } else { session_start(); $_SESSION['user_id'] = $user_id; $_SESSION['user_password'] = $user_password; header ('Location: http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($ _SERVER['SCRIPT_NAME']).'/index.php'); exit; } } } // if (!isset($_SESSION['user_id']) || !isset($_SESSION['user_password'])) { $error_string=' '; } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="Wed, 30 Jan 2003 21:29:02 GMT" /> <link href="styly-login.css" rel="stylesheet" type="text/css" /> <title>přihlášení</title> </head> <body> <div class="celek"><h2>PŘIHLÁŠENÍ</h2> <h3><?php echo $error_string ?></h3> <form name="form1" id="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'] ?>"> <dl> <dt>Přihlašovací jméno:</dt> <dd><input name="editor_user" type="text" value="" size="20" maxlength="20" /></dd> <dt>Heslo:</dt> <dd><input name="editor_pass" type="password" value="" size="20" maxlength="20" /></dd> </dl> <br /> <input name="log_in" type="submit" value="Přihlásit" /> </form> </div> </body> </html> <?php // stránka index.php session_save_path('C:\www\editor\tmp'); session_start(); if (!isset($_SESSION['user_id']) || !isset($_SESSION['user_password'])) { $_SESSION = array(); session_unset(); session_destroy(); header ('Location: http://'.$_SERVER['SERVER_NAME'].':'.$_SERVER['SERVER_PORT'].dirname($ _SERVER['SCRIPT_NAME']).'/login.php'); exit; } // include "check_login.php"; // echo $_SERVER['SCRIPT_NAME']; // echo $_SERVER['SERVER_NAME']; ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <meta http-equiv="pragma" content="no-cache" /> <meta http-equiv="cache-control" content="no-cache" /> <meta http-equiv="expires" content="Wed, 30 Jan 2003 21:29:02 GMT" /> <title>Editor</title> </head> <body> <?php echo '<p>Přihlásil se uživatel č: '.$_SESSION['user_id'].'</p>'; echo var_dump(session_get_cookie_params()); echo var_dump(session_id()); // echo $_SERVER['SERVER_NAME']; ?> </body> </html> Předpokládám, že otevřu prohlížeč na stránce index.php. Nejsem přihlášen, tudíž mě hned přesměruje na login.php. Tam se přihlásím, jsem ověřen, začnu session a přesměruji se na stránku index.php, hde jsem již ověřen a zobrazí se mi tedy obsah. A teď: Tlačítkem "zpět" u prohlížeče se vrátím na stránku login.php a zadám jméno a heslo jiného uživatele. Po přihlášení jsem sice opět vpuštěn na obsah stránky index.php, ale v datech session se objevují data původně přihlášeného uživatele. Proč ne toho druhého? Díky za odpovědi... |
||
Časová prodleva: 18 let
|
Toto téma je uzamčeno. Odpověď nelze zaslat.
0