2015-06-08 43 views
1

我有以下形式:PHP表單驗證:凡撲通代碼

<!doctype html><html><head><link href="css/home.css" rel="stylesheet" type="text/css"></head><body><form> 
     <?php 
      if (isset($_REQUEST['email']))   
      { 
       $email = $_REQUEST['email'] ; 
       $subject = "Email submission" ; 
       $message = "Message body here" ; 
       mail("[email protected]", $subject, 
        $message, "From:" . $email); 
        header('Location: /thanks.html'); 
      }  
     else 
     { 
      echo "<form method='post' action='index.php'> 
      Email: <br><input name='email' type='text'><br><br> 
      <input type='submit'> 
      </form>"; 
     } 
    ?> 
    </form></body></html> 

這工作得很好,但最近提交空白電子郵件領域已經開始未來通過。我一直試圖讓8個或更多字符在這個片段中驗證電子郵件字段是允許的形式之前提交:

if (strlen($input) < 8){ echo "Please enter a valid email";} 

無論我把代碼,頁面返回500內部錯誤在負載和沒有顯示。我確信有一些基本的東西讓我做錯了,也許我一直在盯着屏幕太久,但如果有人能指導我如何讓它按照它應該的方式運作,那會很棒。

+1

'$ input'沒有被定義,你可能想測試'$ _POST ['email]'。 –

+0

你知道你可以使用:!!filter_var($ email,FILTER_VALIDATE_EMAIL)'驗證電子郵件嗎?你也可以在if(mail())函數中加一個if語句來檢查它是否已經發送 – SuperDJ

+0

我只是補充說,最好把php代碼放在一個單獨的文件中,並且要求它如果有帖子請求 –

回答

0

簡短回答: 您試圖訪問由於您提到的問題中的代碼而未定義的$ input。 嘗試,而不是:

if (trim($_POST['mail']) == '') {return "Sorry, input mail is blank"; } 

強的解決方案:

反正就算你用這樣的驗證,你仍然會得到垃圾郵件或提交。您需要植入驗證碼並使用會話標記來確保人員向前發送表單,這可能不是現在的問題,但是將來會出現黑洞。

+0

你的意思是說if(trim($ _ POST ['email'])=='')? 如果是這樣,這個片段應該放在我放置的最頂端的代碼塊中? – gerendasi