我有这个代码在开发机器上工作正常但是当移植到生产时,用户将获得警告错误的细节,尽管是正确的。
我猜这是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
}
}
答案 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表名称区分大小写。不知道。