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
变量中。
您需要使用表单方法来传递输入值。
像这样更改您的代码:
<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();
我有这个登录过程代码:
<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
变量中。
您需要使用表单方法来传递输入值。 像这样更改您的代码:
<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();