【发布时间】:2023-04-02 19:54:02
【问题描述】:
我正处于一个体面项目的最后阶段(至少对我而言),我遇到了一个问题,即我的 ajax 请求没有将 $_SESSION 数据发送到它们正在加载的 URL。我正在尝试使用 Gdata 自动上传 YouTube 上的文件。我使用 jquery 发出 ajax 请求,但是当我在名为 PHP 脚本的 ajax 中测试 $_SESSION['sessionToken'] 时,我什么也没得到。
这是我的代码,它正在调用 YouTube 上传脚本:
function uploadVideos(id, upload, selected) {
var status = document.getElementById('currentStatus');
var fields = upload[id].split(":", 2);
var token="<?php echo $_GET['token'];?>";
var dataString = 'videoId='+ fields[0]; // + '&token=' + token;
id++;
status.innerHTML = "<b>Videos for Upload:</b> <h3 class='status'>Currently Updating Bout #" + fields[1] + " (" + id + " of " + upload.length + " videos)</h3>";
$.ajax({
type: "GET",
url: "upload.php",
data: dataString,
success: function(txt) {
if (txt != 'Success') {
alert(txt);
}
if (id < upload.length) {
uploadVideos(id, upload, selected);
} else {
status.innerHTML = "<b>Videos for Upload:</b> <h3 class='status'>Completed</h3>";
}
//deselect the checkbox
document.videos.video[selected[id-1]].checked = false;
document.videos.video[selected[id-1]].style.display = 'none';
},
async: true
});
}
如何将 sessionToken 发送到upload.php,让它相信我已通过身份验证?
【问题讨论】:
-
我可能在这里包含了更多真正有用的代码。我基本上只是想要一种向 .ajax 请求添加类似“session: sessionString”的方法。
-
以防万一,$_SESSION 中的任何内容都只在服务器上,而不在客户端上。您需要确保令牌是从浏览器发送的,通常是通过 cookie。
-
我知道我有 cookie。我可以在我包含的脚本上回显“$_SESSION['sessionToken']”,并且我看到了令牌的值。我也想将该值放在我的 ajax 请求的标头中,但我不知道如何这样做。
-
如果您的会话中有令牌,则不必通过 ajax 请求发送它。您必须发送的唯一令牌是 PHPSESSID,浏览器会自动执行此操作(使用 cookie)。 PHP 在内部使用 sessid 在每次执行时加载所有会话变量(包括“sessionToken”),无论是 ajax 调用还是常规请求。
标签: php jquery ajax session-cookies gdata