使用 oracle sys.user$ for PHP 的登录页面
Login page using oracle sys.user$ for PHP
我需要创建将使用来自 sys.user$
的用户名和密码的登录页面,但是当想要登录时登录失败。
但是如果我使用我创建的 table 就可以。
$name=$_REQUEST['name'];
$password=$_REQUEST['password'];
if(!empty($name) && !empty($password)){
$sqlCheck=OCIParse($c,"SELECT NAME, PASSWORD FROM sys.user$
WHERE NAME='$name'
AND PASSWORD='$password'");
OCIExecute($sqlCheck,OCI_DEFAULT);
while(OCIFetch($sqlCheck)){
$db_name = OCIResult($sqlCheck, "NAME");
$db_password = OCIResult($sqlCheck, "PASSWORD");
}
if($db_name != $name && $db_password != $password){
echo "<script>window.location.href='../index.php?page=login&error=1';</script>";
exit();
} else {
$_SESSION['verify_name'] = $name;
echo "<script>window.location.href='../index.php?page=please_verify';</script>";
exit();
}
}
假设您没有为您的应用程序使用 SYS
用户,
您需要权限才能从 SYS
用户访问 SYS.USER$
。检查您是否有权访问 table。
解决方案是,grant select privilege
从 SYS
用户到您在应用程序中用来连接数据库的任何用户。
我需要创建将使用来自 sys.user$
的用户名和密码的登录页面,但是当想要登录时登录失败。
但是如果我使用我创建的 table 就可以。
$name=$_REQUEST['name'];
$password=$_REQUEST['password'];
if(!empty($name) && !empty($password)){
$sqlCheck=OCIParse($c,"SELECT NAME, PASSWORD FROM sys.user$
WHERE NAME='$name'
AND PASSWORD='$password'");
OCIExecute($sqlCheck,OCI_DEFAULT);
while(OCIFetch($sqlCheck)){
$db_name = OCIResult($sqlCheck, "NAME");
$db_password = OCIResult($sqlCheck, "PASSWORD");
}
if($db_name != $name && $db_password != $password){
echo "<script>window.location.href='../index.php?page=login&error=1';</script>";
exit();
} else {
$_SESSION['verify_name'] = $name;
echo "<script>window.location.href='../index.php?page=please_verify';</script>";
exit();
}
}
假设您没有为您的应用程序使用 SYS
用户,
您需要权限才能从 SYS
用户访问 SYS.USER$
。检查您是否有权访问 table。
解决方案是,grant select privilege
从 SYS
用户到您在应用程序中用来连接数据库的任何用户。