私はphpとmysqlに非常に慣れていません。サイトに登録およびログイン セクションを作成するための優れたチュートリアルを見つけました。私はそれをかなりうまく解体し、小さな変更を加えています。でも...
ログイン時にパスワードが正しくない場合は検証され、エラーが返されます。正しければログインします。
私が抱えている問題は、正しいパスワードを入力しても、検証もログインも行わずに余分な文字を追加すると、空白のページに移動することです。ログインページの検証コードは次のとおりです -
<?php
include('db.php');
if(!isset($_POST['login']))//checking if user has entered this page directly
{
include('form.php');
}
else{
if(isset($_POST['user'])&&$_POST['user']==""||!isset($_POST['user']))
{
$error[] = "Username Field can't be left blank";
$usererror = "1";
}
if(!isset($usererror))
{
$user = mysql_real_escape_string($_POST['user']);
$sql = "SELECT * FROM users WHERE user = '$user'";
if(mysql_num_rows(mysql_query($sql))=="0")//1 means there is one entry same so we print error
{
$error[] = "Can't find a user with this username";
}
}
if(isset($_POST['pass'])&&$_POST['pass']==""||!isset($_POST['pass']))
{
$error[] = "password Field can't be left blank";
}
if(isset($error)){
if(is_array($error)){echo "<div class=\"error\"><span>please check the errors and refill the form<span><br/>";
foreach ($error as $ers) {
echo "<span>".$ers."</span><br/>";
}
echo "</div>";
include('form.php');
}
}
if(!isset($error)){
$suser=mysql_real_escape_string($_POST['user']);
$spass=md5($_POST['pass']);//for secure passwords
$find = "SELECT * FROM users WHERE user = '$suser' AND password = '$spass'";
if(mysql_num_rows(mysql_query($find))=="1"or die(mysql_error())){
session_start();
$_SESSION['username'] = $suser;
header("Location: loggedin.php");
}
else{
echo "<div class=\"warning\"><span>Some Error occured durring processing your data</div>";
}
}
}
?>
どんな助けでも大歓迎です...
編集
パスワードが入力されていない場合にのみエラーが発生することに気付きました。間違ったパスワードを入力すると、空白の白いページが表示されます。パスワードが検証されない理由について誰か助けてもらえますか?