Session Variable Problem

25 отговора 744 прегледа
#1

Session Variable Problem

Здравейте на всички имам проблем с сессия! Когато започна нова сесия въвеждам данни в Дадени Променливи но след като премина на друга страница данните в сесията вече са ми загубени защо:

Connect();
$login_table = Get_User_ID($LoginName);

$SESS_NAME = $login_table[1];
$sid = md5(rand(0,10000));
session_id($sid);

session_name($SESS_NAME);
session_start();

if( !session_is_registered("USR_VARS") )
{
$USR_VARS = array("SESS_ID","SESS_LOGIN","SESS_LOGINID");
session_register("USR_VARS");
$_SESSION["USR_VARS"][SESS_LOGINID] = $login_table[0];
$_SESSION["USR_VARS"][SESS_LOGIN] = $login_table[1];
$_SESSION["USR_VARS"][SESS_ID] = $sid;

до тука добре променливите вече имат данни!!!

Но след като отида в дръга страница например SS.php и направя проверка на данните се оказва че променливите не съдържат нищо :

global $USR_VARS;
global $pid;
echo '-------------------------';
echo $_SESSION["USR_VARS"][SESS_LOGINID]; echo $_SESSION["USR_VARS"][SESS_ID]; echo $_SESSION["USR_VARS"][SESS_LOGIN];
echo '--------------------------';

if ( (substr($pid, 0, 1) == 2) AND !admin($USR_VARS[SESS_LOGINID]) )
{
$error = 2;
}
if ( ($USR_VARS[SESS_ID] == "") OR ($USR_VARS[SESS_LOGINID] =="") OR ($USR_VARS[SESS_LOGIN] == "") )
{
$error = 3;
}
if ( $error == 2 )
{
Get_Url("?&error=2");
error=2"'.'
}
else
{
if ($error == 3)
{
Get_Url("?&error=3");
&error=3"'.'
}

}

Бих искал да разбера защо ???

Отговор
в отговор на Session #2

Re: Session Variable Problem

а имаш ли session_start() в дръга страница?

-----------------
живей днес, защото вчера няма да се върне, а утре може и да не дойде!
Отговор
в отговор на Bълk #3

Re: Session Variable Problem

Не а Трябва ли ????

Отговор
в отговор на Session #4

Re: Session Variable Problem

ми ... за всеки случай пусни го ... може и да се случи случката ...

-----------------
живей днес, защото вчера няма да се върне, а утре може и да не дойде!
Отговор
в отговор на Bълk #5

Re: Session Variable Problem

Включих session_start() ... но за съжаление пак същия резултат! :((

Отговор
в отговор на Session #6

Re: Session Variable Problem

вдигни ниво на грешки до е-алл и е-стрикт и заедно с това изключи логване на грешки по файлове или там подобно и кажи какво дава

-----------------
живей днес, защото вчера няма да се върне, а утре може и да не дойде!
Отговор
в отговор на Bълk #7

Re: Session Variable Problem

"No errors or warnings are founds"

:))

Чудно до сегашните файлове поне по 5-6 грешки ми намираше!

Отговор
в отговор на Session #8

Re: Session Variable Problem

1. Ами разбира се, че session_start() е задължителен.
2. Защо изпускаш апострофчета в правоъгълните скоби ?
3. Пробвай вместо $_SESSION $HTTP_SESSION_VARS
4. ? error=2"'.' ?
5. ? &error=3"'.' ?

Отговор
в отговор на Session #9

Re: Session Variable Problem

7. Нещо If-овете не се затварят както трябва.

Отговор
в отговор на Йocapян #10

Re: Session Variable Problem

ОК значи това за session_start() го слагам но без резултат!!!
а доколкото $HTTP_SESSION_VARS преди го използвах него но не сработи а като прочетох че $HTTP_SESSION_VARS се използвало в старите версии и аз реших да използвам $_SESSION!! Но за съжаление с никакъв резултат!!
Дори коментирах мястото :))) :

if( !session_is_registered("USR_VARS") )
{
$USR_VARS = array("SESS_ID","SESS_LOGIN","SESS_LOGINID");
session_register("USR_VARS");
/* $HTTP_SESSION_VARS["USR_VARS"][SESS_LOGINID] = $login_table[0];
$HTTP_SESSION_VARS["USR_VARS"][SESS_LOGIN] = $login_table[1];
$HTTP_SESSION_VARS["USR_VARS"][SESS_ID] = $sid;
*/
$_SESSION["USR_VARS"][SESS_LOGINID] = $login_table[0];
$_SESSION["USR_VARS"][SESS_LOGIN] = $login_table[1];
$_SESSION["USR_VARS"][SESS_ID] = $sid;
}

Отговор
в отговор на Session #11

Re: Session Variable Problem

Сега виж там за апострофчетата в [ ] и освен това според мен е по-добре вместо AND и OR да използваш && и || !
Успех !

Отговор
в отговор на Йocapян #12

Re: Session Variable Problem

ОК сега виж в файла които започвам нова сесията всичко ми работи норманло значи проблема се появява когато вече се отвори нов файл и от там не мога да чета съдържанието на променливите ето там е проблема!!! в SS.php !!!

Отговор
в отговор на Session #13

Re: Session Variable Problem

Какво е това:
$_SESSION["USR_VARS"][SESS_LOGINID]
Не трябва ли да е:
$_SESSION['USR_VARS']['SESS_LOGINID']
и в двата файла

Отговор
в отговор на Session #14

Re: Session Variable Problem

echo $_SESSION["USR_VARS"][SESS_LOGINID]; echo $_SESSION["USR_VARS"][SESS_ID]; echo $_SESSION["USR_VARS"][SESS_LOGIN];

тук нямаш нищо, така ли?


$USR_VARS[SESS_LOGINID] - тук едва ли имаш нещо ... и се чудя как ли не ти ревна за уорнинг

-----------------
живей днес, защото вчера няма да се върне, а утре може и да не дойде!
Отговор
в отговор на Session #15

Re: Session Variable Problem

лъжеш, трябва да ти ревне минимум 3 пъти.

-----------------
живей днес, защото вчера няма да се върне, а утре може и да не дойде!
Отговор
в отговор на Bълk #16

Re: Session Variable Problem

Йосариан - Няма проблеми като използвам = " или ' !!!!


$USR_VARS[SESS_LOGINID] - тука както каза ти няма абсолютно нищо !!!!
аз за това пробвах = $_SESSION["USR_VARS"][SESS_LOGINID];

Имам чувство че май май грешката е някъде другаде ... обаче нещо не мога да се сетя каде е !!!! Защото ако имаше грешка нямаше да се съхраняват данните при създаването на сесията!!!

Отговор
в отговор на Session #17

Re: Session Variable Problem

освен session_start в другия файл, трябва преди него да извикаш session_name със съшата стойност, с която си го викал в този файл

(или по-добре просто махни този ред session_name($SESS_NAME); от първия файл. Какво целиш с него?)

Отговор
в отговор на Session #18

Re: и

и защо изобщо правиш и това

$sid = md5(rand(0,10000));
session_id($sid);

Отговор
в отговор на phpGuru #19

Re: и

md5(rand(0,10000)) - връща стринг с дължина 32 и е произволен !!!
При логването на потребителя се създава сесия с наименование 213асдасдае123123асдасд примерно !!!!!
ЗА по голяма сигурност !!!!!

Отговор
в отговор на Session #20

Re: и

явно нещо не разбираш идеата

името на сесията е това по което скриптовете я търсят (така да се каже)

т.е. като сложиш име на сесията DRANDRAN другия скрипт по това DRANDRAN ще си намери данните!! защото всъщност най-често тва е името на кукито, което се ползва за предаване на ID-то на сесията, което всъщност трябва да е това с дългата стойност за по-трудно налучкване

т.е. ако ще сменяш името по подразбиране на сесията тогава всеки скрип трябва да ти почва с

session_name('DRANDRAN');
session_start();

md5(rand(0,10000)) - аз тва много добре знам какво прави, ама незнам защо го правиш!!!! защото пхп-то по същия начин сам си генерира ID-то (ако ти не генерираш ID), т.е. ти само пишеш нещо без то да променя нищо ако разбираш кво искам да кажа


така, са земи махни реда със session_name и ти препоръчвам да махнеш и тва със session_id -то и пробвай (и на всеки файл да започва със session_start();)

Отговор