2013-10-25 22 views
0

我是PHP新手,我無法弄清楚這一點。下面你會看到我的PHP電子郵件表格。問題是,如果用戶忘記輸入一個電子郵件,並寫了一個長信息,然後點擊提交。然後頁面將重新加載,並出現一條短信並說:您忘記了您的電子郵件。但是現在整個信息已經從表格中刪除了,他們必須重新寫下它。 我怎麼能迴應,他們忘記電子郵件或消息沒有重新加載頁面/刪除已輸入的信息。如何避免刪除PHP電子郵件表格中的文本如果它不完全完成

<?php 

function email() { 
$email = $_REQUEST['email']; 
$message = $_REQUEST['message']; 
if ($email) 
if ($message) 

{ 
//send email 
$to = "[email protected]"; 
$subject = "xxx" ; 
$from = $_REQUEST['email'] ; 
$message = $_REQUEST['message'] ; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
header('Location: sent/'); 
exit(); 
} 
else { 
echo "You forgot your message."; 
} 
else { 
echo "You forgot your email."; 
} 
} 
?> 

<form class="mail_form" accept-charset="ISO-8859-1" method='POST'> 
<input class="input_mail" name='email' type='text' placeholder="Your email"> 
<textarea id="textarea_mail" accept-charset="ISO-8859-1" name='message' cols="30" rows="5" placeholder="Your message"></textarea> 
<input class="send_mail" type='submit' name='submit'> 
</form> 

<?php if(isset($_POST['submit'])) 
{ 
echo email(); 
} 
?> 

+0

搜索如何驗證表單 –

+0

您可能需要考慮在JavaScript中添加一些客戶端驗證。 –

回答

0

您需要將相關的$_POST值添加到該字段中。如果有任何它會顯示消息:

<form class="mail_form" accept-charset="ISO-8859-1" method='POST'> 
    <input class="input_mail" name='email' type='text' placeholder="Your email" value="<?php echo @$_POST['email']; ?>"> 
    <textarea id="textarea_mail" accept-charset="ISO-8859-1" name='message' cols="30" rows="5" placeholder="Your message"> 
     <?php echo @$_POST['message']; ?> 
    </textarea> 
    <input class="send_mail" type='submit' name='submit'> 
</form> 

<?php 
    if(isset($_POST['submit'])) 
    { 
     echo email(); 
    } 
?> 
+0

完美!我可以在電子郵件輸入上也做同樣的事情嗎? – David

+0

@大衛當然!你只需要在電子郵件輸入上使用相同的邏輯。更新了我的答案。 – revo

0

使用POST把一切交給下一個頁面。在那裏,你在他們使用隱藏域,並保存所有菱值:

<input type="hidden" value="<?php echo $_POST['value']; ?>" /> 

當缺少的東西,用一個提交按鈕,使用戶返回到最後一頁,並再次用POST你把一切都回到最後一頁。

0

只是回顯信息,如:

<textarea id="textarea_mail" accept-charset="ISO-8859-1" name='message' 
    cols="30" rows="5" placeholder="Your message"> 
<?php echo $_REQUEST['message']; ?> 
</textarea> 

,但如果你涉足了一下Java腳本或jQuery的,你可以在被提交前驗證表單。

0

打電話給你的$消息

<textarea id="textarea_mail" accept-charset="ISO-8859-1" name='message' 
cols="30" rows="5" placeholder=" 
<?php if(isset($message)) { echo $message; } else { echo "Your message";} ?>" > 
    </textarea> 

不要忘記

unset($message); 


function email() { 
$email = $_REQUEST['email']; 
$message = $_REQUEST['message']; 
if ($email) 
if ($message) 

{ 
//send email 
$to = "[email protected]"; 
$subject = "xxx" ; 
$from = $_REQUEST['email'] ; 
$message = $_REQUEST['message'] ; 
$headers = "From:" . $from; 
mail($to,$subject,$message,$headers); 
header('Location: sent/'); 
exit(); 
unset($message); 
unset($mail); 
} 
else { 
echo "You forgot your message."; 
} 
else { 
echo "You forgot your email."; 
} 
} 
?> 

當郵件被髮送

+0

感謝您的回答。正如我寫的,我是PHP的新手。但是你寫的最後一件事是:unset($ message); 這是爲了安全嗎?我在哪裏添加該功能?對菜鳥的問題抱歉! :) – David

+0

發送郵件時,最好清空變量。表單將再次爲空。 我會編輯我的帖子,以便您瞭解放置位置。 – ColoO