Пытаюсь задать сессии определённое значение, но когда перехожу по страницам сайта значение опять сбрасывается на дефолтное, помогите, пожалуйста понять, почему.
В файле f1.php
сначала из БД получается значение id
и сохраняется в $_SESSION['id']
, а потом вызывается
require 'f2.php';
abc();
Написала вот такую функцию, которая находится в файле f2.php
:
function abc() {
$prefix = $_SESSION['id'];
session_name('MYPROJECT'.($prefix ? '_'.$prefix : ''));
ini_set('session.cookie_lifetime', 0);
echo "Имя сессии".session_name();
}
Вот здесь "Имя сессии": MYPROJECT_1
Далее нажимается кнопка, которая находится в файле f1.php
(переход на другую страницу) и вызывается f3.php
(в котором находится скрипт следующей страницы), и при вызове в этом файле session_name()
имя сессии опять дефолтное
Опять ничего не получается.. Перепробовала уже уйму способов, но ничего не меняется. Сценарий такой: захожу под первым пользователем, логинюсь, открываю сайт для второго пользователя, логинюсь, потом возвращаюсь на первую вкладку (с 1м юзером) и при попытке перейти с этой вкладки на другую страницу сайта логин юзера меняется на последнего вошедшего (т.е второго). Не получается реализовать работу в разных вкладках под разными пользователями, они постоянно склеиваются в одного пользователя. Попробовала сделать так, как мне посоветовали здесь (на каждой странице сайта меняю имя сессии), но возникла проблема с $_SESSION['id'], которую использую для переименовывания, оно заменяется последней и не получается её сохранять, а поскольку данные авторизации получаются один раз, то постоянно делать запросы к БД тоже не могу, т.к переменные логин/пароль так же затираются
Последний код:
f1.php
session_start();
...... //подключение к БД
$Login=$_POST['Login'];
$Password=$_POST['Password'];
$query="SELECT id
FROM user
WHERE login='".$Login."' AND password='".$Password."'";
$zapros=mysql_query($query);
session_name('MYPROJECT'.($user['idemployee'] ? '_'.$user['idemployee']:''));
$_SESSION['id'] = $user['idemployee'];
include "f2.php";
echo "Авторизация ";
f2.php
session_start();
if (session_id() ) {echo "Сессия создана с номером ".session_name();
session_name('MYPROJECT'.($SESSION['id'] ? ''.$_SESSION['id'] : ''));
ini_set('session.cookie_lifetime', 0);
}
Вам необходимо устанавливать session_name при каждой загрузке приложения (старте сессии) к примеру:
start_session();
$prefix = $_SESSION['id'];
session_name('MYPROJECT'.($prefix ? '_'.$prefix : ''));
Перед каждым скриптом.
ps. зачем вам $prefix?
session_name() должна вызывтся на всех страницах перед session_start() и session_register() http://php.net/manual/ru/function.session-name.php
Оборудование для ресторана: новинки профессиональной кухонной техники
Частный дом престарелых в Киеве: комфорт, забота и профессиональный уход
Для пробы создал на denwer мини сайт для пробы , вывел статьи из базы и так же создал слайдер на owl-carouselЦиклом выводил url адреса изображений и через...
Пытаюсь в базу занести дату с интервалом в 1 день,использую следующий запрос
Как вывести два меню в wordpress? Я прописал следующие строчки в файле function