【问题标题】:Lost session reloading the webpage, php $_SESSION丢失会话重新加载网页,php $_SESSION
【发布时间】:2014-09-03 21:18:49
【问题描述】:

我做了一个简单的 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 编程,可能我错过了一些东西。

【问题讨论】:

  • 你不是应该在每一页的开头使用 session_start 吗?
  • 您从不调用 session_start(),因此 PHP 没有义务为您保存会话数据。
  • 对不起,它没有显示正确的代码,我写了'session_start()'

标签: php session session-variables reload


【解决方案1】:

我修复了,问题是我试图存储在$_SESSION['user']一个PDO Statement,我不知道它导致了一些像我这样的问题,所以我在返回之前获取了PDOStatementlogin 中,现在一切都已修复。

【讨论】:

    猜你喜欢
    • 2015-11-09
    • 1970-01-01
    • 2014-08-16
    • 2017-04-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-16
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多