0

別のファイルにいくつかのphpコードがあり、javascriptを使用して呼び出されています。しかし、phpコードは機能していません。代わりに、コードを div に入れるだけです。完全なコードがdivにあるように。このphpコードを実行するにはどうすればよいですか

私のJavaScript関数は次のようになります:

function checklogin(){
    var xmlhttp;
    if (window.XMLHttpRequest)
      {
      xmlhttp=new XMLHttpRequest();
      }
     xmlhttp.onreadystatechange=function()
      {
      if (xmlhttp.readyState==4 && xmlhttp.status==200)
        {
          if(xmlhttp.responseText='FAILED')
            {alert('failed');};
        }
      }

      var Usrname
      Usrname=document.getElementById("edtLoginUsername").text;
    xmlhttp.open("GET","DatabaseFunctions.php?Username="+Usrname,true);
    xmlhttp.send();};

そして私のPHPコードは次のようになります:

<?php
      $myServer = "example.com";
      $myUser = "dbuser";
      $myPass = "dbpass";
      $myDB = "efarm"; 

      //connection to the database
      $dbhandle = mssql_connect($myServer, $myUser, $myPass)
        or die("Couldn't connect to SQL Server on $myServer"); 

      //select a database to work with
      $selected = mssql_select_db($myDB, $dbhandle)
        or die("Couldn't open database $myDB"); 

      //declare the SQL statement that will query the database
      $query = "SELECT COUNT(*) FROM Users WHERE Username=myQuoteString('$_GET(USERNAME)')'"; 

      //execute the SQL query and return records
      $result = mssql_query($query);

      echo 'FAILED';
      //close the connection
      mssql_close($dbhandle);
      ?>

私はすでに httpd.conf ファイルを確認し、php がインストールされ、構成されていることを確認しました

4

2 に答える 2

2

あなたをチェックして、代わりにMS SQL Connection使用してください$_GET['Username']$_GET(USERNAME)

 $query = "SELECT COUNT(*) FROM Users 
         WHERE Username='".$_GET['Username']."'"; 
于 2013-08-07T07:59:12.210 に答える
0

あなたの問題はここにあります:

"...myQuoteString('$_GET(USERNAME)')'";

これは、PHP の構文として正しくありません。この小さなコードだけでも、約 5 つの間違いがあります。

  • $_GETは関数ではなく配列であるため、丸括弧ではなく角括弧が必要です。
  • USERNAME括弧内の値$_GETは文字列であるため、引用符で囲む必要があります。
  • myQuoteString()は関数呼び出しです。つまり、クエリ文字列内に含めることはできません。
  • の周りに引用符がありますが$_GET、これも正しくありません。

ああ。

myQuoteString()SQLクエリで使用するために変数をエスケープし、引用符を追加する、あなたが書いた関数だと思いますか?

その場合、コードは次のようにする必要があります。

$query = "SELECT COUNT(*) FROM Users WHERE Username=".myQuoteString($_GET['USERNAME']); 

がそれをすべて行わない場合myQuoteString()は、それを行うか、入力変数を別の方法でエスケープする必要があります。そうしないと、ハッキング攻撃に対して脆弱になるためです。

(よくわからない場合は、引用符を含む名前でフォームを投稿してみてください。適切にエスケープしないと、プログラムが失敗します)

それが役立つことを願っています。

于 2013-08-07T08:50:46.017 に答える