Posto il codice completo. Un esempio in più di codice funzionante non fa mai male

index.php
codice:
<?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 &egrave; 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>
transaction.php
codice:
<?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']);
}
?>
Saluti a tutti