2012-04-18 125 views
1

我有一个网站需要用户名和密码。如果输入正确,则会创建用户名会话变量。但是,当我进入另一个页面并检查是否设置了变量时,我得到了错误信息。会话变量未被取消设置

这是我设置变量的代码。

$ username = $ _POST [“username”]; $ password = $ _POST [“password”];

if ($username == "right username" || $password == "rigthpassword"){ 

    session_start(); 

    $_SESSION["username"] = "aadsj2als378909382lkklja"; 
    $_SESSION["password"] = "ajklsd89798798jlk09779023"; 

} 

然后我有一个PHP脚本来检查,如果一个用户登录,如果用户在登录,然后它去到一个网页,如果没有它去到另一个网页。但是,它要到页面,它应该去,如果用户没有然而,用户登录被记录下来。

<?php session_start(); 

    if(!isset($_SESSION["username"])){ 

     header('Location:http://website.com/page1.php'); 

    } else { 

     header('Location:http://website.com/page2.php'); 

    } 

?> 

所以我登录后我点击但是运行此脚本的链接。而不是带我到第2页,它把我带到第1页。它不应该。

任何想法?

+0

仅供参考'$用户名== “正确的用户名” || $ password ==“rigthpassword”'。我想你想''&&'不''' – 2012-04-18 04:06:41

+0

谢谢你。但是这不会导致问题。 – user541597 2012-04-18 04:07:42

+0

看起来你的2页在不同的域名。 'website.com'和'webpage.com'。这只是一个错字吗?还是他们真的在不同的领域。 – 2012-04-18 04:08:34

回答

0
  1. session_start();功能使用顶部的页面(PHP的一个踏歌后不换行)

2如果($用户名== “rightusername” & & $密码== “rigthpassword”){

$_SESSION["username"] = "aadsj2als378909382lkklja"; 
$_SESSION["password"] = "ajklsd89798798jlk09779023"; 

}

改变这样的代码,测试$用户名,密码$内容..

+1

添加换行符不会改变任何'<?php session-start()'是完全可以接受的PHP代码。 – 2012-04-18 04:17:46

+0

这也没有工作。 – user541597 2012-04-18 04:22:33

+0

当这些变量已经设置好后,你在print_r($ _ SESSION)'时会返回什么?你拼写正确吗? – Phix 2012-04-18 04:29:00

0

好吧,这可能会有点明显,但机智h这...

if ($username == "right username" || $password == "rigthpassword"){ 

    session_start(); 

    $_SESSION["username"] = "aadsj2als378909382lkklja"; 
    $_SESSION["password"] = "ajklsd89798798jlk09779023"; 

} 

你如何检索这些值?我假设你正在使用post方法。这意味着它应该是更多的性质...

if ($_POST['username'] == "right username" || $_POST['password'] == "rigthpassword"){ 
session_start(); 

     $_SESSION["username"] = "aadsj2als378909382lkklja"; 
     $_SESSION["password"] = "ajklsd89798798jlk09779023"; 
    } 

我的猜测是,你必须不正确地发送变量。你可以发布你的登录表单的代码吗?

的login.html

<form method="POST" action="http://mysite.com/login.php"> 
<input type="text" name="username"> 
<input type="password" name="password"> 
<input type="submit"> 
</form> 

的login.php

<?php 
session_start(); 
if ($_POST['username'] == "password" && $_POST['password'] == "password") { 
$_SESSION['username'] == "aadsj2als378909382lkklja"; 
$_SESSION['password'] == "ajklsd89798798jlk09779023"; 
} 
?> 

otherpage.php

<?php 
session_start(); 
if (!isset($_SESSION['username'])){ 
header("location: http://website.com/page1.php"); 
} else { 
header("location: http://website.com/page1.php"); 
} 
?> 
+0

登录工作正常。这不是问题。 – user541597 2012-04-18 05:08:54

+0

基于你的代码,它应该工作得很好。所以我唯一的假设是,不知何故变量没有被正确发送。如果情况并非如此,那么我认为你不会发布哪些内容会导致问题。 – Ian 2012-04-18 05:12:12

+0

我发现当我执行session_start()而不是继续上一次会话时,会创建不同的会话。 – user541597 2012-04-18 05:16:18