-2

データベースと通信するためにこのニュースレター購読フォームを設定していますが、情報 (電子メール) を送信する前に、それを検証したいだけです。ただし、間違ったデータまたは空のデータを入力すると、両方のエラー メッセージが表示されます。私はPHPの専門家ではありませんが、いくつかの閉じ括弧か何かが欠けているようです..しばらくいじって成功しなかったので、もう一度助けを求めます:)

<?php
$host = "XXX";
$username = "name";
$password = "XXX";
$database = "base";
$connect = @mysql_connect($host, $username, $password) or die (@mysql_error());
$selectdb = @mysql_select_db($database, $connect) or die (@mysql_error());


if(isset($_POST['submit'])){
$email = $_POST['email'];
if(empty($email)){
    echo "Hmm, you did not anything..";
    }
    if (!preg_match(
    "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
    $email_address))
    {
    echo "This email not valid";
    }
    else{
    @mysql_query("INSERT INTO newsletters SET email='$email'");
    echo "Thanks you";
}

}
?>

ありがとうございました!!

4

3 に答える 3

1

現在、次の構造を使用しています。

if (condition) {

}
if (condition) {

}
else (condition) {

}

構造を次のように変更します。

if (condition) {

}
elseif (condition) {

}
else (condition) {

}

そうelseifすれば、最初の if ステートメントが と評価された場合にのみ、ステートメントが実行されFALSEます。

また、あなたのpreg_matchステートメントでは$email_address、私が見る限り、どこにも定義されていない変数を使用しています。

次のように変更し$emailます。

if (!preg_match(
    "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
    $email))

お役に立てれば!

于 2013-08-29T12:33:48.493 に答える
0

このように使用するのはどうですか(正規表現をチェックしませんでした):

if(empty($email)){
    echo "Hmm, you did not anything..";
}
else{
    if (!preg_match(
    "/^[_a-z0-9-]+(\.[_a-z0-9-]+)*@[a-z0-9-]+(\.[a-z0-9-]+)*(\.[a-z]{2,3})$/i", 
    $email_address)){
         echo "This email not valid";
    }
    else{
         @mysql_query("INSERT INTO newsletters SET email='$email'");
         echo "Thanks you";
    }
}

そうすれば、最初に電子メールが挿入されているかどうかを確認し、それが真の場合にのみ正規表現が確認します。準備ができている場合、クエリは mysql に送信されます。

于 2013-08-29T12:34:27.077 に答える
-1

交換するだけ

if (!preg_match(

elseif (!preg_match(

次に、このエラーの 1 つだけが表示され、$email が空でないときに preg_match が最初に実行されます。

于 2013-08-29T12:33:00.360 に答える