2016-04-15 7 views
0

PHPスクリプトを拡張するのに助けが必要です。必要なフィールドとサインアップフォーム内の電子メールフィールドの検証が必要です。必要なフィールドと検証でPHPフォームを拡張

これは私のコードですが、別のifとechoコードを使用しようとしましたが、この中で何も動作しません。

コードが動作
<?php 

$email = $_POST['email']; 
$from = $email; 

$to = "[email protected]"; 
$subject = "SIGN UP"; 

$emailbody = ""; 
$emailbody .= "Email: " . $email . "\n"; 

$header = ""; 
$header .= "From:" . $from . " \n"; 
$header .= "Content-Type:text/plain;charset=utf-8"; 

// Sending message 
$success = mail($to, $subject, $emailbody, $header); 

if ($success){ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
} 
else{ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
} 
?> 

、電子メールが配信されますが、フィールドが記入されていない場合、フォームは成功ではありません。事前にありがとうございます。

+0

私の回答は役に立ちますか? – Hassaan

答えて

0

そうちょうどそれがemptyまず、およびvalidate itだかどうかを確認、電子メールを使用して、POSTから収集している唯一のものであることが表示されます:

<?php 

if(!empty($_POST['email']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){ 

    $email = $_POST['email']; 
    $from = $email; 

    $to = "[email protected]"; 
    $subject = "SIGN UP"; 

    $emailbody = ""; 
    $emailbody .= "Email: " . $email . "\n"; 

    $header = ""; 
    $header .= "From:" . $from . " \n"; 
    $header .= "Content-Type:text/plain;charset=utf-8"; 

    // Sending message 
    $success = mail($to, $subject, $emailbody, $header); 

    if ($success){ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
    } 
    else{ 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
    } 
} 
else echo "email required"; 
?> 

をそして、それは、サーバーを打つ前に、あなたはあなたのユーザーを助けるかもしれませんまずクライアント側の検証を行い、input is an emailis requiredを確認してください。

0

電子メールフィールドが空でないことを確認してからfilter_varを使用して、提供された電子メールを検証できます。

ここ

<?php 
if(!empty($_POST['email']) && (!filter_var($email, FILTER_VALIDATE_EMAIL) === false)) 
{ 
    $email = $_POST['email']; 
    $from = $email; 

    $to = "[email protected]"; 
    $subject = "SIGN UP"; 

    $emailbody = ""; 
    $emailbody .= "Email: " . $email . "\n"; 

    $header = ""; 
    $header .= "From:" . $from . " \n"; 
    $header .= "Content-Type:text/plain;charset=utf-8"; 

    // Sending message 
    $success = mail($to, $subject, $emailbody, $header); 

    if ($success) 
    { 
     print "<meta http-equiv=\"refresh\" content=\"0;URL=confirmation_signup.html\">"; 
    } 
    else 
    { 
    print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
    } 
} 
else print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">"; 
?> 
+0

これは私のために働いた!ありがとうございました!しかし、私は別の問題を抱えています - 多分あなたも解決策を持っています... –

+0

@DietrichMöllerそれはなんですか? – Hassaan

0

問題が固定されている例であるが、別の問題が現れました。 HTMLフォームはメールを正しく送信しません。私は6つのメールアドレスを試しました。誰かがフォームを提出すると、そのメールがそのメールに送信されることもあります。私は普通のmail()コマンドを使わないことについて聞いた。誰かが私にこれについて教えてもらえますか?

<?php 
if(!empty($_POST['email']) && !empty($_POST['name']) && !empty($_POST['message']) && (!filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false)){ 

$name = $_POST['name']; 
$email = $_POST['email']; 
$message = $_POST['message']; 
$from = $email; 
$to = "[email protected]"; 
$subject = "SUPPORT"; 

$emailbody = ""; 
$emailbody .= "Full name: " . $name . "\n"; 
$emailbody .= "Email: " . $email . "\n"; 
$emailbody .= "Message: " . $message . "\n"; 

$header = ""; 
$header .= "From:" . $from . " \n"; 
$header .= "Content-Type:text/plain;charset=utf-8"; 

$success = mail($to, $subject, $emailbody, $header); 

if ($success){ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/confirmation.html\">"; 
} 
else{ 
print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">"; 
} 
} 
else print "<meta http-equiv=\"refresh\" content=\"0;URL=de/error.html\">"; 
?> 
関連する問題