丢失会话重新加载网页,php $ _SESSION

时间:2014-09-03 21:18:50

标签: php session session-variables reload

我做了一个简单的php网页来控制连接到mysql数据库的登录,它运行良好,但如果我重新加载网页,我会松开$_SESSION,我的代码是:

<?php
    session_start();
    include_once('clases/Usuario.php');

    // Declaración de variables
    $user = new Usuario();
    $msg = "";

    // Controlo el log in
    if (isset($_POST['login']))
    {
        try
        {
            $_SESSION['user'] = $user->login($_POST['user'], $_POST['pass']);
            $_SESSION['log'] = true;
            $msg = "Conectado";
        }
        catch (Exception $e)
        {
            $msg = $e->getMessage();
        }
    }

    // Controlo el log off
    if (isset($_POST['logoff']))
    {
        $_SESSION['user'] = null;
        $_SESSION['log'] = null;
        $msg = "Desconectado";
    }
?>
<html>
    <head>
        <meta charset="UTF-8">
        <title>example</title>
    </head>
    <body>
<?php
    if ($msg != "") echo "<font color='red'><h2>" . $msg . "</h2></font>"; // Mensaje de error si se diera el caso
    // Controlo si está logueado o no
    if (isset($_SESSION['log']) && $_SESSION['log'])
    {
?>
        <h1>Panel</h1>
        <form action='index.php' method='post'><input type='submit' name='logoff' id='logoff' value='Log off' /></form>
<?php
    }
    else
    {
?>
        <h1>Login</h1>
        <form action='index.php' method='post'>
            <table>
                <tr>
                    <td><b>Usuario:</b></td>
                    <td><input type='text' id='user' name='user' /></td>
                </tr>
                <tr>
                    <td><b>Contraseña:</b></td>
                    <td><input type='password' id='pass' name='pass' /></td>
                </tr>
                <tr>
                    <td colspan='2'><input type='submit' id='login' name='login' value='Log in' /></td>
                </tr>
            </table>
        </form>
<?php   
    }
?>
    </body>
</html>

我做了很多登录工作非常好,但我没有长时间编程php,可能我错过了一些东西。

1 个答案:

答案 0 :(得分:0)

我修复了,问题是我试图存储在$_SESSION['user'] PDO Statement中,我不知道它引起了一些问题,比如我的,所以我在返回之前获取了PDOStatement login中,现在已全部修复。