这里是我的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";
}
}
?>
我试过在谷歌上搜索,但仍然没有找到任何东西。有人知道,出了什么问题?谢谢你的预付款。
根据您的脚本而不是
if(oci_num_rows($cek)==1)
你应该打电话给
if(oci_num_rows($result)==1)
当您询问从oci_num_rows()
返回的行数时,您可能希望使用$result
而不是$cek
。但是,确实希望避免像那样直接在字符串中使用$username
和$password
。它将使您对SQL注入攻击持开放态度,因此请考虑将oci_parse
与oci_bind_by_name一起使用。
之后,您还应该始终在重定向序列之后调用exit()
,因为如果不这样做,脚本将继续运行(这可能是其他地方的安全问题)。
我也遇到了同样的情况,所以我用这样的脚本欺骗了它,但我不知道是否有影响。因为会话和验证进行得很顺利。
$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');
}
`