2014-01-24 93 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