我正在尝试显示会话信息,例如用户名,当用户通过登录页面登录时,会话必须捕获用户输入的用户名并应显示在页面中。下面我尝试了php脚本,但它没有回应用户名,请在脚本中检查错误,提前谢谢。
<?php
session_start();
$_SESSION['test']= $_POST['myusername'];
$name= $_SESSION['test'];
echo $name;
?>
<form action="login.php" method="post">
<p>Username</p>
<input name="myusername" type="text" id="myusername" required>
<p>Password</p>
<input name="mypassword" type="password" id="mypassword"required></br>
<button><img src="http://icons.iconarchive.com/icons/webiconset/application/32/Register-icon.png" /></button>
</form>
login.php
我得到的输出是,只是它转到下一页而不显示用户名。
答案 0 :(得分:2)
在之后调用session_start()
之前,您无法访问会话数据。所以你的第一个if语句是不必要的,也是有问题的,因为你无法检查会话变量是否存在,直到之后你开始你的会话。另外,请确保在您希望使用会话的每个页面的顶部调用session_start()
。
<?php
session_start();
$_SESSION['test']= $_POST['myusername'];
答案 1 :(得分:0)
您必须先修改会话开始与否。您可以使用此代码版本 PHP&gt; = 5.4.0 进行检查: -
if (session_status() !== PHP_SESSION_ACTIVE) {session_start();}
或
if (session_status() == PHP_SESSION_NONE) {
session_start();
}
或通过此代码版本 PHP&lt; 5.4.0 强>: -
if (session_id() === "") { session_start(); }
然后,您只需将它们打印为数组即可查看所有会话存储的值。
echo "<pre>";
print_r($_SESSION);
然后您可以像这样为会话分配你的帖子变量值。
$_SESSION['test']= $_POST['myusername'];
echo $_SESSION['test'];
答案 2 :(得分:0)
您在发布前设置会话。请使用以下代码。
login.php
<?php
if(isset($_POST['myusername']))
{
// your code
session_start();
$_SESSION['test']= $_POST['myusername'];
}
?>
<form action="login.php" method="post">
<p>Username</p>
<input name="myusername" type="text" id="myusername" required>
<p>Password</p>
<input name="mypassword" type="password" id="mypassword"required></br>
<button><img src="http://icons.iconarchive.com/icons/webiconset/application/32/Register-icon.png" /></button>
</form>
newpage.php
<?php
session_start();
echo $_SESSION['test'];
?>