php会话变量未定义索引

时间:2015-02-04 08:34:28

标签: php session-variables

我有两个页面,我喜欢交换变量。在第一页我有这样的形式:

<form method='post' action='rehabCreate2.php' onsubmit='return validateForm();'>
<input class="textbox" type='text' id='txt_stuNum' name='txt_stuNum'/ required>

<input type="submit" value="NEXT" id="btnNext">
</form>

然后我将会话变量设置为:

if ( isset( $_POST['btnNext'])){
$stuId=$_POST['txt_stuNum'];

$_SESSION["stuId"]=$stuId;
}

然后在我的page2中我想要它:

<?php
session_start();

$stuId=$_SESSION["stuId"];

echo $stuId;

?>

但它给了我错误:

注意:未定义的索引:stuId in ...

我错过了什么? 另一件事,我怎么能做一个&#34;后退按钮&#34;那些价值还在那里?

编辑: 最初我的&#34; session_start()&#34;位于page1的顶部,但当我将它转移到我的&#34;&#34; 此错误消息显示: 警告:session_start():无法发送会话缓存限制器 - 已在C:\ xampp \ htdocs \ cerecare \ portal \ rehabCreate中发送的标头(在C:\ xampp \ htdocs \ cerecare \ portal \ somepage.php:176处开始输出)。第16行的PHP

顺便说一下:somepage的第176行是脚本标记的结尾,其后没有其他内容

2 个答案:

答案 0 :(得分:1)

首先替换(给名称attr提交按钮以进行POST)

<input class="textbox" type='text' id='txt_stuNum' name='txt_stuNum'/ required>
<input type="submit" value="NEXT" id="btnNext">

<input class="textbox" type='text' id='txt_stuNum' name='txt_stuNum' required />
<input type="submit" value="NEXT" id="btnNext" name="btnNext">

在第1页上添加session_start()

session_start();
if (isset( $_POST['btnNext'])){
  $stuId=$_POST['txt_stuNum'];
  $_SESSION["stuId"] = $stuId;
}

然后在第2页上添加对会话值的检查

$stuId=(isset($_SESSION["stuId"]) ? $_SESSION["stuId"] :'');

答案 1 :(得分:0)

您忘记为提交按钮添加名称,但是无论何时使用任何变量,无论会话或局部变量是否确实存在。所以为了避免这个问题,请始终使用@Rakesh Sharma提供的这种代码。

 $var = isset($_SESSION['any_var']) ? $_SESSION['any_var'] : '';

或更好的方法来执行检查和减少计算错误使用像这样

$var = ( isset($_SESSION['any_var']) && !empty($_SESSION['any_var']) ? $_SESSION['any_var'] : '';

在语句中也总是使用这种风格

if ( isset($_SESSION['any_var']) && !empty($_SESSION['any_var'])){
   /// code in statement
}

在代码中始终使用这种代码,并且至少从未定义的索引错误中免费获取,如果值为空,则会出现一些计算错误。