2015-11-11 65 views
0

我需要創建登錄頁面,使用用戶名和密碼sys.user$,但是當登錄登錄失敗。

但是,如果我使用我創建它的表可以。

$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(); 
    } 
} 

回答

0

假如你不使用SYS用戶的申請,

你需要一個特權從SYS用戶訪問SYS.USER$。檢查您是否有權訪問表格。

解決方案將是,grant select privilegeSYS用戶到您在應用程序中用於連接到數據庫的任何用戶。

+0

我使用sys.user $作爲應用程序。如果我複製密碼哈希,並在登錄表單上粘貼密碼字段,則登錄成功。但是,如果我使用我的真實密碼登錄是無效的。 – john

+0

閱讀我以前的評論 – john

+0

我想你應該檢查你的應用程序中的密碼加密部分。因爲Oracle加密密碼並進行保存。如果你不加密和比較密碼不會匹配。加密密碼並匹配或解密密碼哈希並進行比較。另外讓我知道您正在使用的Oracle數據庫版本。 – Jeethu