Posto il codice completo. Un esempio in più di codice funzionante non fa mai male![]()
index.php
transaction.phpcodice:<?php session_start(); define('SESSION_TTL', 30); echo '<pre>'; print_r($_SESSION); echo '</pre>'; echo '<pre>'; print_r($_COOKIE); echo '</pre>'; ?> <html> <head> <title>PHP Autentication</title> </head> <body> <?php echo 'controllo se la sessione è valida...'; if (isset($_SESSION['lifetime'])) { if (time() - $_SESSION['lifetime'] > SESSION_TTL) { echo 'no. '; session_unset(); session_destroy(); echo 'controllo se esiste il cookie...'; if (isset($_COOKIE['phpaut'])) { echo 'si. Rigenero la sessione. '; session_start(); $session_data = array( 'lifetime' => time(), 'username' => $_COOKIE['phpaut']['username'], 'password' => $_COOKIE['phpaut']['password'] ); $_SESSION = $session_data; header('Location: ' . $_SERVER['PHP_SELF']); } else { echo 'nessun cookie. '; } } else { echo 'si. '; } } else { // la sessione non è valida echo 'nessuna sessione. '; echo 'controllo se esiste il cookie...'; if (isset($_COOKIE['phpaut'])) { echo 'si. Rigenero la sessione. '; session_start(); $session_data = array( 'lifetime' => time(), 'username' => $_COOKIE['phpaut']['username'], 'password' => $_COOKIE['phpaut']['password'] ); $_SESSION = $session_data; header('Location: ' . $_SERVER['PHP_SELF']); } else { echo 'nessun cookie. '; } } if (isset($_SESSION['lifetime'])) { echo 'faccio il refresh della sessione '; $_SESSION['lifetime'] = time(); } if (isset($_SESSION['username'])) { ?> Benvenuto <?php echo $_SESSION['username']; ?></p> logout <?php } else { if (isset($_GET['action'])) { echo ' ' . $_GET['action'] . '</p>'; } ?> <form action="transaction.php?action=login" method="post"> <table> <tr> <td>username</td> <td><input type="text" name="username" /></td> </tr> <tr> <td>password</td> <td><input type="password" name="password" /></td> </tr> <tr> <td></td> <td><input type="checkbox" name="rem" />ricordami</td> </tr> <tr> <td></td> <td colspan="2"><input type="submit" name="action" value="login" /></td> </tr> </table> </form> <?php } ?> </body> </html>
Saluti a tutticodice:<?php session_start(); define('COOKIE_TTL', 120); echo '<pre>'; print_r($_POST); echo '</pre>'; $action = isset($_GET['action']) ? $_GET['action'] : ''; switch ($action) { case 'login': $username = isset($_POST['username']) ? $_POST['username'] : ''; $password = isset($_POST['password']) ? $_POST['password'] : ''; if (!empty($username) && $username == 'pippo' && !empty($password) && $password == '12345') { // dati corretti // creo sessione $session_data = array( 'lifetime' => time(), 'username' => 'pippo', 'password' => '12345' ); $_SESSION = $session_data; // controllo se si preferisce memorizzare le informazioni if (isset($_POST['rem'])) { // creo cookie $cookie_data = array( 'username' => 'pippo', 'password' => '12345' ); $exp_date = time() + COOKIE_TTL; setcookie('phpaut[username]', $cookie_data['username'], $exp_date); setcookie('phpaut[password]', $cookie_data['password'], $exp_date); } header('Location: ' . $_SERVER['HTTP_REFERER']); } else { // dati errati header('Location: index.php?action=login_failure'); } break; case 'logout': // distruggo la sessione unset($_SESSION); session_destroy(); // rendo scaduti i cookie setcookie('phpaut[username]', null, time() - COOKIE_TTL); setcookie('phpaut[password]', null, time() - COOKIE_TTL); header('Location: index.php'); break; default: header('Location: ' . $_SERVER['HTTP_REFERER']); } ?>

Rispondi quotando