Php, управление идентификатором сессии не работает? - PullRequest
0 голосов
/ 29 сентября 2011

вот код сводит меня с ума:)

<?php
$deger=0;
if (session_id() == '') {
session_start();
$deger=1;
}
else{
$deger=0;
}

$row = mysql_fetch_row($result);
 $counter =$row[2];

if($deger==1){
 $counter--;
}
echo $counter;
?>

Этот основной код сводит меня с ума. условие deger == 1 всегда возвращает true и продолжает уменьшать счетчик. То, что я хотел бы сделать, это проверить сессию, если сессия новая, уменьшить ее только один раз. после этого не уменьшайте значение. Я что-то здесь упускаю? Я новичок в php, может быть, мне чего-то не хватает.

С нетерпением жду ваших ответов, спасибо.

Ответы [ 2 ]

1 голос
/ 29 сентября 2011

Я думаю, вам нужно позвонить session_start(); до того, как такие хаки, как if (session_id() == ''), действительно не вызовут ничего в session_id, когда сессия не была начата.этот код, который я использовал, работает для меня (может быть, не идеален):

session_start();
$user = (isset($_SESSION['user']) && $_SESSION['user'] != '' ? $_SESSION['user'] : null);
if ($user == null) {
//it's a not logged in user
//checking users credentials and if it's ok
$_SESSION['user'] = $uid; //or whatever you want to use to identify a user
} else {
//it's logged in user
}
1 голос
/ 29 сентября 2011

Всегда есть сеанс пользователя, но не всегда сеанс php. Так что, если вы еще не сделали session_start (), вы можете проверить это примерно так:

if (isset($_SESSION]['loggedin'])){
    $deger = 0;
} else { 
    $deger = 1;
    session_start(); 
    $_SESSION['loggedin'] = true;
}

Где бы вы ни начали сеанс, также заполните переменную $ _SESSION.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...