我有两个页面,我喜欢交换变量。 在第一页中,我有这样的表单:
<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;
}
然后在我的第 2 页中,我想要它:
<?php
session_start();
$stuId=$_SESSION["stuId"];
echo $stuId;
?>
但它给了我错误:
注意:未定义的索引:stuId 在...
我错过了什么?还有一件事,我怎样才能制作一个"后退按钮"并且值仍然存在?
编辑:最初我的"session_start()"放在页面1的顶部,但是当我将其转移到我的"下方时此错误消息显示:警告:session_start():无法发送会话缓存限制器 - 标头已发送(输出从 C:''xampp''htdocs''cerecare''portal''somepage.php:176 开始),在第 16 行 C:''xampp''htdocs''cerecare''portal''rehabCreate.php
顺便说一下:Somepage 的第 176 行是脚本标签的末尾,后面没有其他内容
第一次替换(给一个名字 attr 提交按钮以进入开机自检)
<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"] :'');
您忘记为提交按钮添加名称,但此外,每当您使用任何变量时,无论是会话还是局部变量,请确保它是否存在。 因此,为了使自己免于这个问题,请始终使用@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
}
始终在代码中使用这种风格的代码,并且至少在未定义的索引错误和一些计算错误(如果值为空)中免费。