这是会话问题吗?

时间:2015-12-22 16:55:14

标签: php linux apache session

我有这个代码在开发机器上工作正常但是当移植到生产时,用户将获得警告错误的细节,尽管是正确的。

我猜这是PHP的会话问题。但是,我在服务器上看到会话文件保存到/ tmp。我是否遗漏了导致此问题的原因?

下面引用代码。

session_start();
include_once 'dbconnect.php';

if(isset($_SESSION['user'])!="")
    {
        header("Location: home.php");
    }
if(isset($_POST['btn-login']))
    {
        $email = mysql_real_escape_string($_POST['email']);
        $upass = mysql_real_escape_string($_POST['pass']);
        $res=mysql_query("SELECT * FROM `USERS` WHERE `EMAIL` = '$email'");
        $row=mysql_fetch_array($res);
        if($row['PASSWORD']==md5($upass))
            {
                $_SESSION['user'] = $row['ID'];
                header("Location: home.php");
            }
        else
            {
                ?>
                <script>alert('wrong details');</script>
                <?php
            }

    }

4 个答案:

答案 0 :(得分:1)

更改

if (isset($_SESSION['user']) != "") {
    header("Location: home.php");
}

if (!empty($_SESSION['user'])) {
    header("Location: home.php");
}

有关更多信息,请查看karim79发表的这篇文章https://stackoverflow.com/a/1519849/1592783。或者,如果您想了解empty,请查看http://php.net/empty

答案 1 :(得分:1)

试试这个。我做了以下更改:

  • 修复isset()的{​​{1}}测试。你不应该将它与$_SESSION['user']进行比较。也许你真正想要的是""

  • 使用if(!empty($_SESSION['user']),以便在会话变量未设置时仅检查电子邮件和密码。

elseif

答案 2 :(得分:1)

isset 将仅返回true或false。

if(isset($_SESSION['user'])!="")

尝试将其更改为

if(isset($_SESSION['user']))

或者将$ _SESSION [&#39;用户&#39;]的值与:

进行比较
if($_SESSION['user'] == "")

答案 3 :(得分:0)

所以我终于修好了。从Windows到Linux MySQL表名称区分大小写。不知道。