как мне получить идентификатор сеанса пользователя, который вошел на сайт

#php #mysql #session

#php #mysql #сеанс

Вопрос:

Мне нужна некоторая помощь с «получением» идентификатора пользователя, который вошел на мой веб-сайт. По сути, у меня есть панель управления пользователями, в которой я хочу показывать только сведения об этих конкретных пользователях. Может кто-нибудь сказать мне, на правильном ли я пути и что я сделал не так.

Итак, на странице панели мониторинга, куда попадают пользователи после входа в систему, у меня есть это вверху страницы:

 $query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = $_SESSION['id']";
  

Затем в моем заголовке, который есть на каждой странице, у меня есть это:

 <?php
    session_start();
    require "includes/dbh.inc.php";
?>
  

Затем в моем сценарии входа в систему у меня есть:

 $_SESSION['id'] = $row['idUsers']; //User ID
$_SESSION['uid'] = $row['uidUsers']; //Username
$_SESSION['email'] = $row['emailUsers']; //Users Email
  

Итак, я подумал, что, вызвав $_SESSION['id'] вверху страницы моей информационной панели, он просто определит, кто вошел в систему, однако ошибка, которую я получаю, это:

синтаксическая ошибка, неожиданный » (T_ENCAPSED_AND_WHITESPACE), ожидающий ‘-‘ или идентификатор (T_STRING), или переменную (T_VARIABLE), или число (T_NUM_STRING)

Пожалуйста, кто-нибудь может сказать мне, является ли это неправильным способом узнать, какой пользователь вошел в систему, или это просто синтаксический пример?

Комментарии:

1. Что неясного в syntax error сообщении?

2. Привет @MarcinOrlowski извините, что именно вы имеете в виду?

3. Именно то, что я сказал. Вы получили простое, не требующее пояснений сообщение об ошибке — что в нем неясного, что вам нужно спросить?

4. Я все еще не уверен в том, как исправить фактическую ошибку $query = "SELECT * FROM checkPointMod WHERE idUsers = '$_SESSION['id']' "; Везде, где я смотрел здесь, это выглядит правильно…

Ответ №1:

Вы можете создать переменную для хранения идентификатора и передать ее в запросе, чтобы игнорировать эту ошибку следующим образом

 $id =  $_SESSION['id'];
$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = $id";
  

Или вы можете сделать это

 $query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = ".$_SESSION['id'].'"';
  

Комментарии:

1. Огромное вам спасибо!!!! Похоже, что это был простой случай, когда просто неправильно использовались ‘и». Спасибо, Юсеф! 🙂

Ответ №2:

Я думаю, проблема в вашем sql-запросе.

Когда вы используете ассоциативный массив, содержащий ключ в виде строки, вы должны объединить его с оператором ‘.’ . Его нельзя использовать в двойных кавычках напрямую, как простые переменные.

Вы должны использовать запрос типа

 
$uid = $_SESSION['id'];

$query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = $uid";

  

Или

 $query = "SELECT * FROM `checkPointMod` WHERE `idUsers` = ".$_SESSION['id'];
  

Комментарии:

1. Привет @SachinPatil да, это был тот факт, что у меня их не было. ни » ‘ спасибо, ваш ответ тоже правильный.