Javascript 使用准备好的语句从AJAX POST插入数据时出错
我目前正在创建一个Facebook画布游戏,目前我有一个php脚本,可以将玩家数据(从AJAX帖子接收)插入我的数据库。这些数据通过Javascript函数从Facebook的Graph API中获取,然后通过AJAX发送到php脚本。现在一切都运行得很好,但对SQL注入来说并不安全 我想让我的SQL查询更安全,所以我一直在阅读准备好的语句、绑定参数/参数化语句和清理数据,但我发现这一切都有点混乱 我了解SQL注入是如何工作的,以及使用预先准备好的语句背后的想法,但在尝试插入AJAX接收到的数据时,我很难实现它。这是我最近的一次尝试:Javascript 使用准备好的语句从AJAX POST插入数据时出错,javascript,php,mysql,ajax,facebook-graph-api,Javascript,Php,Mysql,Ajax,Facebook Graph Api,我目前正在创建一个Facebook画布游戏,目前我有一个php脚本,可以将玩家数据(从AJAX帖子接收)插入我的数据库。这些数据通过Javascript函数从Facebook的Graph API中获取,然后通过AJAX发送到php脚本。现在一切都运行得很好,但对SQL注入来说并不安全 我想让我的SQL查询更安全,所以我一直在阅读准备好的语句、绑定参数/参数化语句和清理数据,但我发现这一切都有点混乱 我了解SQL注入是如何工作的,以及使用预先准备好的语句背后的想法,但在尝试插入AJAX接收到的数据
<?php
session_start();
require_once 'facebook-php-sdk-v4-4.0-dev/autoload.php';
use Facebook\HttpClients\FacebookHttpable;
use Facebook\HttpClients\FacebookCurl;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\Entities\AccessToken;
use Facebook\Entities\SignedRequest;
use Facebook\FacebookSession;
use Facebook\FacebookSignedRequestFromInputHelper;
use Facebook\FacebookCanvasLoginHelper;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookOtherException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\GraphUser;
use Facebook\GraphSessionInfo;
FacebookSession::setDefaultApplication('myappid', 'myappsecret');
$servername = "myservername";
$username = "myusername";
$password = "mypassword";
$dbname = "mydbname";
// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
// prepare and bind
$stmt = $conn->prepare("INSERT INTO player (fb_id, f_name, l_name, email, gender) VALUES
(?, ?, ?, ?, ?)");
$stmt->bind_param("sssss", $userid, $userfirst_name, $userlast_name, $useremail, $usergender);
// set parameters (these variables are received from AJAX) and execute
$userid = $_POST['userid'];
$userfirst_name = $_POST['userfirst_name'];
$userlast_name = $_POST['userlast_name'];
$useremail = $_POST['useremail'];
$usergender = $_POST['usergender'];
$stmt->execute();
echo "New records created successfully";
$stmt->close();
$conn->close();
?>
遗憾的是,当我尝试此操作时,没有任何内容插入到我的数据库中。Facebook数据肯定已经到达了php脚本(因为在我尝试实现这个准备好的语句之前它已经成功插入),所以问题可能出在“准备和绑定”部分
如果有人知道这里可能有什么问题,或者有任何其他的建议,让这更安全,我将不胜感激
提前谢谢 难道你不认为
$smt=…
和$stmt->bind…
应该在$usergender=$\u POST['usergender']之后出现吗
Hi@VarunNaharia谢谢你的回复,我已经试过了,但仍然不起作用。是否有可能某些代码被贬值?