php - 使用 jQuery ajax() 将数据发送到 php 页面时未设置会话变量
问题描述
我有一个 jQuery,它使用 jQuery ajax() 方法将单击按钮的数据发送到名为“follow_button”的 php 页面。'follow_button' 页面存储从 jQuery 获得的数据,将其存储在一个变量中,然后与单击它的用户 ID 一起执行对数据库的插入操作。现在,问题是,我需要使用会话变量提取用户的 user_id。但在任何情况下,页面都无法提取会话变量。结果发送的数据存储在数据库中,但 user_id 设置为 0,因为会话变量不起作用。这是“follow_button.php”页面的摘录:
follow_button.php
<?php
session_start();
/* if(isset($_SESSION))
echo "1.session set<br>";
else
echo "1.session not set<br>"; */
include_once "includes/db.php";
include_once "includes/functions.php";
// include_once "includes/init.php";
// include_once "includes/insert_school_name.php";
/* if(isset($_SESSION))
echo "2.session set<br>";
else
echo "2.session not set<br>";
var_dump($_SESSION);
var_dump($_POST); */
$name = $_POST['name'];
$email = $_SESSION['email'];
$id = get_id($email);
insert_school($id, $name);
?>
注意:函数 get_id() 和 insert_school() 工作正常。还需要提到的是,包含按钮的页面是一个 wordpress 页面。
成功后,jQuery 脚本将按钮的文本从“关注”更改为“关注”。单击按钮时,文本会发生变化,即调用返回成功状态。但是当我检查数据库时,$name 变量插入了正确的值,但 $id 变量插入了值为 0。
会话变量也适用于所有页面,即使是包含按钮的 wordpress 页面。它只是不适用于这个特定的页面'follow_button.php'。
我该如何解决这个问题?
编辑:添加了 get_id() 和 insert_school() 函数
get_id():
function get_id($email) {
global $conn;
$sql = "SELECT id FROM member WHERE email = '$email'";
$result = $conn->query($sql);
$row = $result->fetch_assoc();
return $row["id"];
}
插入学校():
function insert_school($id, $name) {
global $conn;
$sql = "INSERT INTO user_schools (user_id, school_name)
VALUES ('$id', '$name')";
$conn->query($sql);
}
解决方案
推荐阅读
- java - 将表记录映射到 JPA 实体
- android - 无法安装 HAXM
- python - LibVLC - 禁用弹出式视频播放器
- reactjs - 为什么状态在 React TypeScript 中首先返回空,而“从不”类型不存在属性?
- c - 我需要在 fopen 函数中指定我的文件的路径吗?
- go - ListenAndServe 与 ListenAndServeTLS 速度
- flutter - 使用 sqflite 将列表存储在 Blob 中
- swift - 按commentDate 对自定义字典进行排序
- flutter - Flutter 应用程序未在我的 Android 真实设备中运行
- sql-server - AVL 跟踪系统数据库