2013-02-15 80 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()'在回显和设置会话变量之前? – 2013-02-15 12:27:14

+2

总是在页面顶部呼叫'session_start()' – 2013-02-15 12:28:46

+1

为什么要放session_start();在底部,你分配了SESSION变量之后? – Minesh 2013-02-15 12:29:23

回答

3

你正在做的会话检查之前,而不是调用在session_start()在结束

2

session_start();它的会话中使用

2

你已经把session_start()在底部,您分配Session变量

前后应使用将此功能放在页面顶部并从底部移除。

0

您需要将session_start()置于代码的顶部,因为它的底部全部为$_SESSION变量未声明,因此它们不会返回值。其中一个session_start()位于顶部,您将获得全局变量$_SESSION,您也可以设置它们。我建议您创建一个名为config.php的脚本,它具有session_start(),您可以将其包含在所有脚本中,而不是每次添加session_start()
希望这可以帮助你:d

+0

谢谢你的建议,我会保存在我的! :) – 2013-02-15 12:52:09

+0

嘿,如果我已经解决了你的问题,不要忘记给我一个绿色的勾号;) – C1D 2013-02-15 13:48:51

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错误,并且数据是从那里被从数据库中想法? – 2013-02-15 12:51:27

+1

页面上是否有任何错误,或目录中是否有error.log中的任何错误? – VladHQ 2013-02-15 12:53:02

+0

绝对没有。 – 2013-02-15 12:55:30