2012-11-06 103 views
0

可能重複:
「Warning: Headers already sent」 in PHPSession變量沒有被存儲

爲什麼這個不行?我期望看到輸入到first.php文本框中的任何內容顯示在test.php中。

<html> 
<body> 
<form action="test.php"> 
Test: <input type="text" name="test" /> 
<br> <input type="submit" name="submit" /> 
    <?php 
    session_start(); 
    $_SESSION['test'] = $_POST['test']; 
    ?> 

</body> 
</html> 

這裏是test.php的

<?php 
    session_start(); 
    $check = $_SESSION['test']; 
    echo $check; 
    ?> 
+0

您沒有在會話中保存測試值 –

+1

我們是否啓用了'error_reporting'呢? – mario

+0

它看起來像你指向表單test.php之前設置它的表單頁面上。 – Brutnus

回答

2

在session_start()必須outputing任何東西(甚至沒有空格)到瀏覽器之前被調用。

你開始HTML後會在頁面的第一行開始會話像

<?php 
session_start(); 
print_r($_SESSION); 
if(isset($_POST['submit'])){ 
    $_SESSION['test'] = $_POST['test']; 
} 
?> 
<html> 
    <body> 
     <form method="post" action="addimageprocess.php"> 
      Test: <input type="text" name="test" /> 
      <br> 
      <input type="submit" name="submit" /> 
     </form> 
    </body> 
</html> 
+0

謝謝。這是有道理的,我已經做出了你建議的修改,但它仍然無法正常工作。 – user1613223

+0

@ user1613223現在試試這個 –

+0

@ user1613223如果你有任何進一步的查詢或有關我的回答的錯誤,比讓我知道我解決不了問題 –

1

session_start()應設置任何頭被髮送之前(即在頁面的最頂端)

0

PHP代碼在實際的POST完成之前執行,因爲PHP是服務器端語言。那時,實際上沒有$ _POST數組。

此代碼,從您的例如。

<?php 
    session_start(); 
    $_SESSION['test'] = $_POST['test']; 
?> 

$_POST發佈(或存在)到test.php頁面。

0

你的主腳本中的PHP沒有做你想做的事情,實際上只是在最好的情況下保存垃圾和null。你需要的逆PHP腳本,把

<?php 
session_start(); 
$_SESSION['test'] = $_POST['test']; 
?> 

在test.php的和

<?php 
session_start(); 
$check = $_SESSION['test']; 
echo $check; 
?> 

主要PHP

0

如果您使用的是Web服務器,而你確實有

<?php 
session_start(); 
$_SESSION['test'] = $_POST['test']; 
?> 

但它仍然沒有存儲會話,那麼你將需要檢查saved_pa​​th

<?php 
    phpinfo(): 
    ?> 

在會話頭下查看會話:save_path是否已設置並確保它存在於服務器上。如果它是一個網絡服務器,那麼你將不得不聯繫你的主機爲你設置保存路徑。