这里的代码让我抓狂:)
<?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的新手,也许我错过了一些东西。
我期待着你的回答谢谢。
答案 0 :(得分:1)
总有一个用户会话,但并不总是一个php会话。因此,如果您还没有执行session_start(),可以使用以下内容检查:
if (isset($_SESSION]['loggedin'])){
$deger = 0;
} else {
$deger = 1;
session_start();
$_SESSION['loggedin'] = true;
}
无论您何时开始会话,还要填写$ _SESSION var。
答案 1 :(得分:1)
我认为你必须在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
}