php
  • javascript
  • jquery
  • mysql
  • ajax
  • 2011-12-18 12 views -2 likes 
    -2

    jQueryとAjaxを使用してユーザー入力を検証する単純な登録フォームがあります。 Ajaxが電子メールアドレスのサーバー側の検証を行い、データベースに接続しようとすると、結果は$msgで返されません。ここでAjaxを通してMySQLを渡す

    function checkUser() { 
        $search = mysql_query("SELECT * FROM users WHERE username = '" . $username . "'"); 
        $match = mysql_num_rows($search); 
    
        if($match > 0) { 
         $msg .= 'Username already in use, please try another.'; 
        } 
    } 
    

    はJSです:定義されていないあなたは$msg$usernameを使用しているあなたのcheckUser()機能では、

    function send(datastr) { 
        $.ajax({ 
         type: "POST", 
         url: "./scripts/addmember.php", 
         dataType: "text", 
         data: datastr, 
         cache: false, 
         success: function(html) { 
          $("#errordiv").fadeIn("slow"); 
          $("#errordiv").html(html); 
          //setTimeout('$("#errordiv").fadeOut("slow")',2000); 
         } 
        }); 
    } 
    
    +1

    ちょっとだけあなたが思っているならば、なぜダウン票(ない私)これはJSを介してSQLを渡しひどいアプリケーションの設計があります/ Ajax。あなたはあなたのデザインを再考したいかもしれません。 –

    +0

    addmember.phpを使用しないと、一般的な提案以外は何も与えにくいです。 – Purefan

    +0

    @DamenTheSifterとその理由でダウンvした人:タイトルが間違っています。 AjaxにSQLが渡されることはありません。最初のスニペットは* PHP *です。変数 '$ username'だけが表示されるので、おそらくSQLインジェクションに脆弱ではないでしょう。あなたはそれをエスケープしていますよね? – Ryan

    答えて

    3

    。あなたはそれらを残してしまったのですか、あるいはあなたはプログラミングの初心者です。

    PHPでは、通常、変数には単一の「スコープ」しかありません。これは、関数内で変数$msgにアクセスできないことを意味します(定義しない限り)。

    はJavaScriptで、これは有効です。

    PHPで
    var msg = ""; 
    function appendToMsg(text) { 
        msg += text; 
    } 
    appendToMsg("test"); 
    

    が、これではありません:これは予告PHPのお知らせをスローします

    $msg = ""; 
    function appendToMsg($text) { 
        $msg += $text; 
    } 
    appendToMsg("test"); 
    

    :未定義の変数: MSGを。機能appendToMsgは、$msgではなく、$textのみを認識します。

    小さなJavaScriptコードの正しいPHP表現は次のとおりです。

    変数のスコープに
    $msg = ""; 
    function appendToMsg(&$msg, $text) { 
        $msg += $text; 
    } 
    appendToMsg($msg, "test"); 
    

    より:

    0

    あなたは出力をechoする必要があります:

    echo 'Username already in use, please try another.'; 
    
    0

    あなたは$のMSG変数にテキストを設定した後に、これを書く:

    echo $msg; 
    
    関連する問題