Problem sys sesiite
10 отговора
278 прегледа
Problem sys sesiite
Opitvam se da napravia login script kato izpolzvam sesii no imam niakolko problema ot koito osnovnia moje bi e 4e niamam predstava kakvo stoi zad poniatieto sesii
eto nakratko do kade sym stignal:
sled kato proveria v bazada danni dali systestvuva potrebitelia sys saotvetnata mu parola se "opitvam" da startiran/inizializiram/ sesiata po tozi na4in:
if(!session_start()){
echo "Грешка при създаването на сесията!";
}else
{
session_register("$username");
$username=$user; //tova e potrebitelskoto ime koeto iskam da imam kato globalna promenliva
?>
<a href="logout.php">logout</a>
<?
}
eto i "logout.php"
<?
session_start(); //tova ne sym siguren dali triabva da go ima no bez nego mi dava slednoto saobstenie: "Warning: Trying to destroy uninitialized session in C:\apache\htdocs\logout.php on line 10" kato line 10 mi e if (!session_destroy()){
if (!isset($username)){
echo "Няма регистрирани глобални променливи
";
}else
{
echo $username."
";
}
if (!session_destroy()){
echo "Грешка при изтриването на сессията!";
}
else
{
echo "Сессията е изтрита успешно";
}
?>
smiatam 4e promenlivata $username triabva da sadyrja stoinostta na potrebitelskoto ime ot predishnia script zastoto v php_manual-a e napisano 4e session_register() pravi promenlivite globalni za sesiata... No tova ne se polu4ava pri men
.
Iavno ne razbiram samata koncepcia, ste sym mnogo blagodaren ako niakoi mi obiasni zastoto s 4eteneto na manuala iavno ne se polu4i


sled kato proveria v bazada danni dali systestvuva potrebitelia sys saotvetnata mu parola se "opitvam" da startiran/inizializiram/ sesiata po tozi na4in:
if(!session_start()){
echo "Грешка при създаването на сесията!";
}else
{
session_register("$username");
$username=$user; //tova e potrebitelskoto ime koeto iskam da imam kato globalna promenliva
?>
<a href="logout.php">logout</a>
<?
}
eto i "logout.php"
<?
session_start(); //tova ne sym siguren dali triabva da go ima no bez nego mi dava slednoto saobstenie: "Warning: Trying to destroy uninitialized session in C:\apache\htdocs\logout.php on line 10" kato line 10 mi e if (!session_destroy()){
if (!isset($username)){
echo "Няма регистрирани глобални променливи
";
}else
{
echo $username."
";
}
if (!session_destroy()){
echo "Грешка при изтриването на сессията!";
}
else
{
echo "Сессията е изтрита успешно";
}
?>
smiatam 4e promenlivata $username triabva da sadyrja stoinostta na potrebitelskoto ime ot predishnia script zastoto v php_manual-a e napisano 4e session_register() pravi promenlivite globalni za sesiata... No tova ne se polu4ava pri men
Iavno ne razbiram samata koncepcia, ste sym mnogo blagodaren ako niakoi mi obiasni zastoto s 4eteneto na manuala iavno ne se polu4i
Re: Problem sys sesiite
Sesiite se startirat predi da izprati6 kakvoto i da e kym browsera. Ne mi stana qsno ti koga go pravi6. Osven tova ne mi stana qsno kakvo to4no ne se polu4ava. Tyi 4e davai info s kofi ;) Pyk i neka po-svetnatite da se sybudqt, ttoagava nqkoi 6te ti kaje
It`s more fun to compute
[линк]
It`s more fun to compute
[линк]
Re: Problem sys sesiite
В началото на всеки файл викаш session_start() (освен ако нямаш session_auto_start в php.ini)...след това вътре си инициализираш каквито ти душа поиска променливи посредством session_register() или ги премахваш със session_unregister()...може да се използва и алтернативен синтаксис с масива $_SESSION.
Накрая в logout скрипта праскаш едно session_destroy().
"Да живееш - значи да се променяш." - Анатол Франс
Накрая в logout скрипта праскаш едно session_destroy().
"Да живееш - значи да се променяш." - Анатол Франс
Eto i malko scriptove
"test.php":
<?PHP
if (!session_start()){
echo "Проблем при стартирането на сесията";
exit();
}else
{
session_register("username");
$username="pen4o";
?>
<a href="stest.php">Към другиа скрипт</a><?
}
?>
"stest.php":
<?PHP
session_start();
echo "регистрираната променлива е ";
echo $username;?>
<a href="slogout.php">Logout</a><?
?>
"slogout.php":
<?PHP
session_start();
echo "И пак регистрираната променлива за сесията: ";
echo $username;
if (!session_destroy()){
echo "
Проблем при изтриване на сесията...";
}else
{
echo "
Сесията е изтрита успешно!";
session_unregister("username");
echo "стойността на регистрираната променлива след session_unregister() за сесията е: ".$username;
}
?>
Въпроса ми е защо след като съм регистрирал променливара username като променлива за сесията не мога да извлека стойността и от другите скриптове? В самия файл койото се генерира в темп-а има записана стойността на username...
<?PHP
if (!session_start()){
echo "Проблем при стартирането на сесията";
exit();
}else
{
session_register("username");
$username="pen4o";
?>
<a href="stest.php">Към другиа скрипт</a><?
}
?>
"stest.php":
<?PHP
session_start();
echo "регистрираната променлива е ";
echo $username;?>
<a href="slogout.php">Logout</a><?
?>
"slogout.php":
<?PHP
session_start();
echo "И пак регистрираната променлива за сесията: ";
echo $username;
if (!session_destroy()){
echo "
Проблем при изтриване на сесията...";
}else
{
echo "
Сесията е изтрита успешно!";
session_unregister("username");
echo "стойността на регистрираната променлива след session_unregister() за сесията е: ".$username;
}
?>
Въпроса ми е защо след като съм регистрирал променливара username като променлива за сесията не мога да извлека стойността и от другите скриптове? В самия файл койото се генерира в темп-а има записана стойността на username...
P.S.
В крайна сметка работия с PHPTriad под виндовс и предполагам, че това е една от причините, че не работят изправно някой неща. След като качих горните скриптове на server-a променливите регистрирани за сесията се "виждат" от всички скриптове. Остана проблема, че сесията не се унищожава... Някой може ли да ми каже каде бъркам?
Благодаря Ви!
Благодаря Ви!
Re: P.S.
Proveri dali imash sazdadena c:\tmp direktoria. Ako q nyamash, nyama kade da se zapisvat sesiite pod windows.
Re: P.S.
Probvah ti skriptovete. sesiata ti se unishtozhava. refreshni slogout.php i shte se ubedish sam.
rabotata e tam che sesiinata promenliva se iztriva ot sesiata, no ostava v skripta. Reshenieto e ili da zaredish nov script (ili prezaredish staria) ili da osven session_unregister da izpolzvash i unset($username);
P.S. Testovete sa pod XP, apache 1.3.24, php 4.2.1 zareden kato modul
Ne haresvam triad, zashtoto slaga php-to kato CGI, ili pone predi taka beshe. Ne znam za segashnite versii.
rabotata e tam che sesiinata promenliva se iztriva ot sesiata, no ostava v skripta. Reshenieto e ili da zaredish nov script (ili prezaredish staria) ili da osven session_unregister da izpolzvash i unset($username);
P.S. Testovete sa pod XP, apache 1.3.24, php 4.2.1 zareden kato modul
Ne haresvam triad, zashtoto slaga php-to kato CGI, ili pone predi taka beshe. Ne znam za segashnite versii.
Re: test
Otka4am ve4e vsi4ki mi kazvat 4e bi triabvalo da trygne scripta, ti mi kazvash 4e vyrvi, no pogledni tuk... [линк]
Re: test
ami, pich, skripta ti raboti po sushtia nachin kakto i pri men. Prosto sled kato unishtozhish sesiata, promenlivite naistina gi "niama" sled kato refreshnesh.... t.e. sled kato edin put otidesh na slogout.php, natinsi refresh! Shvashtash li ideiata?
session_destroy()=false
Защо session_destroy ми връща false? И при следващото зареждане на sstest.php PHPSESID има същата стойност? Това не значи ли, че сесията не се унищожава и ако е така какъв точно е проблема?
Re: Problem sys sesiite
Znachi, moge bi problema ti e che register_globals ti e Off. Proveri tova.
Plius tova ako se polzva $_SESSION, ne e nugno da se pravi session_start() ili session_register. Ako iskash promenliva v sessiata $_SESSION['foo'] = "bar";
I veche e gotovo. Plius tova chrez polzvane samo na $_SESSION se obezopasiavash za register_globals off. Ako iskash da mahnesh promenliva unset($_SESSION['foo']);
Za cialata sesia ne sum 100% siguren no unset($_SESSION); may reshava problema inache razchitash na tova che php-to shte si pochisti s gc-to /tmp.
Andrey
Plius tova ako se polzva $_SESSION, ne e nugno da se pravi session_start() ili session_register. Ako iskash promenliva v sessiata $_SESSION['foo'] = "bar";
I veche e gotovo. Plius tova chrez polzvane samo na $_SESSION se obezopasiavash za register_globals off. Ako iskash da mahnesh promenliva unset($_SESSION['foo']);
Za cialata sesia ne sum 100% siguren no unset($_SESSION); may reshava problema inache razchitash na tova che php-to shte si pochisti s gc-to /tmp.
Andrey