未设置PHP会话变量


PHP session variable not being set

我知道这方面有几个主题,但经过几个小时的阅读,我仍然不知道出了什么问题。

我正在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']; }?>`