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

1

から返される行数を要求するときでは$resultなく、おそらく使用したいと思うでしょう。ただし、そのような文字列で直接使用することは避けたいと思います。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 に答える