2012-04-21 3 views
0

사용자 로그인을 위해 세션 변수를 초기화하기 위해 아약스를 통해 호출하는 PHP 스크립트가 있습니다. 나중에 세션 정보를 검색 할 때 거기에없는 것 같습니다. 이것에서 빠진 것은 무엇입니까? $ _SESSION 변수가 있다고 가정합니다. 나는 전에 이것을 한 적이 없다. 사용자 DB에서 검색하고 세션 변수를 검색하기 위해 세션 변수를php/javascript로 사용자 로그인

while (true) { 
    $md5_pw = md5($password_text); 
    $r_getuser = mysql_query("SELECT * FROM users WHERE (user_name = BINARY '".mysql_real_escape_string($l_un_em)."' OR email = '".mysql_real_escape_string($l_un_em)."') AND (password = '$md5_pw' OR temp_password = '$md5_pw') AND status >= 0"); 
    if (mysql_num_rows($r_getuser) == 0) { 
     /* echo $messages['log_un_em_pw_incorrect']; 
     return; */ 
     $return['return_code'] = -1; 
     $return['return_msg'] = $messages['log_un_em_pw_incorrect']; 
     echo json_encode($return); 
    } 
    $row = mysql_fetch_assoc($r_getuser); 
    /* if ($row['privs'] < 1) { echo $messages['log_no_privs']; break; } */ 
    if ($row['temp_password'] == $md5_pw) { //new password 
     mysql_query("UPDATE users SET password = '".$md5_pw."', temp_password = NULL WHERE user_id = '{$row['user_id']}'"); 
    } 
    $today = date('Y-m-d'); 
    if ($row['login_0'][0] == '9') { //first login 
     mysql_query("UPDATE users SET login_0 = '".$today."', login_1 = '".$today."', login_cnt = 1 WHERE user_id = '{$row['user_id']}'"); 
    } else { 
     mysql_query("UPDATE users SET login_1 = '".$today."', login_cnt = login_cnt+1 WHERE user_id = '{$row['user_id']}'"); 
    } 
    $_SESSION['uid'] = $row['user_id']; 
    $_SESSION['unm'] = stripslashes($row['user_name']); 
    $_SESSION['uml'] = stripslashes($row['email']); 
    $_SESSION['cL'] = $row['language']; 
    /* echo '<meta http-equiv="refresh" content="0;url=livemass_CENTER34.php">'; */ //default page 
    break; 
} 

PHP 코드를 초기화

PHP 번호.

<?php 
ini_set('display_errors', 1); 
error_reporting(E_ALL); 

echo 'user id '.$_SESSION['uid'].'<br/>'; 
echo 'username '.$_SESSION['unm'].'<br/>'; 
echo 'uml '.$_SESSION['uml'].'<br/>'; 
echo 'cL '.$_SESSION['cL'].'<br/>'; 

?> 

자바 스크립트가 세션 정보를 표시합니다.

$.ajax({ 
     url: "get_session_info.php", 
     type: "GET", 
     data: {}, 
     cache: false, 
     async: false, 
     success: function (response) { 
     alert ('session info response <br/>'+response); 
     }, 
}); 
+0

어디에도 'session_start();'가 표시되지 않습니까? – Halcyon

+0

스 니펫 대신 전체 PHP 코드를 게시하십시오. 당신은 확실히 session_start()를 추가 했습니까? 그것은 사용하고자하는 모든 페이지에 추가되어야합니다 $ _SESSION – arijeet

+0

고대의'mysql_ *'함수로 새로운 코드 작성을 중단하십시오. 그들은 더 이상 유지되지 않으며 커뮤니티는 [비추천 프로세스]를 시작했습니다 (http://news.php.net/php.internals/53799). 대신 [prepared statement] (http://en.wikipedia.org/wiki/Prepared_statement)에 대해 배우고 [PDO] (http://php.net/pdo) 또는 [MySQLi] (http : //)를 사용해야합니다. php.net/mysql). 배울 점이 있다면 [http://wiki.hashphp.org/PDO_Tutorial_for_MySQL_Developers]는 PDO 관련 튜토리얼입니다. –

답변

0

값. PHP 세션을 사용하려면 액세스하려는 모든 페이지의 시작 부분에 session_start();을 넣어야합니다. $_SESSION.