Итак, у меня есть класс PHP, у которого есть метод, который обновляет переменную сеанса с именем $_SESSION['location']
. Но проблема в том, что каждый раз, когда вызывается метод, он не находит сохраненную переменную сеанса и говорит мне, что он не установлен. Он должен хранить идентификатор местоположения, а метод вытаскивает следующее местоположение из базы данных MySQL на основе переменной сеанса, а затем сохраняет новый идентификатор. Но место в коде SQL, которое должно включать переменную, пусто.Сессия PHP не сохраняется при обновлении
У меня есть session_start()
в начале страницы. Я попытался вручную установить переменную, и она тоже ничего не делает. Также попытался получить эту переменную с другой страницы PHP, и не повезло. Пожалуйста помоги.
Небольшой образец моего кода:
class location {
@session_start();
function compass($dir) {
$select = $_SESSION['location'];
if($dir == "north") {
$currentlat = mysql_result(mysql_query("SELECT `lat` FROM `locationdb` WHERE id=".$select), 0, "lat");
$currentlon = mysql_result(mysql_query("SELECT `lon` FROM `locationdb` WHERE id=".$select), 0, "lon");
$sql = "[THE SQL CODE THAT GETS THE NEXT LOCATION]";
$id = mysql_result(mysql_query($sql), 0, "id");
$_SESSION['location'] = $id;
$return['loc'] = $this->display_location($id);
$return['lat'] = $this->display_lat($id);
$return['long'] = $this->display_long($id);
$return['id'] = $id;
}
return $return;
}
}
, пожалуйста, напишите свой код. – Ejaz
Вы должны поместить 'session_start();' в верхней части страницы вне класса. Он должен быть просто включен на страницы при загрузке. Где вы устанавливаете '$ _SESSION ['location']'? – Rasclatt
Это один из примеров, почему подавление ошибок (@) редко нужно использовать и только для особых целей. – Devon