我知道这方面有几个主题,但经过几个小时的阅读,我仍然不知道出了什么问题。
我正在index.php上建立一个登录屏幕的调查。用户需要插入他们的姓名并提交表格。用户名应该保存并传递到setup.php.
这是我的index.php:的一部分
<?php
session_start();
print session_id();
?>
<form id="login" method="POST" action="setup1.php">
<input id="participant" name="participant" type="text" size="20"/>
<input type="submit" name="start" value="Start"/>
</form>
<?php
$name = $_POST['participant'];
$_SESSION['username'] = $name;
?>
setup1.php:的启动
<?php
session_start();
print session_id();
print_r($_SESSION);
echo $_SESSION['username'];
?>
我的$_SESSION变量为空,我在setup.php下一页上没有打印任何内容。如果您能提供帮助,我将不胜感激。
您的$_POST
代码位于错误的文件中。您的表单将转到setup1.php
,但您正试图在index.php
中设置$_SESSION
。
你需要把它从那里拿出来,放在setup1.php
:中
<?php
session_start();
if (!isset($_POST['participant'])) {
die('No $_POST data');
}
$_SESSION['username'] = $_POST['participant'];
print session_id();
print_r($_SESSION);
echo $_SESSION['username'];
?>
此外,请确保您使用的是$_SESSION
,而不是%_SESSION
。我希望这只是一个拼写错误。
设置$_SESSION['username']
时,表单尚未提交,即$_POST['participant']
没有值。
您应该将下面的代码从index.php移到setup.php
<?php
$name = $_POST['participant'];
$_SESSION['username'] = $name;
?>
index.php
<?php
session_start();
?>
<form id="login" method="POST" action="setup1.php">
<input id="participant" name="participant" type="text" size="20"/>
<input type="submit" name="start" value="Start"/>
</form>
setup1.php
<?php
session_start();
if(isset($_POST['participant']) && ! empty($_POST['participant']))
{
$_SESSION['username'] = $_POST['participant'];
echo $_SESSION['username'];
}
?>`