0

私はjqueryとajaxにかなり慣れていないので、すべてのフォームに取り入れようとしています。もっと単純な形をすることもできますが、これは私を困惑させました。事実は次のとおりです。

1.少なくとも1つの入力フィールドに入力する必要があります

2.すべての入力ファイルはmysqli_queryを介してチェックされます

3.入力フィールドにmysqlにない値がある場合、foreachループが中断し、その値変数がエコーされ、その後に「メンバーではありません」が続きます。

問題は、「success」または「fail」をエコーし​​て、それをajaxの「successfunction(response)」で使用して何かを行うことができることですが、変数値を取得して、次のようなアラートに組み込むにはどうすればよいですか?alert( // $ value //はメンバーではありません)?これがphpです:

foreach($_POST as $value)
{
    $usercheck =  "SELECT email FROM users WHERE email = '$value'";
    $usercheck = $db->query($usercheck);

    if($usercheck->num_rows !== 0 || $value =="") 
    {
        $x="1";
    } 
    else 
    {
        $x="2";
    }
    break;
}

if($value == "") 
{
    echo "none filled in";
} 
else
    if ($x == "1")
    {
        echo "all filled boxes are users";
    } 
    else 
    {
        echo $value." is not a user";
    }
4

2 に答える 2

0

のように検証が通過したときにメッセージを送り返すのが最善"ok"です。次に、ajaxが成功すると、メッセージが正しいかどうかを確認でき、"ok"そうである場合は、目的の場所にリダイレクトできます。有効でない場合は、返されたメッセージを処理してください。

$.ajax({
   url:'/path/to server'/,
   success:function(response){
      if(response=='ok'){
         /* do redirect*/
         window.location='someOtherpage';
      }else{
         $('#formErrorElementID').text( response);
     }
  }
});

ユーザーが移動する特定のURLを返送する必要がある場合は、JSONを使用するように応答を変更し、次のようなものを返送できます。

{ "status": "ok", "url": "newPage.php"}

また

{ "status": "fail", "message": "is not a user"}

次にAJAXでsuccess

    if(response.status=='ok'){
         /* do redirect*/
         window.location=response.url;
      }else{
         $('#formErrorElementID').text( response.message);
     }
于 2013-01-26T22:16:53.883 に答える
0

スタック交換へようこそ!

まず、SQL プロシージャーの重大なセキュリティー・ギャップについて言及したいと思います。クエリを実行するときはいつでも、インジェクション攻撃を防ぐためにエントリをサニタイズする必要があります。これを行ういくつかの方法は、準備済みステートメントを使用することです。このようにして、潜在的に悪意のあるユーザー入力は実行されません。

$usercheck = $db->prepare("SELECT email FROM users WHERE email = ?");
$usercheck->execute(array($value));

前述のように、JSONオブジェクトは多くの言語と互換性のあるオブジェクト構造であるため、最も実用的だと思います。最後の 3 つの「エコー」は、それぞれ次のようになります。

echo json_encode(array("success" => false, "message"=> "Empty field found."));
...
echo json_encode(array("success" => true, "message"=> "all filled boxes are users"));
...
echo json_encode(array("success" => false, "message"=> $x."is not a user."));

JavaScript 側では、次のようになります。

..., function(response) {
    result = JSON.parse(response);
    (result.success) ? ...success code... : alert(result.message);
});

必要に応じて、PHP から渡すオブジェクトは異なります。

お役に立てれば。

于 2013-01-26T22:42:39.527 に答える