我的注册表格中的验证无效

时间:2014-07-16 11:38:17

标签: php

我在php中创建了一个简单的注册表单,使用PDO存储在后端。当我输入空格键时,它将在后端作为空字段,如果我没有输入任何内容,则不会显示任何错误消息。

<?php
session_start();
$errmsg_arr = array();
$errflag = false;
// configuration
$dbhost     = "localhost";
$dbname     = "pdo_ret";
$dbuser     = "root";
$dbpass     = "";

// database connection
$conn = new PDO("mysql:host=$dbhost;dbname=$dbname",$dbuser,$dbpass);

// new data

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];

if($fname == '') {
    $errmsg_arr[] = 'You must enter your First Name';
    $errflag = true;
}
if($lname == '') {
    $errmsg_arr[] = 'You must enter your Last Name';
    $errflag = true;
}
if($age == '') {
    $errmsg_arr[] = 'You must enter your Age';
    $errflag = true;
}
if($errflag) {
    $_SESSION['ERRMSG_ARR'] = $errmsg_arr;
    session_write_close();
    header("location: index.php");
    exit();
}
// query
$sql = "INSERT INTO members (fname,lname,age) VALUES (:sas,:asas,:asafs)";
$q = $conn->prepare($sql);
$q->execute(array(':sas'=>$fname,':asas'=>$lname,':asafs'=>$age));
header("location: index.php");
 ?>

2 个答案:

答案 0 :(得分:1)

如果只有空格的字符串是错误的,则应使用trim函数:

if(trim($fname) == '') {
    $errmsg_arr[] = 'You must enter your First Name';
    $errflag = true;
}
if(trim($lname) == '') {
    $errmsg_arr[] = 'You must enter your Last Name';
    $errflag = true;
}
if(trim($age) == '') {
    $errmsg_arr[] = 'You must enter your Age';
    $errflag = true;
}

答案 1 :(得分:0)

您应该使用修剪功能但不能在条件下使用,但在分配$ _POST数据时

而不是:

$fname = $_POST['fname'];
$lname = $_POST['lname'];
$age = $_POST['age'];

你应该有代码:

$fname = trim($_POST['fname']);
$lname = trim($_POST['lname']);
$age = trim($_POST['age']);

否则,您将使用可能的白色字符将数据放入数据库,这将导致将来出现问题。