作者:hwydaniel | 来源:互联网 | 2023-01-13 10:45
我正在尝试使用一种表单,该表单在提交时会将简单SQL查询的输出返回到页面上,而无需重新加载(AJAX).我可以得到简单的输出,但是当我使用PHP进行SQL查询时,不会返回任何内容.
我正在尝试使用一种表单,该表单在提交时会将简单SQL查询的输出返回到页面上,而无需重新加载(AJAX).我可以得到简单的输出,但是当我使用PHP进行SQL查询时,不会返回任何内容.任何帮助将非常感激.我也无论如何也无法检查我的Javascript / Php有什么问题.
对于Web开发而言,这是很新的内容,因此,如果这很琐碎,则表示歉意.以前找到的所有解决方案均无效
我的代码;
a1.php
scriptget.js
function getAccount(){
var phpOut = $.ajax({
type: 'GET',
url: 'submitInjection.php',
data: 'myusername=billsmith&mypassword=password'
});
drawOutput('hello');
return false;
}
function drawOutput(responseText){
var cOntainer= document.getElementById('output2');
container.innerHTML = responseText;
}
Submitinjection.php
$host="localhost"; //Host Name
$username="root"; // MySql Username
$password="root"; // Mysql Password
$db_name="Honours2"; //Database Name
$tbl_name="Users"; // Table Name
// Connect to server and select database
$cOnn= mysql_connect("$host", "$username", "$password") or die("Cannot Connect");
mysql_select_db("$db_name") or die("Cannot select DB");
// User and Password sent from form
$myusername = $_GET['myusername'];
$mypassword = $_GET['mypassword'];
/**
Protect MYSQL INJECTION
$myusername = stripslashes($myusername);
$mypassword = stripslashes($mypassword);
$myusername = mysql_real_escape_string($myusername);
$mypassword = mysql_real_escape_string($mypassword);
*/
$sql = "SELECT *
FROM $tbl_name
WHERE username = '$myusername'
AND password = '$mypassword'
";
$result=mysql_query($sql);
/* echo $sql; */
if (!$result){
die('Invalid Query: ' . mysql_error() . $sql);
}
if ($result){
echo($sql);
}
/* var_dump($result); */
while ($row = mysql_fetch_assoc($result)){
echo $row['username'];
echo ": ";
echo $row['balance'];
}
mysql_free_result($result);
$conn->close();
?>
提前致谢
解决方法:
您需要在成功函数中处理ajax调用的结果.您也可以使用.done()或$.when().then()之类的东西,请查看jQuery手册.
一个使用成功函数的简单示例:
var phpOut = $.ajax({
type: 'GET',
url: 'submitInjection.php',
data: 'myusername=billsmith&mypassword=password',
success: function(data_returned) {
alert(data_returned);
// or
$('#output2').html(data_returned);
}
});
一些附加说明:
>不要使用GET将敏感信息发送到服务器,而应使用POST;
>不要存储纯文本密码,不要添加盐和哈希值;
>不建议使用mysql_ *函数,您应该切换到mysqli_ *或PDO,在这里可以使用准备好的语句来避免sql注入,从而避免了转义.