2011-09-29 2 views
0

여기 날 미친 드라이브 :PHP, 세션 ID 제어가 작동하지 않습니까?

<?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에 익숙하지 않은 것 같습니다.

답장을 보내 주시면 감사하겠습니다.

답변

1

나는 if (session_id() == '')과 같은 임의의 chacks 전에 session_start();을 호출해야한다고 생각합니다. 세션이 시작되지 않은 경우 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 
} 
+0

사용자가 처음 페이지 나 오래된 사용자에게 전화를 걸 었는지 여부를 확인하는 샘플 코드를 제공 할 수 있습니까? – akd

+0

pls 내 편집보기 – k102

+0

대단히 고맙습니다.이 답변에 대한 답변입니다. 내가 조금 혼란스러워하는 유일한 점은 내가 아는 한 고유 한 번호 인 세션 ID를 가진 사용자를 식별하고 싶습니다. 그래서 this $ _SESSION [ 'user'] = session_id()를 호출 할 수 있습니다. – akd

1

항상 사용자 세션이 있지만 항상 PHP 세션은 아닙니다. 당신은()가 있어도 session_start을 아직하지 않은 그렇다면, 당신은이 같은 뭔가가를 확인하실 수 있습니다 : 당신이 세션을 시작 어디

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

는 또한 $ _SESSION VAR를 입력합니다.

+0

흠을 ... 세션이 – k102

+0

올바른 시작되지 않은 경우'$ _SESSION'이 비어, 내가 여기에 지적 노력하고있어 이잖아 isset()을 사용하여 –

+0

코드를 복사하고 붙여 넣었지만 작업하지 않았습니다. 그것은 아무것도 보여주지 않습니까? – akd