2016-02-11 14 views
-1

好吧,所以我正在嘗試創建一個聯繫表單,驗證用戶輸入以防止黑客提交代碼並嘗試僅需要數字,文本和電子郵件。我已經設計了表單並導入了我的php文件。該聯繫人將發送給我的Gmail帳戶。但每次我測試的PHP它允許輸入任何類型的數據,無論它是否應該是一個數字和字母提交和其他方式。如果我能夠得到一些幫助,告訴我我出錯的地方會很棒。我是編程初學者,只有我從學校收到的知識,但我很擅長html和css,但在php驗證方面存在問題。表單發送電子郵件,但正如我所說,它允許任何和所有輸入。聯繫表單和輸入驗證的問題

<?php 
$name = $_POST['name']; 
$tel = $_POST['tel']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$from = 'From: www.webdesignheros.com'; 
$to = '[email protected]'; 
$subject = 'Service Email for HeenanTech'; 
    $tel = filter_input(INPUT_POST, 'tel', FILTER_SANITIZE_INT); 
    $name = filter_input(INPUT_POST, 'name', FILTER_SANITIZE_STRING|FILTER_FLAG_NO_ENCODE_QUOTES); 
    $email = filter_input(INPUT_POST, 'email', FILTER_VALIDATE_EMAIL); 
    $message = filter_input(INPUT_POST, 'message', FILTER_SANITIZE_STRING|FILTER_FLAG_NO_ENCODE_QUOTES); 

$body = "From: $name\n Phone: $tel\n Email: $email\n Message: $message\n"; 
?> 

<?php 
if ($_POST['submit']){ 
    if(mail($to, $subject, $body, $from)){ 
    echo'<p>Thank you for your email!</p>'; 
    } else { 
    echo '<p> Oops! Something went wrong, try sending your message again</p>'; 
    } 
} 

?> 

此外,該表可在[http://webdesignheros.com/Contact.html][1]

[1]中找到:http://webdesignheros.com/Contact.html,如果有人能告訴我如何拒絕某些輸入之前提交,這將是真棒太。比如如果輸入了無效的條目,並且它們移動到下一個輸入,它將拒絕它並且不讓提交按鈕被按下。我會在HTML中使用pattern="a-z"還是我需要爲此添加JavaScript?

+1

究竟是不是在這裏工作?那是你所有的代碼還是比那更多? – Maximus2012

+0

你有客戶驗證? (javascript,f.e. jquery-validate - http://jqueryvalidation.org/) – Altenrion

+0

1)我不認爲有任何FILTER_SANITIZE_INT,但有FILTER_SANITIZE_NUMBER_INT。 2)數字在使用字母時被認爲是字符串。例如:「My123」是一個有效的字符串。 – mrunion

回答

2
<?php 
    if (isset($_POST["submit")){ 
$name = $_POST["name"]; 
    $tel = $_POST["tel"]; 
    $email = $_POST["email"]; 
    $message = $_POST["message"]; 
    $from = "From: www.webdesignheros.com"; 
    $to = "[email protected]"; 
    $subject = "Service Email for HeenanTech"; 
    $body = "From: $name\n Phone: $tel\n Email: $email\n Message: $message\n"; 
    mail($to, $subject, $body, $from); 

     if(mail($to, $subject, $body, $from)){ 
     echo'<p>Thank you for your email!</p>'; 
     } else { 
     echo '<p> Oops! Something went wrong, try sending your message again</p>'; 
     } 
    } 

    ?> 
+0

謝謝你,工作很好。如果陳述我忘記了'isset'!它可以刪除特殊字符。 – Tony