php - 向当前 PHP 登录表单添加对空输入的验证

标签 php mysql forms post

我目前有一个表单,用于检查用户名和密码是否存在并记录您并将您重定向到主页。但是,如果您将电子邮件和密码部分留空,您也可以登录该网站。我希望添加某种验证以避免有人仅使用空输入变量。

这就是我所拥有的...

<?php
session_start();
include_once 'config.php';
$email ="";
$userpassword ="";
$errors = 0;

$emailError ="";
$passwordError ="";

if(isset($_SESSION['user'])!="")
{
 header("Location: home.php");
}
if(isset($_POST['loginBtn']))
{
if(!filter_var($_POST["email"], FILTER_VALIDATE_EMAIL))
{
$emailError = "Email is not valid";
$errors = 1;
 }

if(!empty($_POST["password"])) {

$passwordError = "Please enter a Password";
$errors = 1;
}

$email = mysql_real_escape_string($_POST['email']);
$userpassword = mysql_real_escape_string($_POST['password']);
$result=mysql_query("SELECT * FROM users WHERE emailAddress='$email'");
$row=mysql_fetch_array($result);

if($row['password']==md5($userpassword))
{
 $_SESSION['user'] = $row['user_id'];

 header("Location: home.php");
 }
 else
 {
  ?>
    <script>alert('First time visitors, please create an account to play');      </script>
    <?php
  }

  }

  ?>

最佳答案

客户端验证(例如 JavaScript 和 HTML5)可以关闭或通过浏览器直接编辑。始终使用服务器端验证作为最终权威。

此外,在检查登录凭据时,您需要在 where 子句中进行组合检查。 其中用户名='$u_user'并且密码='$u_pass'

当允许重复使用控制列(用户名、电子邮件)时尤其如此。密码并不总是唯一的。

在OP的情况下,对电子邮件的查找只能返回多个结果。

<?php
session_start();
include_once('config.php');
IF (isset($_SESSION['user'])!="") { header("Location: home.php"); }

IF (isset($_POST['loginBtn'])) { // the form was submitted

  $err = ""; // default error as empty
  $email= trim($_POST['email']);
  $password = trim($_POST['password']);

  // validation
  IF (empty($email)) { $err .= "Email is empty<br>";
  }ELSE{
    IF (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
      $err .= "Email is not valid<br>";
    }
  }

  IF (empty($password)) { $err .= "Password is empty<br>"; }

  IF (!empty($err)) {

    // there are errors
    echo("<p>".$err."</p>");

  }ELSE{

    // No errors
    $uemail = mysql_real_escape_string($email);
    $upass = mysql_real_escape_string(md5($password));
    $result = mysql_query("SELECT * FROM users WHERE emailAddress='$uemail' && password = '$upass'");
    IF ($result) {
      // set session
      $row = mysql_fetch_array($result);
      $_SESSION['user'] = $row['user_id'];

    }ELSE{
      echo("<p>Email address and or your password was incorrect.<br>If you do not have an account please create one.</p>");
    }

    // Close DB connection
    mysql_close($Your_db_connection);

    // redirect if session is set
    IF (isset($_SESSION['user'])) { header("Location: home.php"); }

  }

}ELSE{
  // form not submitted

}
?>

关于php - 向当前 PHP 登录表单添加对空输入的验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34028063/

相关文章:

php - 在 Linux 上查找产品 UUID 可以在 CLI 中使用,但不能在 PHP 中使用

PHP:验证表单并显示警报

php - 在 php 服务器端使用 meteor.js

mysql - 从 jboss AS 7.0.1 服务器调用时,数据未显示在 BirtReports 中

javascript - 如何使用预览从数组 $_FILES 中删除一张图像 - Javascript/PHP

php - 停止 HTML 转换 & 代码

php - SQL查询没有返回值

php - 如何将 mysql 连接结果包含到 PHP 多维数组中

java - 如何配置spring mvc根据Jackson注释填充@RequestMapping的参数?

javascript - jqtransform表单事件问题