这段代码让我很抓狂:)
<?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变量