我使用的是Win XP操作系统和XAMPP。我使用eclipse作为编辑器。在Eclipes中,我无法重定向下一页,所以现在我已经安装了Zend Development Environment。
现在我也遇到了同样的问题。
我的代码是
HomePage.php
<html>
<body>
<form name="Form1" id="FormId" action="Welcome.php" method="post">
name : <input type="text" name="txtName">
Phone Number : <input type="text" name="txtPnum">
<input type="submit" name="SubmitIt" value="Submit It">
</form>
</body>
</html>
And Welcome.php is
<?php
ob_start();
session_start();
if(!($_SESSION['UName']))
{
$_SESSION['UName']=$_POST['txtName'];
}
if(!($_SESSION['Ph Num']))
{
$_SESSION['Ph Num']=$_POST['txtPnum'];
}
?>
<html>
<body>
Welcome <?php
if(isset($_SESSION['UName']))
{
echo $_SESSION['UName'];
}
else
{
echo "Session not set<br/>";
echo "{$_SESSION['UName']}";
echo "The session contains <br>";
print_r($_SESSION);
}
?>
</body>
</html>
它在浏览器中正常工作(重定向到下一页),但它在调试模式下无效。在Eclipse和Zend Development Environment中都有。
而不是显示下一页的内容,它显示页面名称。(在我的示例中为Welcome.php)。
我是否需要安装任何其他额外的软件或代码本身....这是什么问题。请建议我。
提前致谢....!
答案 0 :(得分:2)
哪个部分应该进行重定向,我没有看到任何标题('Location:redirect.php')或其他东西
为什么在这里使用ob_start()。
你没有释放输出缓冲区添加ob_get_clean();最后
<?php
ob_start();
session_start();
if(!($_SESSION['UName']))
{
$_SESSION['UName']=$_POST['txtName'];
}
if(!($_SESSION['Ph Num']))
{
$_SESSION['Ph Num']=$_POST['txtPnum'];
}
ob_end_flush();
?>
<html>
<body>
Welcome <?php
if(isset($_SESSION['UName']))
{
echo $_SESSION['UName'];
}
else
{
echo "Session not set<br/>";
echo "{$_SESSION['UName']}";
echo "The session contains <br>";
print_r($_SESSION);
}
?>
</body>
</html>
答案 1 :(得分:0)
尝试在代码末尾添加此内容我很确定这是因为您没有释放输出缓冲区,尽管我认为应该自动完成它
echo ob_get_clean();
<强>更新强>
我不确定你为什么在这里使用$ _SESSION变量,但是你想解决这个问题,你可以使用例如$ uname而不是$ _SESSION ['UName'];
Welcome.php
<?php // at the beginning of your file, no spaces or newline
session_start();
$uName=$_POST['txtPnum'];
$txtPnum=$_POST['txtPnum'];
$_SESSION['UName'] = $uName;
$_SESSION['PhNum'] = $uName;
?>
<html>
<body>
Welcome <?php echo $_SESSION['UName']; ?>
</body>
</html>
你摆脱了ob开始,因为你仍在调试你的代码。并一次尝试一步。 祝你好看。