datatables / jquery / переменная сеанса / форма входа - PullRequest
0 голосов
/ 07 марта 2020

Сценарий:

1) логин. php проверяет имя пользователя и пароль и устанавливает сеанс с идентификатором пользователя

$_SESSION['id'] = $id;

2) datatables / jquery вызывает действие . php файл для заполнения таблицы данными

"ajax":{
      url:"action.php",
      type:"POST",
      data:{action:'listTable'},
      dataType:"json"
    },

3) действие. php файл вызывает функцию listTable ()

include('table.php');
$table = new table();
$table->listTable();

4) функцию listTable ( таблица. php) возвращает все данные, которые попадают в таблицу данных

$output = array(
      "draw"        =>  intval($_POST["draw"]),
      "recordsTotal"    =>  $numRows,
      "recordsFiltered"   =>  $numRows,
      "data"          =>  $tableData
    );
    echo json_encode($output);

5) данные были выбраны с помощью команды sql и помещены в переменную tableData

В этом случае все работает нормально.

Идеи:

Я хотел получить доступ к переменной сеанса в команде sql select. Это невозможно из-за действия jquery /. php api. Это полные разные файлы и не имеют доступа к этому сеансу. Можно установить идентификатор пользователя в скрытом поле формы, но это не безопасно и легко манипулировать. Файл cook ie также редактируется пользователем. Кроме того, Javascript не может прочитать переменные сеанса на стороне сервера.

Вопрос:

Как я могу использовать / получить доступ к этой php переменной сеанса в этом сценарии?

Обновление:

Это тоже не работает: /

обзор. php

$userID = $_SESSION['id'];

data. js

"ajax":{
      url:"action.php",
      type:"POST",
      data:{userID:userID, action:'listTable'},
      dataType:"json"
    },

table. php

$userID = $_POST["userID"];

1 Ответ

0 голосов
/ 07 марта 2020

Я действительно не понимаю здесь проблемы, потому что переменная $_SESSION доступна для файлов php, даже если ajax вызывает файл php. До тех пор, пока вы не позвоните по номеру AJAX из того же браузера, и вызов ajax не включает файлы cookie (один из поваров ie будет идентификатором сеанса), вы сможете достичь своего идентификатора пользователя в SQL запрос на стороне PHP, не переходя на javascript / jquery идентификатор вашего пользователя. Как вы написали при входе в систему. php:

$_SESSION['id'] = $id;

В вашей таблице. php, где живет команда SQL:

echo isset($_SESSION['id']) ? "I'm existing!" : "I'm NOT existing!";

Она выведет «I» м существует! если пользователь вошел в систему и "Я НЕ существую!" если пользователь не вошел в систему. Все переменные $ _SESSION доступны в файлах php, пока сервер не получит идентификатор SESSION из браузера (который является поваром ie). Файлы cookie отправляются автоматически, если вы звоните на тот же домен.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...