在AJAX调用成功后创建PHP会话变量



在成功调用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 中创建

任何关于我做错了什么的帮助都将不胜感激。

脚本发送输出后,无法启动会话。(应该有这样的输出;如果没有,请尝试更改PHP的警告。(session_start((调用必须在实际执行的任何echo调用之前。

在一个无关的主题上,您将希望了解如何转义数据库参数。

最新更新