PHP中的会话无法正常工作。为什么?

问题描述:

我对登录过程验证码:PHP中的会话无法正常工作。为什么?

<div id="login"> 
<form action="ButtonClicker.php"> 
<label for="user">User</label> 
<input type="text" id="user" name="user" tabindex="1" autofocus> 
<label for="password">Password</label> 
<input type="password" id="password" name="password" tabindex="2"> 
<input type="submit" value="sing in"> 
</form> 
</div> 
<br> 
<?php 
if(isset($submit)) { 
    $_SESSION["user"] = $_GET["user"]; 
    $_SESSION["password" = $_GET["password"]; 
} 
?> 

和下一页的我有这样的:

<?php 
echo $_SESSION["user"]; 
?> 

在这两个页面我之前整个代码:

<?php 
session_start(); 
?> 

当我登录,所以下一页写:

注意:未知变量:_session

有人可以告诉,怎么了?

+0

你有没有在所有的PHP文件session_start()? –

+2

我认为你应该使用大写字母作为像$ _SESSION ['user'],$ _GET ['user']这样的超级全局变量,并且确保你是否开始会话 –

会话没有因为如果条件正在检查的变量提交的,而不是$_GET['submit'],你也没有指定的名称提交按钮

<input type="submit" name="submit" value="sign in"> 
<?php 
if(isset($_GET['submit'])) { 
    $_SESSION["user"] = $_GET["user"]; 
    $_SESSION["password"] = $_GET["password"]; 
} 
?> 
保存未定义的变量的

错误是由于$_SESSION['user'] & ['password ']没有设置,因为$submit为NULL的变量,你也错过了关闭方括号中password

这可能是因为你忘了在你的php文件中开始会话。 尝试添加

session_start(); 

功能在每一页上。然后只有PHP将能够存储您的会话变量。

+0

他没有提到他在问题中的含义该功能在顶部的两个页面上? –

您需要调用session_start()函数,并将所有会话变量值存储在全局变量$_SESSION中。

PHP Documentation: Session examples

+0

他没有提到他在这两个页面上都有这个功能的问题吗? –

你需要用表格的方法来传递输入值。 更改您这样的代码:

<div id="login"> 
<form method="post"> 
<label for="user">User</label> 
<input type="text" id="user" name="user" tabindex="1" autofocus> 
<label for="password">Password</label> 
<input type="password" id="password" name="password" tabindex="2"> 
<input type="submit" name="submit" value="sign in"> 
</form> 
</div> 
<br> 
<?php 
if(isset($_POST["submit"])) { 
    $_SESSION["user"] = $_POST["user"]; 
    $_SESSION["password"] = $_POST["password"]; 
} 
?> 
+0

不需要使用POST因为默认方法是GET,'他为什么没有指定它,但你的想法是好的 –