【发布时间】:2016-07-08 17:38:21
【问题描述】:
我正在开发一个基于 Wordpress 的网站,但我是新手。基本上,我们使用插件来跟踪网站上的“点数”,并且我正在使用调用来获取用户的游戏 wordpress ID。但是,问题是当我进行 ajax 调用时,它会为用户 ID 返回 0(也就是未登录),但是当我直接访问 PHP 页面时,它会给我实际的用户 ID(例如:9)。这是我在 PHP 文件中调用的插件函数:
function cp_currentUser() {
require_once(ABSPATH . WPINC . '/pluggable.php');
global $current_user;
get_currentuserinfo();
return $current_user->ID;
}
然后这是我的 PHP 文件
<?php
header("Access-Control-Allow-Origin: *");
require_once("wp-load.php");
echo cp_currentUser();
?>
这是我的跨域 AJAX 调用
$.post('http://my.domain.xz/cp_getbalance.php', {}, function(result){
console.log(result);
});
如果您在登录时直接在浏览器中访问上述 URL,它将为您提供用户 ID,但如果我从 AJAX 调用尝试它,无论我以谁登录,我都只会得到 0。
【问题讨论】:
-
这是正确的行为。当您从不同的域触发 AJAX 调用时,会话不存在,因此 wp_get_current_user() 不返回任何内容。当您通过浏览器点击链接时,WP 能够根据 Cookie 识别会话。
-
你可以尝试在ajax调用中调用get方法吗?
-
你如何保护这些脚本呢?只是不公开显示界面/脚本就足够了吗?
标签: javascript php jquery ajax wordpress