这是我的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";
}
}
?>
我试图在谷歌搜索,但仍然没有找到任何东西。 有人知道,问题是什么? 谢谢你的进步。
答案 0 :(得分:2)
根据您的脚本而不是
if(oci_num_rows($cek)==1)
你应该致电
if(oci_num_rows($result)==1)
答案 1 :(得分:1)
当您要求从$result
返回的行数时,您可能希望使用$cek
而不是oci_num_rows()
。但是,确实希望避免直接在字符串中使用$username
和$password
。它会让您对SQL注入攻击敞开大门,因此请考虑将oci_parse
与oci_bind_by_name一起使用。
之后,您还应该在重定向序列之后始终调用exit()
,因为如果不这样做,脚本将继续运行(这可能是其他地方的安全问题)。
答案 2 :(得分: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');
}
`