【发布时间】:2021-06-27 16:42:09
【问题描述】:
我在成功调用 AJAX 后创建 PHP 会话时遇到问题。这是 AJAX 代码:
function onSignIn(googleUser) {
var profile = googleUser.getBasicProfile();
var id = profile.getId();
var em = profile.getEmail();
var name = profile.getName();
var pic = profile.getImageUrl();
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById('confirm-login').style.display = 'block';
}
};
xhttp.open("GET", "./assets/inc/profile.php?id="+id+"&e="+em+"&n="+name+"&p="+pic, true);
xhttp.send();
}
这部分工作得很好。为了完整起见,我只包括它。
这是profile.php的内容
<?php
$id = $_GET["id"];
$email = $_GET["e"];
$name = $_GET["n"];
$pic = $_GET["p"];
require_once("db.php");
$result = $mysqli->query("SELECT googleid FROM user_tbl WHERE googleid = '$id' LIMIT 1");
if($result->num_rows == 0) {
$sql = "INSERT INTO user_tbl (googleid, email, fullname, pic, loc) VALUES ('$id', '$email', '$name', '$pic', '')";
if (mysqli_query($mysqli, $sql)) {
echo "New record created successfully";
} else {
echo "Error: " . $sql . "" . mysqli_error($mysqli);
}
} else {
echo "already exists";
}
$mysqli->close();
session_start();
$_SESSION['gid'] = $id;
?>
除了session_start(); 和$_SESSION['gid'] = $id; 当我返回另一个 PHP 页面(页面顶部正确有session_start();)之外,所有这些代码都有效,该变量尚未在 profile.php 中创建
任何关于我做错了什么的帮助都会非常感激。
【问题讨论】:
-
在将 confirm-login 设置为可见的成功行下方或之后,输入
console.log(this.resultText)并检查错误消息。此外,您的代码容易受到 SQL 注入的影响,您可以使用 fetch() 和 FormData 来极大地优化您的 JS 代码。
标签: javascript php ajax session