2014-01-24 55 views
0

我试图去掌握会话,因为它是PHP的一部分我不太擅长。你能帮我解释一下我在这两页上发生的事情吗?它给出了一个未定义的索引,我不知道为什么。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

哪个是你的'test2.php',是“文件1”还是“文件2”? – Rikesh

+4

在调用session_start()之前,您不允许输出任何内容。在任何输出之前重新排列代码,使其位于文件的顶部。 – MasNotsram

+0

test2是文件2. – Strobes

回答

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

另外如何提及关于打开PHP错误? – Rikesh

+0

它必须已经开始获取他们得到的错误 –

+0

或更好:**阅读错误日志**。 – AD7six

1

至于我可以看到, 你是 在第一个文件中的表单之后开始会话。规则是:您应该在之前的任何echo或任何HTML输出之前开始会话,甚至在空格之前。所以,基本上,session_start()应该是<?php之后的第一行。
然后,你如何到达第二页?如果关闭浏览器然后重新打开它,当然会话将不会持续,您将得到未定义的索引。
如果您需要进一步解释,请对此评论。

+0

我进入下一页的方式是通过表单操作,这是正确的吗? – Strobes

+0

Strobes