Php,会话id控制不起作用


Php, session id control doesnt work?

这段代码让我很抓狂:)

<?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也许我错过了一些东西。

我认为你必须在任何检查之前调用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
}

总是有一个用户会话,但不总是php会话。因此,如果您还没有执行session_start(),您可以这样检查:

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

无论在哪里启动会话,也要填写$_SESSION变量