javascript - 如何在 PHP 脚本中访问会话变量?
问题描述
我正在开发一个“通知”函数,但是当我执行一个使用 AJAX 调用我的“NOTIFICACIONES.php”脚本的 jQuery 函数时,我的 php 脚本所做的是从数据库中调用一些信息。我使用当前用户的 ID 来调用数据,但在我的 ajax“成功函数”中,我只捕获了一个空数组。
我写了一个测试脚本,这样我就可以回显我的函数的每一步,但是当我运行我的“测试脚本”时,我注意到我的会话变量是空的
这是我设置所有 PHP 会话变量的登录代码。
<?php
if(isset($_POST['empresa']))
{
if(isset($_POST['usuario']))
{
if(isset($_POST['password']))
{
$empresa = $_POST["empresa"];
$usuario = $_POST["usuario"];
$password = $_POST["password"];
$host = "localhost";
$bd = "nominet_Directorio_Web_Beta";
$us = "nominet_Marvin2";
$pas = "NominetBD2019!";
error_reporting(0);
$con = new mysqli($host, $us, $pas, $bd);
if($con->connect_errno)
{
echo "Error de conexión al servidor de base de datos...";
exit();
}
mysqli_set_charset('utf8');
$query = "SELECT `Tbl_Usuarios`.`Id`, `Tbl_Usuarios`.`Fk_Empresa`, `Tbl_Usuarios`.`Tipo_Usuario` FROM `Tbl_Usuarios` INNER JOIN `Tbl_Empresas` ON `Tbl_Usuarios`.`Fk_Empresa` = `Tbl_Empresas`.`Id` WHERE `Tbl_Usuarios`.`Usuario` = '" . $usuario . "' AND `Tbl_Usuarios`.`Password` = '" . $password . "' AND `Tbl_Empresas`.`Razon_Social` = '" . $empresa . "'";
//$query = "SELECT `Tbl_Administradores`.`Id` FROM `Tbl_Administradores` WHERE `Tbl_Administradores`.`Usuario` = '" . $usuario . "' AND `Tbl_Administradores`.`Password` = '" . $password . "'";
$resultado = mysqli_query($con, $query);
$res= mysqli_fetch_array($resultado);
if($res["Id"] > 0)
{
session_start();
$_SESSION["Id"] = $res["Id"];
$_SESSION["Empresa"] = $res["Fk_Empresa"];
$_SESSION["Usuario"] = $usuario;
$_SESSION["Tipo_Usuario"] = $res["Tipo_Usuario"];
header("Location: ../SISTEMA/");
}
else
{
header("Location: ../?error=0");
}
}
else
{
header("Location: ../?resp=error1");
}
}
else
{
header("Location: ../?error=2");
}
}
else
{
header("Location: ../?error=3");
}
?>
function verificarNotificaciones(){
$.ajax({
url: "/PHP/NOTIFICACIONES.php",
type: "POST",
error: function(xhr){
// window.location.href = "../CONTACTOS/?resp=7";
},
success: function(respuesta) {
var arreglo = JSON.parse(respuesta);
}
});
}
<?php
require("ABRIR_CON.php");
session_start();
$fk_usuario = $_SESSION['Id']; //this is the problem (I think...)
$query = mysqli_query($con, 'SELECT `Tbl_Seguimientos`.`Id`, `Tbl_Seguimientos`.`Folio`, `Tbl_Seguimientos`.`Medio_Contacto`, `Tbl_Seguimientos`.`Fecha_Cita`, `Tbl_Seguimientos`.`Hora_Cita`, `Tbl_Seguimientos`.`Fecha_Registro`, `Tbl_Contactos`.`Razon_Social` FROM `Tbl_Seguimientos` INNER JOIN `Tbl_Contactos` ON `Tbl_Contactos`.`Id` = `Tbl_Seguimientos`.`Fk_Contacto` WHERE `Tbl_Seguimientos`.`Fk_Usuario` = ' . $fk_usuario);
$json = array();
$fecha_actual = getdate();
while($row = mysqli_fetch_array($query)){
list($dia, $mes, $year) = explode("/", $arreglo['Fecha_Cita']);
list($hora, $minutos) = explode(":", $arreglo['Hora_Cita']);
if((int)$year == $fecha_actual['year']){
if((int)$mes >= $fecha_actual['mon']){
if((int)$dia >= $fecha_actual['mday']){
if((int)$hora >= $fecha_actual['hours']){
if((int)$minutos > $fecha_actual['minutes']){
$json[]=array('id' => $row['Id'], 'folio'=> $row['Folio'], 'medio_contacto'=> $row['Medio_Contacto'], 'fecha_cita'=> $row['Fecha_Cita'], 'hora_cita'=> $row['Hora_Cita'], 'fecha_registro'=> $row['Fecha_Registro'], 'razon_social'=> $row['Razon_Social']);
}
}
}
}
}
elseif((int)$year > $fecha_actual['year']){
$json[]=array('id' => $row['Id'], 'folio'=> $row['Folio'], 'medio_contacto'=> $row['Medio_Contacto'], 'fecha_cita'=> $row['Fecha_Cita'], 'hora_cita'=> $row['Hora_Cita'], 'fecha_registro'=> $row['Fecha_Registro'], 'razon_social'=> $row['Razon_Social']);
}
}
$resources_JSON_array = json_encode($json);
echo ($resources_JSON_array);
require("CERRAR_CON.php");
?>
我的 php 脚本应该给我一个 Json 数组,其中包含通过多个 if 的信息
解决方案
会发表评论,但由于 50 信用限制,必须在此处回复。确保您的浏览器 cookie 已打开。Console.log 任何 ajax 数据以查看您是否正在发送要由 php 接收的数据。将 session_start 移到代码的开头,即第 1 行。希望其中一个有帮助。
推荐阅读
- excel - Excel:创建格式化表格以便于自动填充
- arrays - Angular 8 ngFor 不投标
- terraform - 使用 Google Cloud 中的服务帐号使用 terraform 管理核心基础架构
- python - Python - 从嵌套字典中访问特定项目
- javascript - 在对端点的调用中。如何获取响应正文(一个 xml 文件)?
- javascript - Angular & TailwindCSS - 下拉菜单
- python - 添加多索引列的任何直接方法?
- go - 进程退出并出现致命错误:运行时:内存不足
- typescript - 如何为猫鼬'查询添加类型
' - nginx - Nginx RTMP模块生成HLS