【发布时间】:2019-06-01 06:19:39
【问题描述】:
我正在从 facebook API 检索用户信息并通过 AJAX 将其发送到我的 php 文件以写入 mysql 数据库。 这样做的原因是我可以生成一个随机凭证代码给他们,该代码也被写入数据库。
我完全没有这方面的经验,我只是一路学习。
我的 php 文件:
<?php
include_once 'db_connect.php';//$mysqli = new mysqli(HOST, USER, PASSWORD,
DATABASE);
include_once 'psl-config.php';//database login details
if(isset($_POST['name'],$_POST['email'],$_POST['id'])){
$name = $_POST['name'];
$email = $_POST['email'];
$uid = $_POST['id'];
$code = generateRandomString();
$prep_stmt="INSERT INTO memberinfo (name, email, id,code,dateadded) VALUES ('$name','$email','$uid','$code',now())";
$stmt = $mysqli->prepare($prep_stmt);
if($stmt) {
$stmt->execute();
$stmt->close();
}}
我的 javascript 然后从带有 onlogin="checkLoginState();" 的 facebook 按钮运行它功能:
function checkLoginState() {
FB.getLoginStatus(function(response) {
if (response.status === 'connected') {
FB.api('/me', { locale: 'en_US', fields: 'name,email,id' },
function(response) {
$.ajax({
method: "POST",
url: "includes/process_fb_login.php",
data: response,
dataType: 'json',
cache: false,
success: function(data){
console.log(data);
}
});
});
}else{
alert("Failed to login");
}
});
}
目前没有任何内容写入数据库,我什至不确定如何排除故障以查看正在执行的内容。
【问题讨论】:
-
你遇到了什么错误?
-
完全没有错误,我怀疑它甚至可能没有超过“isset”
-
数据库登录详细信息似乎在数据库连接之后 - 这似乎是错误的方式?!此外,您正在使用
mysqli并且正在使用准备好的语句,但通过嵌入变量使您的 sql 易受攻击 -
是的,可能是这样,明天早上我会检查,谢谢!另外,您对 SQL 易受攻击有何建议?你的意思是使用 preg_replace 之类的东西吗?
-
这对SQL注入开放;使用准备好的语句php.net/manual/en/mysqli.quickstart.prepared-statements.php
标签: javascript php mysql ajax facebook