0

PHP と Javascript アラート ボックスを使用して、登録検証システム (登録されたユーザーが有効な情報を持っていることを確認するため) を作成したいと考えていました。ユーザーがフィールドを正しく実行しないたびに、それが間違っていることを示す警告ボックスが表示されるようにします。だからここにあります:

コード #1 - PHP でアラートを生成するため (これはボタンのイベント用です)。

function alert($string)
{
    echo "javascript:alert('$string');";
}

コード 2onclick="" -送信ボタンの属性内に配置された PHP 。

if (!isset($fname) || empty($fname))
{
alert('Please enter your first name!');
}

elseif (!isset($lname) || empty($lname))
{
    alert('Please enter your last name!');
}


elseif (!isset($gender) || empty($gender))
{
    alert('Please specify your gender!');
}

elseif (!isset($phone) || empty($phone) || strlen($phone) != 10)
{
    alert('Please enter your correct Phone Number!');
}

elseif (!isset($user) || empty($user) || strlen($user) > 10 || strlen($user) < 5)
{
    alert('Please enter a Username that is 5-10 characters long!');
}

elseif (!isset($pass) || empty($pass) || strlen($pass) > 10 || strlen($pass) < 5)
{
    alert('Please enter a Password that is 5-10 characters long!');
}

elseif (!isset($repass) || empty($repass) || $pass != $repass)
{
    alert('Please repeat your Password');
}

    else
    {
         $query = mysql_query($query_send_form);
         query_error($query);
    }

お気づきかもしれませんが、変数は実際$_POSTにはフォーム内のフィールドの値と同じです。

したがって、問題は、ボタンの onclick が常に同じであるというonclick=" javascript:alert('Please enter your first name!');"ことです。変更されません。

システムに代わる完全な javascript を提供しないでください。とりあえず PHP を学びたいのです。

事前にご協力いただきありがとうございます。

編集#1

忘れていた重要な点は、フォーム ターゲットは同じページの iframe にすぎないため、ユーザーが入力したコンテンツはエラーが表示されている間も保持されるということです。

<form method="post" target="frame" action="register.php">

register.phpフォーム HTML と検証 PHP があるページと同じです。

編集#2

データ掲載中です。宣言された変数は次のとおりです。

@$fname = $_POST['fname'];
@$lname = $_POST['lname'];
@$gender = $_POST['gender'];
@$phone = $_POST['phone'];
@$user = $_POST['user'];
@$pass = $_POST['pass'];
@$repass = $_POST['repass'];
4

2 に答える 2

0

魔法の引用符がオンになっていない限り (そうでないことを願っています)、 などの値$fnameは常に未定義になります。おそらくそれらを に置き換えたいと思うでしょう$_POST['fname']

ちなみに、値が設定されていない場合はが返されるので、使用empty()せずに使用できます。!isset()empty()FALSE

于 2013-08-03T19:11:55.193 に答える