0

这是我的 PHP 代码 + Oracle 登录表单有问题。
在这个 PHP 文件中,我创建了登录功能。但我有这样的错误:

    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";
    }
}
?>

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

4

3 回答 3

2

根据您的脚本而不是

if(oci_num_rows($cek)==1) 

你应该打电话

if(oci_num_rows($result)==1)
于 2012-07-30T10:53:50.647 回答
1

当您询问$result从. 但是,您确实希望避免像这样直接在字符串中使用and 。它会让您对 SQL 注入攻击敞开心扉,因此请考虑与oci_bind_by_name一起使用。$cekoci_num_rows()$username$passwordoci_parse

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

于 2012-07-30T10:56:57.537 回答
0

我也遇到了同样的情况,所以我用这样的脚本欺骗了它,但我不知道是否有影响。因为会话和验证进展顺利。

    $username =$_POST['username'];
    $password = $_POST['password'];

    $conn = oci_connect('xxx', 'xxx', 'localhost/MYDB');
    $pass_encription = md5($password);
    $query = "SELECT * from *table_name* WHERE *field1*='".$username."' and *field2*='".$password."'";
    $result = oci_parse($conn, $query);
    oci_execute($result);
    $exe = oci_fetch($result);
     if ($exe > 0)
     {
        oci_close($conn);
        oci_execute($result);
        $row        =oci_fetch_array($result);

        $sid        = $row['field_1_parameter'];
        $snama      = $row['field_2_parameter'];
        $sjab       = $row['field_3_parameter'];

        $session    = array     ( 
                                    'field_1_array'             =>$sid,
                                    'field_2_array'             =>$snama,
                                    'field_3_array'             =>$sjab 
                                );

        if($sjab == 'Administrator')
            {
                $this->session->set_userdata($session);
                redirect('redirecting_page');
            }

`

于 2018-11-25T20:01:48.040 回答