обновяване на $_sesion

r_a_s

Registered
Здравейте, като въведа index.php?grad=sofiq или index.php?grad=varna ми ги извежда както трябва, обаче като се върна на index.php трябва да ми показва последния въведен град. Тоест ако последно съм въвел index.php?grad=varna да ми показва varna. Проблемът е, че с моя код го прави, само че има бъг, като въведа index.php?grad=varna и след това се върна на index.php е ок, след това въвеждам index.php?grad=plovdiv и като се върна на index.php не ми показва plovdiv, а ми показва varna и трябва да го рефрешна за да се актуализира и да ми покаже plovdiv. Как мога да реша този проблем?
Ето и кода:
Код:
if(isset($_GET['grad'])){
$_SESSION['grad'] = $_GET['grad'];
echo $_SESSION['grad'];
}
else{
echo $_SESSION['grad'];
}
 
Не мисля че ще проработи но все пак като идея го давам!
PHP:
if(isset($_GET['grad']))
{
$_SESSION['grad'] = $_GET['grad'];
$city = $_SESSION['grad'];
echo $_SESSION['grad'];
}
else
{
if(isSet($city))
{
echo '$city';
}
}
 
Не става, като въведа index.php?grad=varna е ок, обаче като се върна на index.php не ми показва нищо, а трябва да ми показва varna ;)
 
Код:
if(isset($_GET['grad']))
{
$_SESSION['grad'] = $_GET['grad'];
echo $_GET['grad'];
}
else{
if(isset($_SESSION['grad'])
{
echo $_SESSION['grad'];
}
}
 
Кодовете като ги гледам, трябва да работят, единствения вариянт да ти дава грешка е ако се опитваш да отвориш index.php без предварително да си отжорил index.php?grad=pleven


Сега го пробвах, работи отлично.

PHP:
<?php

	//Start new session
	session_start();

	//Get the city
	if(isset($_GET['grad']))
	{
		//Put the city into the session
		$_SESSION['grad'] = $_GET['grad'];
		
		echo "Get method: ".$_GET['grad'];
	}
	
	else
	{
		//Check if grad is in the session
		if(isset($_SESSION['grad']))
		{
			echo "Session: ".$_SESSION['grad'];
		}
		
		//City not in the session
		else
		{
			echo "Pyrvo trqbva da otvorish grad s GET za da se zapishe v sesiqta , predi da trygvash da proverqvash dali go ima.";
		}
	}
?>
 
qazxsw, ти чете ли въобще какво писах? Не казвам, че не работят, а че дават бъг! Ето как го тествам аз:
Първо: въвеждам в урл-то index.php?grad=varna и всичко е ток!
Второ: отивам на index.php и всичко е ток!
Трето: въвеждам в урл-то index.php?grad=plovdiv и всичко е ток!
Четвърто: отивам пак на index.php и вместо plovdiv ми показва varna, тоест помни старата стойност и за да се оправи трябва да рефрешна страницата!
Надявам се този път да съм бил достатъчно изчерпателен!
 
Виж дали така ще се получи!
PHP:
<?php
if(isset($_GET['grad']))
{
    //Put the city into the session
    echo "Get method: ".$_GET['grad'];
	$_SESSION['grad'] = $_GET['grad'];
}
else
{
    //Check if grad is in the session
    if(isset($_SESSION['grad']))
    {
        echo "Session: ".$_SESSION['grad'];
		unset($_SESSION['grad']);
    }
    //City not in the session
    else
    {
        echo "Pyrvo trqbva da otvorish grad s GET za da se zapishe v sesiqta , predi da trygvash da proverqvash dali go ima.";
    }
}
?>
 
r_a_s каза:
qazxsw, ти чете ли въобще какво писах? Не казвам, че не работят, а че дават бъг! Ето как го тествам аз:
Първо: въвеждам в урл-то index.php?grad=varna и всичко е ток!
Второ: отивам на index.php и всичко е ток!
Трето: въвеждам в урл-то index.php?grad=plovdiv и всичко е ток!
Четвърто: отивам пак на index.php и вместо plovdiv ми показва varna, тоест помни старата стойност и за да се оправи трябва да рефрешна страницата!
Надявам се този път да съм бил достатъчно изчерпателен!

Тествах кода който съм ти дал за проблема който описваш и работи без да показва бъгове. :)
 
Това което си ми дал не ми върши работа. Не искам, като вляза в index.php, след като съм бил в index.php?grad=varna да ми показва това съобщение - echo "Pyrvo trqbva da otvorish grad s GET za da se zapishe v sesiqta , predi da trygvash da proverqvash dali go ima."; а да ми показва стойността на grad, тоест varna :)
 
r_a_s каза:
Това което си ми дал не ми върши работа. Не искам, като вляза в index.php, след като съм бил в index.php?grad=varna да ми показва това съобщение - echo "Pyrvo trqbva da otvorish grad s GET za da se zapishe v sesiqta , predi da trygvash da proverqvash dali go ima."; а да ми показва стойността на grad, тоест varna :)
Абе приятел! Първо трябва да сетнеш сесия за да не влиза в else ! Погледна ли си кода ? Не си подал сесия с GET, как очакваш да имаш някаква стойност когато сесията ти не е сетната (isSet) :)
 
r_a_s каза:
Това което си ми дал не ми върши работа. Не искам, като вляза в index.php, след като съм бил в index.php?grad=varna да ми показва това съобщение - echo "Pyrvo trqbva da otvorish grad s GET za da se zapishe v sesiqta , predi da trygvash da proverqvash dali go ima."; а да ми показва стойността на grad, тоест varna :)

Ако от index.php?grad=varna влезеш в index.php това съобщение няма да го видиш. После може пак да отидеш на index.php?grad=nqkakyv-dryg-grad и пак да се върнеш на index.php и пак ще ти работи с новия град и съобщението няма да го видиш. Това съобщение го добавих да ти се изписва само ако не си минал през $_GET-a първо за да ти напомни, както споменах, че трябва да направиш в предишното ми мнение.
 
По принцип като се задава стойност на нещо, е хубаво предварително да се unset() старата и да се запише новата. Това често се ползва за избягване на такива бъгове. Та, може да пробваш.
 

Back
Горе