PHP会话变量未设置

时间:2015-04-07 13:43:20

标签: php session

我知道有几个主题,但经过几个小时的阅读后,我仍然无法弄清楚出了什么问题。

我正在使用index.php的登录屏幕构建调查。用户需要插入他们的名字并提交表格。用户名应保存并传递给setup1.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上没有打印任何内容。如果你能提供帮助,我将不胜感激。

3 个答案:

答案 0 :(得分:4)

您的$_POST代码位于错误的文件中。您的表单将转到setup1.php,但您尝试在$_SESSION中设置index.php

您需要将其取出并放入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。我希望这只是一个错字。

答案 1 :(得分:0)

设置$_SESSION['username']时,您的表单尚未提交,即$_POST['participant']没有值。

您应该将下面的代码从index.php移到setup1.php

<?php
$name = $_POST['participant'];
$_SESSION['username'] = $name;
?>

答案 2 :(得分:0)

的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']; } ?&GT;`