2

我正在使用 PHP 和 MySQL 创建一个简单的用户登录页面,其中只包含两个选项,用户名和密码....这是代码:

<form id="form1" name="form1" method="post" action="verify_user.php">
    <p align="center">Username :
        <input type="text" name="name" id="name" />
    </p>
    <p align="center">Password :
        <input type="password" name="pass" id="pass" />
    </p>
    <p align="center">
        <input type="submit" name="submit" id="submit" value="Login" />
    </p>
</form>
<h3 align="center" class="para">
<?php
if(isset($_GET['id'])) {
    echo $_GET['id'];
}
?>
</h3>

这里是 verify_user.php 的代码,它将执行用户的登录/注册:

<?php
$uname = $_POST['name'];
$pass  = $_POST['pass'];
$qry   = mysql_query("SELECT * FROM login WHERE user='$uname'", $con);
if(!$qry) {
    die("Query Failed: ". mysql_error());
} else {

    $row=mysql_fetch_array($qry);

    if ($uname==$row['user']) {
        if($uname=='' || $pass=='') {
            header("Location:login.php?id=Some fields are empty");
        } else if($uname==$row['user'] && $pass==$row['password']) {
            header("Location: welcome.php?id=$uname");
        } else {
            header("Location:login.php?id=username already taken or your password is incorrect. Please try again");
        }
    } else {
        mysql_query("alter table login auto_increment = 1;");
        $qry_name=mysql_query("INSERT INTO login(user,password) VALUES('$uname','$pass')");
        header("Location: welcome.php?id=$uname");
    }
}

此代码中的唯一问题是,当用户将任何字段留空时,它必须得到错误“某些字段为空”......当用户将用户名留空但不使用密码时它正在工作。 ..请帮帮我。

4

5 回答 5

2

把你的 if 条件放在首位

$uname=$_POST['name'];
$pass=$_POST['pass'];
if($uname=='' || $pass=='')
{
    header("Location:login.php?id=Some fields are empty");
}
于 2013-03-30T10:41:11.443 回答
1

<form id="form1" name="form1" method="post" action="verify_user.php" onsubmit="return Validate()">

Javascript 函数

function Validate()
{

var x=document.forms["form1"]["pass"].value;
if(x==null||x=='')
{
alert("Enter Password");
return false;
}
于 2013-03-30T10:45:36.303 回答
0

稍微修改你的代码

<?php
$uname=$_POST['name'];
$pass=$_POST['pass'];
if($uname=='' || $pass=='')
{
        header("Location:login.php?id=Some fields are empty");
}

$qry=mysql_query("SELECT * FROM login WHERE user='$uname'", $con);
if(!$qry)
{
die("Query Failed: ". mysql_error());
}
else
{
   $row=mysql_fetch_array($qry);
if($uname==$row['user'])
{
    else if($uname==$row['user'] && $pass==$row['password'])
    {
            header("Location: welcome.php?id=$uname");    
    }
    else
    {
                header("Location:login.php?id=username already taken or your password is incorrect. Please try again");
        }
    }
else
{   mysql_query("alter table login auto_increment = 1;");
    $qry_name=mysql_query("INSERT INTO login(user,password) VALUES('$uname','$pass')");
    header("Location: welcome.php?id=$uname");
    }    
  }
  ?>
于 2013-03-30T10:43:15.517 回答
0

或者您可以在您的 verify_user.php 顶部添加此代码

<?php
$field = array('name', 'pass', ); //these are your required field of form
$empty = false;
foreach($field as $item)
{
  if (empty($_POST[$item]))
   {
    $error = true;
   }
}

if ($empty) 
{
  echo "please fill all field";
  header("location:form.php?msg=please fill all field"); 

}
?>

并且 msg 将显示在您的 form.php 页面上,<?php echo @$_GET['msg'];?>我希望这将更易于使用......这就是我们喜欢开源代码的原因......

于 2013-03-30T11:57:41.427 回答
0

只需在将字段分配给变量时检查字段是否为空:而不是这样做 -

$uname = $_POST['name'];
$pass  = $_POST['pass'];

做这个-

if(empty($_POST['name']))
     $NameErr = "Name shouldn't be empty";
else
     $uname = $_POST['name'];
if(empty($_POST['pass']))
     $PassErr = "Password shouldn't be empty";
else
     $pass = $_POST['pass'];

然后进一步编辑表单以在框旁边输出错误 -

<p align="center">Username :
  <input type="text" name="name" id="name" />
  <span class="Error"> <?php echo $NameErr ?></span>
</p>
<p align="center">Password :
  <input type="password" name="pass" id="pass" />
  <span class="Error"> <?php echo $PassErr ?></span>   
</p>

为了避免警告,全局声明 $PassErr 和 $NameErr 并用空字符串初始化它们。

于 2017-11-28T22:38:51.593 回答