2012-10-15 49 views
-2

我是一個PHP新手,所以請忍受我這個相當簡單的問題。PHP窗體仍然發送錯誤後

我有一個PHP的形式設置,像這樣>>

<?php 
    if($_POST){ 
     $name = $_POST['name']; 
     $email = $_POST['email']; 
     $message = $_POST['message']; 
     $comments = $_POST['comments']; 

     if($comments) 
      $error = "There was an error, please give us a call at ### ###-####."; 
     else{ 
      if($name=="Name" || $email=="Email" || $message=="Message"){ 
       $error = "All fields are required, please fill them out and try again."; 
      }else 
      $header = "From: $name <$email>"; 
       $message = "Name: $name\n\nEmail: $email\n\nMessage: $message"; 
       if(mail("[email protected]", 'Form Submission', $message, $header)) 
        $success = "Thanks for sending us your message, we'll get back to you shortly."; 
       else 
        $error = "There was an error, please give us a call at ### ###-####."; 
     } 
     if($error) 
      echo '<div class="msg error">'.$error.'</div>'; 
     elseif($success) 
      echo '<div class="msg success">'.$success.'</div>'; 
    } 
?> 

的基本思路是,形式已經描述性文本預填在各個領域,但是當你點擊它們它們是通過JavaScript清除。我想阻止人們在填寫表單時按下發送,因此「if($ name ==」Name「|| $ email ==」Email「|| $ message ==」Message「){」bit 。但是,儘管該消息正在工作,但表單仍在提交。爲什麼是這樣。另外請注意,「評論」字段實際上是一個蜜罐。謝謝!

+0

爲什麼倒票? OP承認他是一個新手。他試圖解決的問題非常普遍(簡單的表單驗證),他只是在想當PHP應該思考Javascript的時候。根據每個計算器,您應該在帖子「非常草率,不費力的帖子」時投票。所以懶惰的問題,而不是作爲一個新手。 – Landon

回答

5

因爲php是服務器端。你需要查看JavaScript驗證你想要的。要使用php進行驗證,您必須提交表單。

一個tutorial但我建議jQuery的validation

+0

好了解。感謝您的答覆。 – Pieter

+0

建議使用PHP驗證,因爲它更安全。你必須檢查字符串不僅是爲了存在,還要檢查空白和mysql注入或html/javascript,並確保你使用utf 8,所以你不會有這些問題:「'〜〜$ <>?#?äåéþþúúßðøμñ這也可以確保字符如下:''「」不會阻止你的PHP編碼,當使用javascript進行驗證時,黑客可以刪除瀏覽器中的js,併發送表單,因此請務必使用此服務器側!!! – botenvouwer

+0

@sirwilliam也可以禁用JavaScript,從而繞過所有js驗證。這就是爲什麼你必須總是從php檢查。 – Iznogood

0

「我想,以防止有人按下發送表格填寫不出來,因此,‘如果($名稱==’名稱」 || $電子郵件== 「Email」|| $ message ==「Message」){「

所有你需要做的就是禁用提交按鈕客戶端,直到符合正確的驗證,然後驗證服務器端。@Iznogood說,這是爲什麼你的開始你的錯誤

0

像lznogood說,PHP驗證服務器上的窗體,所以你需要發送的信息在PHP可以處理它之前將其提供給服務器。

如果你想在發送給服務器之前在用戶端檢查表單,你應該使用JavaScript來做到這一點(jQuery是一個很好的工具),在用戶端檢查後,你可以決定是否將表單發送到服務器。

0

雖然這不是您的問題的答案,但您可能會對新的html5功能placeholder感興趣。閱讀關於它here。您可以查看它在here(愚蠢的Internet Explorer!)中工作的瀏覽器。 5年前,我會把這些「暗示」作爲價值,這是一個很難驗證的問題。 placeholder使它更容易。您的代碼看起來像:

<input type="text" name="email" placeholder="Enter Your Email Here" value="">

注意值爲空。你可以省略value屬性,我把它留在這裏顯示它不需要。

至於你原來的問題的答案,其他人都是正確的,JavaScript是要走的路。

相關問題