使用Oracle在PHP中创建登录系统

时间:2015-10-01 12:36:41

标签: php oracle

我在为我的网站创建此登录系统时遇到了大量问题,我们需要使用php和oracle。

表本身非常简单,只附加了用户名和密码值。

这是我正在使用的代码,它带来的主要问题是变量$ password总是返回一个空值。

<?php
/* Set oracle user login and password info */
$dbuser = "*MY USERNAME*";
$dbpass = "*MY PASSWORD*";
$dbname = "SSID";
$db = oci_connect($dbuser, $dbpass, $dbname);

if (!$db)  {
    echo "An error occurred connecting to the database"; 
    exit; 
}

$user = $_POST['user'];
$pass = $_POST['pass'];

$sql_login = "SELECT Username FROM users WHERE Username='%".$user."%'"; 

$login_stmt = oci_parse($db, $sql_login);

if(!$login_stmt)
{
    echo "An error occurred in parsing the sql string.\n"; 
    exit; 
}

oci_execute($login_stmt);

while(oci_fetch_array($login_stmt))
{
    $password = oci_result($login_stmt,"Password");
}

if ($password == "")
{
    echo 'Password = blank';
}

if ($pass == $password)
{
    echo 'Logged In';
}
else
{
    echo 'Login Failed';
}


?>

我正在使用此命令尝试为变量写一个值,但我没有运气。

while(oci_fetch_array($login_stmt))
{
    $password = oci_result($login_stmt,"Password");
}

使用的表单如下,但我不认为它存在问题。

<form name="register" method="post" action="inc/login.php">          
                <div class="form_row">
                <label class="contact"><strong>Username:</strong></label>
                <input type="text" name="user" class="contact_input" />
                </div>  


                <div class="form_row">
                <label class="contact"><strong>Password:</strong></label>
                <input type="password" name="pass" class="contact_input" />
                </div>                     

                <div class="form_row">
                    <div class="terms">
                    <input type="checkbox" name="terms" />
                    Remember me
                    </div>
                </div> 


                <div class="form_row">
                <input type="submit" class="register" value="login" />
                </div>   
</form> 

2 个答案:

答案 0 :(得分:0)

问题是sql返回0行,如果你在where子句中使用,则必须使用喜欢运算符,而不是 =

使用这个sql:

$sql_login = "SELECT Username FROM users WHERE Username like '%".$user."%'";

以下是关于此的好消息:

Equals(=) vs. LIKE

答案 1 :(得分:0)

$password = oci_result($login_stmt,"Password");中,“密码”一词必须写在CAPS上,这样就像

$password = oci_result($login_stmt,"PASSWORD");

为我工作