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 语法。仅这一小段代码就有大约五个不同的错误。

  • $_GET是一个数组,而不是一个函数,所以它需要方括号,而不是圆括号。
  • USERNAME括号内的值$_GET是一个字符串,因此也必须用引号引起来。
  • myQuoteString()是一个函数调用,这意味着它不能在查询字符串中。
  • 你有引号$_GET,这也是不正确的。

哎哟。

我假设这myQuoteString()是您编写的一个函数,它转义用于 SQL 查询的变量并添加引号?

在这种情况下,您的代码需要如下所示:

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

如果myQuoteString()不这样做,您需要确保它可以这样做,或者您以其他方式转义您的输入变量,否则您将容易受到黑客攻击。

(如果您不确定,请尝试使用包含引号字符的名称发布您的表单;如果您没有正确转义,这将导致程序失败)

希望有帮助。

于 2013-08-07T08:50:46.017 回答