PHP中的Session不起作用,为什么?

6ioyuze2  于 2023-04-04  发布在  PHP
关注(0)|答案(7)|浏览(158)

我有这个代码登录过程:

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

当我签到的时候,所以下一页写:
注意:未定义变量:届会
有谁能告诉我,出了什么问题吗?

j1dl9f46

j1dl9f461#

你需要使用form方法来传递输入值。像这样修改你的代码:

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

fhg3lkii2#

会话未保存,因为在if条件下,您检查的是变量submit而不是$_GET['submit'],并且您没有指定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中的方括号

9fkzdhlc

9fkzdhlc3#

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

session_start();

这样就只有php能够存储你的会话变量了。

jv4diomz

jv4diomz4#

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

ruoxqz4g

ruoxqz4g5#

确保在第一个<?php标签之前没有空格或任何其他文本
即使在开始的<?php标记之前有一个空格也会导致会话失败。之后,您需要在顶部附近的某个地方使用session_start();session_start();是第一个并不重要,只要它在引用任何会话变量之前就可以了。
通常,任何使用会话变量的页面都会像这样开始:

<?php 
session_start();
iih3973s

iih3973s6#

我注意到如果你在会话中使用交替大写,例如$_SESSION ['isLogin'],当重定向到另一个页面时,它不会保持会话。解决方案:使用大写或小写(区分大小写)

muk1a3rh

muk1a3rh7#

<div id="login">
    <form>
        <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="sing in">
    </form>
</div>
<?php
    session_start();

    if(isset($_REQUEST['submit'])) {
        $_SESSION["user"] = $_GET["user"];
        $_SESSION["password"] = $_GET["password"];
    }

    print_r($_SESSION);
?>

输出:

Array ( [user] => test [password] => 123 )

相关问题