我有两个页面,我喜欢交换变量。在第一页我有这样的形式:
<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行是脚本标记的结尾,其后没有其他内容
答案 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
}
在代码中始终使用这种代码,并且至少从未定义的索引错误中免费获取,如果值为空,则会出现一些计算错误。