PHP中的会话新手

时间:2014-01-24 14:42:02

标签: php html session

我正试图掌握会话,因为它是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'];

?>

3 个答案:

答案 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";
}
?>