我正试图掌握会话,因为它是PHP的一部分,我不是很好。你能帮我解释一下这两页上发生的事情吗?它给出了一个未定义的索引,我不知道为什么。
由于
档案1
<strong>Test Form</strong>
<form action="test2.php" method"post">
<input type="text" name="picturenum"/>
<input type="submit" name="Submit" value="Submit!" />
</form>
<?php
// starting the session
session_start();
if (isset($_POST['Submit'])) {
$_SESSION['picturenum'] = $_POST['picturenum'];
}
?>
文件2
<?php
session_start();
echo $_SESSION['picturenum'];
?>
答案 0 :(得分:6)
session_start()
必须位于页面顶部:
<?php
session_start();
// Opening <html>, etc goes below
?>
<strong>Test Form</strong>
<form action="test2.php" method"post">
<input type="text" name="picturenum"/>
<input type="submit" name="Submit" value="Submit!" />
</form>
<?php
if (isset($_POST['Submit'])) {
$_SESSION['picturenum'] = $_POST['picturenum'];
}
?>
答案 1 :(得分:1)
据我所知,你是在第一个文件中的表单之后开始会话。规则是:您应该在任何echo
或任何HTML输出之前启动会话,甚至在空格之前。所以,基本上session_start()
应该是<?php
之后的第一行
那你怎么去第二页呢?如果您关闭浏览器然后重新打开它,那么会话当然不会持久,您将获得未定义的索引。
如果您需要任何进一步的解释,请对此发表评论。
答案 2 :(得分:1)
这有效:
表格(teste1.php)
<?php
session_start();
// Opening <html>, etc goes below
?>
<strong>Test Form</strong>
<form action="test2.php" method"post">
<input type="text" name="picturenum"/> <!-- make sure you type something here -->
<input type="submit" name="Submit" value="Submit!" />
</form>
文件2(test2.php)
<?php
if (isset($_POST['picturenum'])) {
$_SESSION['picturenum'] = $_POST['picturenum'];
echo $_SESSION['picturenum'];
}else{
echo "something wrong with the POST";
}
?>