2012-02-01 97 views
0

我有以下腳本,它從用戶處獲取數據並使用PHP寫入文件。 我面臨的問題是,當我使用「表單操作」指向頁面時,頁面被重定向,但腳本的其餘部分未執行,這意味着沒有新的數據寫入文件,但是當我將表單操作留空時,數據被寫入。 以下是代碼:PHP頁面獲取重定向而不執行腳本的其餘部分

<html> 
<body> 
    <form action="page.php" method="post"> 
     <input type="text" name="text_box"/> 
     <input type="submit" id="search-submit" value="submit" /> 
    </form> 
</body> 
</html> 
<?php 
if(isset($_POST['text_box'])) { //only do file operations when appropriate 
    $a = $_POST['text_box']; 
    $myFile = "t.txt"; 
    $fh = fopen($myFile, 'w') or die("can't open file"); 
    fwrite($fh, $a); 
    fclose($fh); 
} 
?> 
+1

我不明白。 – 2012-02-01 20:26:05

+1

您發佈的代碼是'page.php'嗎?另外,'size ='不是有效的HTML屬性。 – 2012-02-01 20:26:07

+0

不,這是index.php,我正在將它指向page.php。另外 我已經刪除了大小參數。 – Pink 2012-02-01 20:29:00

回答

1

PHP不會自動保存它。您需要提交表單,然後用給定的數據執行。

此外,你的fopen使用'w'截斷該文件,然後寫入它。因此,每次保存時,新數據都不會附加到結尾,它會替換當前數據。

另外,這個文件叫'page.php'嗎?我可以用代碼考慮的唯一其他解決方案是將PHP代碼移到文件頂部,在<html>之前。

+0

這個文件是Index.php,是的,我正在提交表單。正如你在代碼中看到的,當我將表單動作留空時。數據被寫入文本文件。 – Pink 2012-02-01 20:32:59

0

當有人提交表單時,它會將它們轉換爲'page.php'。無論該文件中的PHP是否被執行。上述文件中的任何PHP(即不在page.php中)都不會被執行 - 它永遠不會被讀取。

撇開:我會檢查一個像Yii或CodeIgniter這樣的PHP框架來幫助你。爲您處理很多這些問題。

1

您正在將表單提交到page.php,但您的表單處理邏輯位於index.php。那是什麼導致你的問題。

要麼提交到index.php而不是page.php,要麼只是將表單處理邏輯移動到page.php

+0

我想從index.php中獲取數據並將其寫入文本文件,稍後我將其導向處理書面文本文件的新頁面page.php。現在,當我離開表單操作時,空白數據被寫入,但是當它被導向到page.php時,它不會被寫入 – Pink 2012-02-01 20:40:07

+1

您不明白PHP如何工作。PHP在將頁面發送到服務器端的客戶端之前運行。它完全運行,然後將輸出發送到客戶端。如果你不提交表單,腳本顯然不會運行。如果您將表單提交到與您需要的腳本不同的頁面,該表單將不會運行(因爲信息會發送到其他頁面)。 – 2012-02-01 20:41:54

相關問題