2012-07-30 206 views
0

这里是我的PHP代码+ Oracle登录表单有问题。
在这个PHP文件中,我使登录功能。但我有一个这样的错误:PHP和Oracle会话登录

Warning: oci_num_rows() expects parameter 1 to be resource, string given in C:\xampp\htdocs\developers\it\session.php on line 12 
Wrong 

-

<?php 
session_start(); 
include ("config.php"); 
$username = $_POST['username']; 
$password = $_POST['password']; 
$do = $_GET['do']; 
if($do=="login") 
{ 
    $cek = "SELECT PASSWORD, USER_LEVEL FROM T_USERS WHERE USERNAME='$username' AND PASSWORD='$password'"; 
    $result = oci_parse($conn, $cek); 
    oci_execute($result); 
    if(oci_num_rows($cek)==1) 
    { 
     $c = oci_fetch_array($result); 
     $_SESSION['username'] = $c['username']; ociresult($c,"USERNAME"); 
     $_SESSION['USER_LEVEL'] = $c['USER_LEVEL']; ociresult($c,"USER_LEVEL"); 
     if($c['USER_LEVEL']=="ADMINISTRATOR") 
     { 
      header("location:supervisor.php"); 
     } 
     else if($c['user_level']=="User") 
     { 
      header("location:user.php"); 
     } 
     else if($c['user_level']=="Root") 
     { 
      header("location:administrator.php"); 
     } 
     else if($c['user_level']=="Manager") 
     { 
      header("location:manager.php"); 
     } 
     else if($c['user_level']=="Admin") 
     { 
      header("location:admin.php"); 
     } 
     else if($c['user_level']=="Director") 
     { 
      header("location:director.php"); 
     } 
    } 
    else 
    { 
     echo "Wrong"; 
    } 
} 
?> 

我试图在谷歌搜索,但仍然没有发现任何东西。 有人知道,有什么问题? 感谢您的提前。

回答

2

根据你的脚本,而不是

if(oci_num_rows($cek)==1) 

你应该叫

if(oci_num_rows($result)==1) 
+0

错误登录,这是真的。但是,当我尝试使用正确的登录名登录时,它仍然会提示“错误”。任何帮助吗? – David 2012-07-30 10:55:55

+0

'var_dump(oci_fetch_array($ result))'并检查 – 2012-07-30 10:57:59

+0

它显示如下错误:解析错误:语法错误,意外的T_VARIABLE在C:\ xampp \ htdocs \ developers \ it \ session.php在第16行 – David 2012-07-30 11:03:22

1

你可能想使用$result,而不是$cek当你问行从oci_num_rows()返回的数字。不过,你真的想要避免直接在字符串中使用$username$password。它会让你开放SQL注入攻击,所以看看oci_parseoci_bind_by_name一起使用。

之后,您还应该在重定向序列后始终调用exit(),因为如果您不(这可能是其他地方的安全问题),脚本将继续运行。