PHP,会话ID控件不起作用?

时间:2011-09-29 06:05:03

标签: php session sessionid

这里的代码让我抓狂:)

<?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 个答案:

答案 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
}