-2

私はコーダーではないので、本当に助けが欲しいと言うことから始めます。

私のcontact.phpフォームはこのエラーメッセージを返し続けます:

Invalid email address entered 

サーバーでテストしたとき。

このcontact.phpフォームを別のWebサイトで使用しましたが、正常に機能します。PHPコードが非推奨になっている可能性があることを読みましたが、修正方法がわかりません。

これはphpコードです:

<?php

if(!$_POST) exit;

$email = $_POST['email'];


//$error[] = preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i',     $_POST['email']) ? '' : 'INVALID EMAIL ADDRESS';
if(!preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i',$email )){
$error.="Invalid email address entered";
$errors=1;
}
if($errors==1) echo $error;
else{
$values = array ('name','email','message');
$required = array('name','email','message');

$your_email = "dimasir@yahoo.com";
$email_subject = "New Message: ".$_POST['subject'];
$email_content = "new message:\n";

foreach($values as $key => $value){
  if(in_array($value,$required)){
    if ($key != 'subject' && $key != 'company') {
      if( empty($_POST[$value]) ) { echo 'PLEASE FILL IN REQUIRED FIELDS';     exit; }
    }
    $email_content .= $value.': '.$_POST[$value]."\n";
  }
}

if(@mail($your_email,$email_subject,$email_content)) {
    echo 'Message sent!'; 
} else {
    echo 'ERROR!';
}
}
?>

元のメモを編集****これは私のHTMLコードです:

                <form method="post" action="contact.php"> 
                  <input type="hidden" name="send" value="1" />
                    <fieldset>                      
                        <label>First Name </label>
                        <input name="" type="text" class="filed1" />
                        <label>Last Name</label>
                        <input name="" type="text" class="filed1" />
                            <label>Your Email  </label>
                        <input name="" type="text" class="filed1" />
                        <label>Company</label>
                        <input name="" type="text" class="filed1" />
                        <label>Message </label>
                        <textarea name="" cols="" rows="" ></textarea>
                        <input type="image" src="images/send.jpg" />

                    </fieldset>
              </form>
            </div>
            <!--  \ CONTACT BOX / -->

          </div>

4

2 に答える 2

1
if(!preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i',$email )){
    $error.="Invalid email address entered";
    $errors=1;
}

これでなければなりません:

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
    $error .= "Invalid email address entered";
    $errors = 1;
}

PHP には、正規表現を使用するよりも高速で正確な電子メール アドレスを検証する組み込み関数filter_var()があります。

次のHTML コードを使用します(残りの属性は必ず入力してください)

<label>First Name </label>
<input name="f_name" type="text" class="filed1" />
<label>Last Name</label>
<input name="l_name" type="text" class="filed1" />
    <label>Your Email  </label>
<input name="email" type="text" class="filed1" />
<label>Company</label>
<input name="company" type="text" class="filed1" />
<label>Message </label>
<textarea name="message" cols="" rows="" ></textarea>
<input type="image" src="images/send.jpg" />
于 2013-02-27T23:03:31.053 に答える
1

次のように行を変更します

if(!preg_match('/\b[A-Z0-9._%-]+@[A-Z0-9.-]+\.[A-Z]{2,4}\b/i',$email )){

の中へ

if(!preg_match('/^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)* @[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,})$/',$email )){.

これで問題は解決するはずです。

これでうまくいかない場合は、;に変更$email = $_POST['email'];してみてください。$email = urldecode($_POST['email'])

于 2013-02-27T22:34:45.823 に答える