2013-07-25 126 views
3

我寫了一個HTML表單,只是用一個電子郵件字段。我想將用戶輸入的電子郵件 輸入到我的Web服務器上的文本文件中。使用PHP寫入HTML表單的文本文件使用PHP

當我點擊提交按鈕,我得到一個白色的屏幕。沒有任何內容寫入我的文本文件。 我也想在點擊提交按鈕時將用戶重定向到另一個頁面。 這可能嗎?我是一個新手。

<?php 

$file = fopen("emaillist.txt","a+"); 
fwrite($file,$email); 
fclose($file); 
print_r(error_get_last()); 

?> 

<form action= "emaillist.php" method="post" name="email "> 
<input type="text" name="email"> 
<br> 
<br> 
<input type="submit" name="email" value="submit"><br> 
+0

您根據'register_globals'被激活。它不是PHP中不推薦和刪除的錯誤功能。您的代碼也試圖追加到該文件,無論是否實際執行POST ... –

+0

您有兩個名稱相同的

'。對於初學者來說,將你的'<表單名稱>重命名爲別的東西。 –

回答

0

您提交按鈕和輸入元素和表單,具有相同的名稱「電子郵件」。首先要做的是給他們不同的名字。

表單的名稱還包含一個額外的空間「email」。

+0

謝謝大家。現在我可以寫入一個文本文件。從電子郵件重命名爲其他名稱幫助。現在文本文檔中的所有電子郵件都在同一行上。我知道你需要在php代碼中有一個/ n。不確定究竟在哪裏。此外,標題標記不會重定向,即使我已經在PHP代碼中。我不是JEDI YET!多謝你們。 – user2620377

+0

你的意思是'\ n';)。請注意,表單的'name'屬性現在還沒有真正使用。儘管給表單一個'id',可以被JavaScript使用。 –

1

除了什麼安迪庚說有關更改提交按鈕的名稱:

<?php 
//Get the email from POST 
$email = $_REQUEST['email']; 
$file = fopen("emaillist.txt","a+"); 
fwrite($file,$email); 
print_r(error_get_last()); 

//redirect 
header("Location: http://www.example.com/"); 

不要離開<?php和文件的開頭之間的空白行,否則重定向將無法正常工作。

0

在php theres中,一個名爲$_POST的數組在您發佈時會存儲表單中的所有變量。所以$email將在$_POST['email']

1

被發現提交結果將被存儲在$_POST變量:

<?php 

$file = fopen("emaillist.txt","a+"); 

$email = $_POST['email']; 

fwrite($file,$email); 
fclose($file); 
print_r(error_get_last()); 

?> 
1

試試這個,使用不同的名稱提交按鈕還檢查提交按鈕被按下比寫入文件。您還沒有拿到貼email

<?php 
if(isset($_POST['submit'])) 
{ 
    $email = $_POST['email']; 
    $file = fopen("emaillist.txt","a+"); 
    fwrite($file,$email); 
    fclose($file); 
    print_r(error_get_last()); 
} 
?> 
<form action= "" method="post" name="form"> 
<input type="text" name="email"> 
<br> 
<br> 
<input type="submit" name="submit" value="submit"><br> 
</form> 
+0

''?有些東西肯定會出問題。 –

+0

@Fred yup他在代碼中有這麼多錯誤,編輯了答案。謝謝! –

+0

你很歡迎Khawer :) –

0

你有幾件事情你需要更新在這裏:

表單元素需要有不同的名稱,這樣你就可以在它們之間的區別PHP服務器端代碼。這樣的事情:

<form action="emaillist.php" method="post"> 
    <input type="text" name="email" /> 
    <br /> 
    <br /> 
    <input type="submit" name="emailSubmit" value="submit" /> 
    <br /> 
</form> 

你需要包裝你的服務器端代碼在一個條件,以確保它是一個表單發佈。目前,當你第一次加載這個頁面時,它會寫入文件。但是,除非您使用表單數據重新回到頁面,否則沒有內容。所以你需要檢查它是否是表單文章。要做到這一點的常用方法是檢查提交按鈕在後數據中存在:

if (isset($_POST["emailSubmit"])) { 
    $file = fopen("emaillist.txt","a+"); 
    fwrite($file,$email); 
    fclose($file); 
    print_r(error_get_last()); 
} 

只是爲了確認,既然你說你是新來的PHP ......你以爲文件寫在服務器而不是客戶端上,是否正確?

要重定向到另一個頁面,您可以簡單地在服務器端PHP代碼中設置位置標題。這需要在任何內容發送到客戶端之前完成。由於您只想這一個事件後發生的,它應該是在相同的條件爲前:

if (isset($_POST["emailSubmit"])) { 
    $file = fopen("emaillist.txt","a+"); 
    fwrite($file,$email); 
    fclose($file); 
    print_r(error_get_last()); 

    header("Location: http://www.yoursite.com/newPage.php") ; 
} 
+0

寫在服務器上,而不是在客戶端上,你是正確的。感謝似乎現在正在工作,我得到了重定向工作,現在只需要在代碼中的某處放置\ n。 – user2620377

0
<?php 
if (isset($_POST['emailSubmit'])) { 
    $file = fopen('emaillist.txt','a+'); 
    $email = $_POST['nail']; 
    $fmail = $email.PHP_EOL; 
    fwrite($file,$fmail); 
    fclose($file); 
    print_r(error_get_last()); 

    header("Location: http://www.yourdomain.com/thanks.html") ; 
} 

?> 
<form action='emaillist.php' method='post'> 
    <input type='text' name ='nail' size= '30'/> 
    <br /> 
    <br /> 
    <input type='submit' name='emailSubmit' value='OK'/> 
    <br /> 
</form>