2013-02-15 2 views
1

저는 여기에 앉아서 30 분간 좋은 생각을하고 있습니다. 나는 틀린 것을 볼 수 없습니다.로그인 기능이 제대로 작동하지 않는 것 같습니다.

지문을 추가했지만 데이터베이스에 올바르게 연결되어 있지 않거나 정확하게 데이터를 가져 오지 않는 것 같습니다.

$conf['sql_host'] = 'localhost'; 
$conf['sql_user'] = 'root'; 
$conf['sql_pass'] = ''; 
$conf['sql_data'] = 'c_webauth'; 

    mysql_connect($conf['sql_host'], $conf['sql_user'], $conf['sql_pass']) or die('Connection failed: '.mysql_error()); 
    mysql_select_db($conf['sql_data']); 



function login($user, $pass){ 

    session_regenerate_id(); 
     if (isset($_SESSION['user_id'])) { 
      unset($_SESSION['user_id']); 
     } 

     $qry = mysql_query("SELECT user_id, user, user_group, user_name FROM c_users where user='$user' AND pass='".md5($pass)."'"); 

     if (mysql_num_rows($qry) > 0) { 
      session_regenerate_id(); 

      while ($data = mysql_fetch_array($qry)) { 
       $_SESSION['user_id'] = $data['user_id']; 
       $_SESSION['user_group'] = $data['user_group']; 
       $_SESSION['user'] = $data['user']; 
       $_SESSION['user_name'] = $data['user_name']; 

       // Debug 
       echo $_SESSION['user_id']; 
       echo $_SESSION['user_group']; 
       echo $_SESSION['user']; 
       echo $_SESSION['user_name']; 

       session_start(); 
      } 
     } 
} 

login("username", "password"); 

무엇이 잘못 되었습니까?

누구나 내가 언급 한 내 session_start(); 잘못된 위치에 있지만 에코는 아무 것도 인쇄하지 않습니다. 오류는 절대 없습니다.

+2

세션 변수를 반향 및 설정하기 전에'session_start()'? –

+2

페이지 상단의'session_start()'를 항상 호출하십시오. –

+1

왜 session_start()를 사용하고 있습니까? SESSION 변수를 할당 한 후 맨 아래에? – Minesh

답변

3

대신 세션 검사를 수행하기 전에 마지막으로 session_start()를 호출하는

2

당신이 세션 변수

를 할당 한 후에는, 하단에 session_start()을 뒀다

2

세션 사용하기 전에 사용한다 session_start(); 이 기능을 페이지 상단에 놓고 하단에서 제거하십시오.

0

코드 하단에 을 넣어야합니다. 그 이유는 코드 하단에 모두 $_SESSION 변수가 선언되어 값을 반환하지 않기 때문입니다. 하나의 session_start()이 맨 위에 있으면 글로벌 변수 $_SESSION 개의 변수를 얻을 수 있으며이를 설정할 수도 있습니다. config.php이라는 스크립트 (session_start())를 작성하고 매번 session_start()을 추가하는 대신 모든 스크립트에 스크립트를 포함시킬 것을 권장합니다. 이 당신을 도와줍니다
희망 : D는

+0

조언 해 주셔서 감사합니다. :) –

+0

만약 내가 당신의 문제를 해결했다면, 녹색 눈금을내는 것을 잊지 말라.) – C1D

0
<?php 
session_start(); 

$conf['sql_host'] = 'localhost'; 
$conf['sql_user'] = 'root'; 
$conf['sql_pass'] = ''; 
$conf['sql_data'] = 'c_webauth'; 

    mysql_connect($conf['sql_host'], $conf['sql_user'], $conf['sql_pass']) or die('Connection failed: '.mysql_error()); 
    mysql_select_db($conf['sql_data']); 



function login($user, $pass){ 

    session_regenerate_id(); 
     if (isset($_SESSION['user_id'])) { 
      unset($_SESSION['user_id']); 
     } 

     $qry = mysql_query("SELECT user_id, user, user_group, user_name FROM c_users where user='$user' AND pass='".md5($pass)."'"); 

     if (mysql_num_rows($qry) > 0) { 
      session_regenerate_id(); 

      while ($data = mysql_fetch_array($qry)) { 
       $_SESSION['user_id'] = $data['user_id']; 
       $_SESSION['user_group'] = $data['user_group']; 
       $_SESSION['user'] = $data['user']; 
       $_SESSION['user_name'] = $data['user_name']; 

       // Debug 
       echo $_SESSION['user_id']; 
       echo $_SESSION['user_group']; 
       echo $_SESSION['user']; 
       echo $_SESSION['user_name']; 


      } 
     } 
} 

login("username", "password"); 
?> 

나는 당신을 위해 코드를 수정했습니다.

+0

작동하지 않는 것 같은데, 나는 아무런 SQL 오류도 얻지 못했고, 그 데이터는 데이터베이스에서 가져온다. 아이디어? –

+1

페이지에 오류가 있거나 디렉토리의 error.log에 오류가 있습니까? – VladHQ

+0

절대적으로 아무것도. –

관련 문제