Как получить доступ к переменным сеанса в PHP-скрипте?

Я разрабатываю функцию «уведомления», но когда я выполняю функцию jQuery, в которой я вызываю свой скрипт «NOTIFICACIONES.php», используя AJAX, мой php-скрипт вызывает некоторую информацию из базы данных. Я использую идентификатор текущего пользователя для вызова данных, но в своей «функции успеха» 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

@Dharman, спасибо, я учту все, что вы сказали, чтобы улучшить мой код :)

Marvin García 12.06.2019 22:16
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
1
137
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Прокомментировал бы, но должен ответить здесь из-за ограничения в 50 кредитов. Убедитесь, что файлы cookie вашего браузера включены. Console.log любые данные ajax, чтобы увидеть, отправляете ли вы данные для получения php. Переместите session_start в начало кода, т.е. в строку 1. Надеюсь, что-то из этого поможет.

На самом деле я не отправляю никаких данных по запросу AJAX, все данные, которые мне нужны, - это переменная сеанса «Id», которую я устанавливаю, когда мой пользователь входит в систему.

Marvin García 11.06.2019 22:19

Другие вопросы по теме