好吧,会话有一个小问题。似乎某些浏览器没有放置会话,就像我爸爸的mac书一样,但问题是他的Safari只阻止来自第三方的cookie,即使我说永远不会阻止会话也没有开始。在少数例子中它只是这样;我兄弟的mac很好用。无论如何这里是代码:
登录页面:
if ($email==$dbusername&&md5($pass)==$dbpassword){
$_SESSION['username']=$email;
header( 'Location: http://www.website/start.php' ) ;
开始页面:
session_start();
if($_SESSION['username']){
}
else{
die("<li style=\" color: black; font-family: Helvetica, sans-serif;
margin-left: 550px; margin-top: 300px; font-size: 24px; \" ><a style=\"text-decoration: none;\" href=\"index.php\">Login or Register<a></li> ");
无论如何,在我爸爸的Mac上,我今天测试的另一台电脑,我发现会话从未创建过。有帮助吗?也是我对stackoverflow的新手,请不要抨击我这篇文章,我的意思是从我听说过有关stackoverflow的一切,主要是对我这样的人有用,为什么会抨击甚至被允许,如果我在错误的部分张贴,请告诉我这样,并重定向我。它的专业性。谢谢你们。
答案 0 :(得分:0)
虽然您需要回答@ haynar1658的问题,但如果您在两个网页上都使用session_start()
,则可能是您的重定向问题:
header( 'Location: http://www.website/start.php' ) ;
(我假设您的意思是www.website.com
或类似的东西。)
如果您的网站同时以www.website.com
和website.com
提供,则在website.com
登录时会出现您所描述的问题。然后,您将在website.com
上打开会话,但www.website.com
上的不,因此在您重定向后,您会看到错误消息。
修改:要让您的会话跨子域工作,您可以使用以下内容:
$some_name = session_name("some_name");
session_set_cookie_params(0, '/', '.website.com');
session_start();
您使用session_start();
的所有地方。
另一种方法是使用.htaccess
文件之类的内容始终重定向到www
版本。
答案 1 :(得分:0)
session_start()
应位于保存到会话的页面上以及从会话中检索数据的页面上。
我通常在所有网页上包含的文件顶部都有session_start()
。