我在php中写了一个登录页面,我在设置$ _SESSION时遇到了麻烦。我是php的新手,我不知道我做错了什么。脚本在localhost上工作正常,但是当我将它推送到远程服务器时,它不起作用。它可能是php.ini文件吗?谢谢你的帮助。
<?
start_session();
$dbc = mysqli_connect($host,$name,$dpassword,$database) or die('Error can not connect to corp database');
$q="SELECT * FROM corporate WHERE (email='$theemail' AND password='$md5pass' AND activated = '1')";
$result= mysqli_query($dbc,$q) or die("Error: ".mysqli_error($dbc));;
if(@mysqli_num_rows($result) == 1)
{
//get the entire row
$getrow = mysqli_fetch_array($result);
//also tired
//$_SESSION = mysqli_fetch_array($result, MYSQLI_ASSOC);
//set session, but does not get set!
$_SESSION['lname'] = $getrow['lname'];
$_SESSION['fname'] = $getrow['fname'];
//set cookie for an hour
setcookie("lname", $getrow['lname'], time()+60*60,"/","http://www.limozoor.com",1);
setcookie("fname",$getrow['fname'],time()+60*60,"/","http://www.limozoor.com",1);
//if no header is not sent, send it.
if(!headers_sent())
{
header('Location: http://www.limozoor.com/login/homepage.php');
exit();
}//inner
}//outter
}
?>
的php.ini
[Session]
session.save_handler = files
session.save_path = /tmp
session.use_cookies = 1
session.name = sid
session.auto_start = 0
session.cookie_lifetime = 0
session.cookie_path = /
session.cookie_domain =
session.serialize_handler = php
session.gc_divisor = 100
session.gc_maxlifetime = 1440
session.bug_compat_42 = 1
session.bug_compat_warn = 1
session.referer_check =
session.entropy_length = 0
session.entropy_file =
session.cache_limiter = nocache
session.cache_expire = 180
session.use_trans_sid = 1
答案 0 :(得分:1)
尝试更改这些代码段
start_session();
到
session_start();
和
$_SESSION['lname'] = $getrow['lname'];
$_SESSION['fname'] = $getrow['fname'];
进入
if($getrow['lname']!='' && $getrow['fname']!=''){
$_SESSION['lname'] = $getrow['lname'];
$_SESSION['fname'] = $getrow['fname'];
}
答案 1 :(得分:1)
这可能只是一种疏忽,但代码中的功能不正确:它不应该是start_session()
而是session_start()
。
http://php.net/manual/en/function.session-start.php
除此之外,我在php.ini设置中没有看到任何可能导致会话无法工作的内容。
您应该将这些行放在php.ini error_reporting = E_ALL | E_STRICT
和display_errors = On
中。它将允许您查看尽可能多的错误消息。
最后,您可以检查apache错误日志,看看是否可以找到任何有意义的错误消息。默认情况下,它位于/var/log/apache2/error.log或/var/log/httpd/error.log
答案 2 :(得分:0)
你不应该使用:
session_start();
不是
start_session();
如果没有正确调用该功能,您的浏览器实际上不会存储任何会话数据。
答案 3 :(得分:0)
这可能是你的会话开始吗?
你有start_session(),但我认为它应该是session_start()