我不知道任何实际阅读本文的人都将其等同于“如何在PHP中运行WordPress函数?”。我对在PHP中运行WordPress函数的兴趣为零。我的问题是关于确定提交HTTP请求的用户/会话。
确实是这样,当您加载页面时,可以使用WordPress的get_current_user_id()函数来识别用户。但这并不会带来有关运行WordPress功能的问题。
我正在使用WordPress,Javascript和PHP构建网站。我有PHP脚本,可以识别页面加载时登录的用户的WordPress用户ID,get_current_user_id()。但是,当我尝试通过Javascript XMLHttpRequest发送HTTP请求以执行PHP脚本时,PHP文件无法识别get_current_user_id()中的用户ID。
我认为使用PHP会话会有所帮助,但没有帮助。
那么,如何使用户能够写数据?
答案 0 :(得分:0)
我发现PHP会话ID存储在cookie中。它在cookie字符串中显示为“ ...; PHPSESSID = fkldsjflksjlf; ...”。在我的Javascript XMLHttpRequest脚本中,我使用以下内容从cookie中提取会话ID。然后,我将其作为参数发送。
def statementz():
print("You typed in", number)
digits = {
56 : statementz
}
while True:
try:
number = int(input("Enter a number: "))
except TypeError:
print("Invalid. Try again.\n")
continue
else:
digits.get(number, lambda : None)()
break
在服务器端,我的MySQL数据库中有一个表“ UserSessions”。该表有两列:SessionID;和UserID。我有一个PHP脚本,在用户加载页面时执行。此时,可以使用get_current_user_id()函数获取WordPress用户ID,并且可以使用$ _COOKIE [“ PHPSESSID”]。 PHPSESSID是作为cookie存储在客户端上的内容。
function test() {
var idBegin = document.cookie.indexOf("PHPSESSID=") + 10;
var sessId = document.cookie.substring(idBegin)
var idEnd = sessId.indexOf(";");
sessId = sessId.substring(0, idEnd);
var request = new XMLHttpRequest();
request.open("GET", "test.php?sessid="+sessId, true);
request.onreadystatechange = function () {
if (request.readyState === 4) {
if ((request.status === 200) || (request.status === 0)) {
}
}
};
request.send(null);
}
在PHP中,我通过Javascript执行的脚本包括以下内容
<?php
$sql = "INSERT INTO UserSessions (SessionID, UserID)";
$sql = $sql . " VALUES (" . $_COOKIE["PHPSESSID"] . ",";
$sql = $sql . get_current_user_id() . ")";
// I user the standard MySQLi stuff to execute the query and
// store the session ID, user ID pair
?>
这似乎不是正确的方法。这个对我有用。而且我不知道如何做得更好。一定要告诉我这是不正确的,并给我正确的方法。谢谢。