我在为我的网站创建此登录系统时遇到了大量问题,我们需要使用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>
答案 0 :(得分:0)
问题是sql返回0行,如果你在where子句%中使用,则必须使用喜欢运算符,而不是 =
使用这个sql:
$sql_login = "SELECT Username FROM users WHERE Username like '%".$user."%'";
以下是关于此的好消息:
答案 1 :(得分:0)
在$password = oci_result($login_stmt,"Password");
中,“密码”一词必须写在CAPS上,这样就像
$password = oci_result($login_stmt,"PASSWORD");
为我工作