2012-01-14 147 views
1

我開發了一個文本框,並試圖將此數據寫入文本文件。 PHP代碼正在生成文件,但數據未被寫入。下面 是我的代碼:將文本框中的數據寫入文本文件

<html> 
<body> 
<form name="form" method="post"> 
<input type="text" name="text_box" size="50"/> 
<input type="submit" id="search-submit" value="submit" /> 
<? 
[email protected]$_POST["text_box"]; 
$myFile = "t.txt"; 
$fh = fopen($myFile, 'w') or die("can't open file"); 
fwrite($fh,$a); 
fclose($fh); 
?> 

回答

1

表單的提交操作是「get」,但在您的PHP代碼中,您通過$ _POST獲取變量。請試試$ _GET。

+0

沒有幫助 – Pink 2012-01-14 06:07:29

0

是否$a有數據嗎?試試echo。或者,嘗試print_r'您的$_POST

編輯:您的表單的方法是get,但您正在嘗試使用$_POST。使用$_GET$_REQUEST

1

該表格發出GET請求,但您正試圖訪問$_POST["text_box"]。嘗試將其更改爲$_GET['text_box'],或使用表單方法POST代替。

+0

我改成了兩個「取」和「後」,但仍可以寫入文件 – Pink 2012-01-14 06:01:53

1

您可以只需更換你的PHP代碼:

if ($_REQUEST) { 
    file_put_contents("t.txt", $_REQUEST["text_box"]); 
} 

這將確保該文件當表單提交實際上只被覆蓋的,也沒有顯示錶單時。

+0

我嘗試$ _REQUEST,但它仍然沒有寫入文本文件 – Pink 2012-01-14 06:00:31

+0

啓用的error_reporting 。 – mario 2012-01-14 06:01:22

+0

啓用但沒有得到任何錯誤 – Pink 2012-01-14 06:08:06

3

我看到你的代碼最大的問題是你不打開php標籤。你做

<? 

,但它應該是

<?php 

那麼,你的方法調用$ _ POST和寫入文件和材料是指當你第一次形式加載到瀏覽器以及它會被執行。 php引擎不會區分第一次運行和連續運行。這意味着即使用戶沒有提交任何內容,仍然會有一個空文件,該文件是通過顯示錶單的腳本運行創建的。這是一個副作用。我修改了一下你的代碼。這裏是我拿到這個:

<html> 
    <body> 
     <form name="form" method="post"> 
      <input type="text" name="text_box" size="50"/> 
      <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); 
    } 
?> 
+0

我用上面的代碼,它仍然沒有做任何事情,而且即使文件t.txt沒有創建 – Pink 2012-01-14 07:12:51

+0

@Pink很奇怪。該代碼在我的wamp上運行在32位Windows XP上。你的設置是什麼?聽起來像是也許有一個文件權限錯誤.. – davogotland 2012-01-14 08:05:25

+0

我沒有使用wamp或xampp並在64位窗口上運行此腳本7.我沒有線索與文件權限 – Pink 2012-01-14 08:36:28