【发布时间】:2017-09-14 05:45:23
【问题描述】:
我遇到了一个我找不到答案的问题,我很少在这里提问,但我很困惑。任何帮助将不胜感激。
这是接收 Ajax 调用的 PHP。
<?php
session_start();
$_SESSION["my_data"] = $_POST['action'];
$DB_HOSTNAME = 'localhost';
$DB_USERNAME = 'username';
$DB_PASSWORD = 'password';
$link2 = mysqli_connect($DB_HOSTNAME,$DB_USERNAME,$DB_PASSWORD) or die('Unable to establish a DB1 connection');
mysqli_select_db($link2, '$DB_USERNAME');
$orderQuery = mysqli_query($link2, "SELECT * FROM table WHERE id='".$_SESSION['my_data']."'");
$orderQuery = mysqli_fetch_assoc($orderQuery);
$orderInfo = "
<table class='table table-striped'>
<tbody>
<tr>
<td>#: </td>
<td>". $_SESSION['my_data'] ."</td>
</tr>
<tr>
<td> Full name: </td>
<td>". $orderQuery['firstname'] . " " . $orderQuery['lastname'] ."</td>
</tr>
<tr>
<td> Address: </td>
<td> ". $orderQuery['shipping_address_1'] ."<br> ". $orderQuery['shipping_city'] . " " . $orderQuery['shipping_zone'] . " " . $orderQuery['shipping_postcode'] ." </td>
</tr>
<tr>
<td> Card Expiry Date Month: </td>
<td> 08 </td>
</tr>
</tbody>
</table><br>
";
echo $orderInfo/* . $_POST['action']*/; ?>
这是进行调用的脚本。
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>
var myWindow;
function myFunction() {
myWindow = window.open('', '_blank');
myWindow.document.write("<link rel='stylesheet' type='text/css' href='stylesheet.css'>");
var orderNum;
orderNum = document.getElementsByClassName('summary_value')[0].innerHTML;
orderNum = orderNum.replace("#", "");
$.ajax( { type : 'POST',
data : {'action':orderNum},
url : 'process.php',
success: function ( data ) {
myWindow.document.write( data );
},
error: function ( xhr ) {
alert( "error" );
}
});
myWindow.document.write("<br>");
myWindow.document.write(document.getElementById("payInfor").innerHTML);
}
</script>
<button onclick='myFunction()' class="btn btn-default">Print Pay Info</button>
这可能是一个简单的问题,但我看不到。
我知道 Ajax 正在工作,因为它显示了一些信息 ($_SESSION['my_data']),所以我认为这与我的 SQL 语句有关,但语法看起来是正确的。
【问题讨论】:
-
你遇到了什么错误?
-
mysqli_select_db($link2, '$DB_USERNAME');当你有单引号时,它不会是一个变量,而是那个确切的字符串。然后,为 PHP 启用错误报告并检查控制台是否有任何 JS 错误,让 MySQLi 使用mysqli_error()告诉您那里的任何错误(或设置 MySQLi 以抛出异常)。通过获取脚本向您抛出的错误进行调试始终是第一站!那么你应该使用参数化查询,你已经有一个支持它的API。 -
接受信用卡付款的网站上存在 SQL 注入漏洞?哇
-
@andrew 一旦代码正常运行,我就会添加清理和安全性。此外,此页面受管理员密码保护,并且有权访问的人不够精通技术,不知道什么是 sql 注入。不过,感谢您注意到这一点。
标签: javascript php html sql ajax