PHP 中的会话不工作。为什么?

Session in PHP not working. Why?

我有这个登录过程代码:

<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();
?>

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

Notice: Undefined variable: _session

谁能告诉我,哪里出了问题?

这可能是因为您忘记在 php 文件上启动会话。 尝试添加

session_start();

每个页面都有功能。那么只有 php 能够存储您的会话变量。

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

PHP Documentation: Session examples

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

<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"];
}
?>

会话未保存,因为在 if 条件下您正在检查变量提交而不是 $_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 标签前 没有 space 或任何其他文本

即使在开始 <?php 标记之前的单个 space 也会导致会话失败。之后你需要 session_start(); 靠近顶部的地方。 session_start(); 是第一个并不重要,只要它在您引用任何会话变量之前出现即可。

通常任何使用会话变量的页面都会像这样开始:

<?php 
session_start();