如何为登录用户读取和写入数据库数据

时间:2018-08-19 10:42:28

标签: javascript php database wordpress session

我不知道任何实际阅读本文的人都将其等同于“如何在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会话会有所帮助,但没有帮助。

那么,如何使用户能够写数据?

1 个答案:

答案 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

?>

这似乎不是正确的方法。这个对我有用。而且我不知道如何做得更好。一定要告诉我这是不正确的,并给我正确的方法。谢谢。

相关问题