簡體   English   中英

我的注冊表中的驗證無效

[英]Validation in my registration form is not working

我使用PDO在php中創建了一個簡單的注冊表單,以存儲在后端。 當我輸入空格鍵時,它將在后端視為空白字段,如果我未輸入任何內容,則不會顯示任何錯誤消息。

<?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");
 ?>

如果僅包含空格的字符串是錯誤的字符串,則應使用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;
}

您應該使用修整功能,但在分配$ _POST數據時不得使用

代替:

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

您應該具有以下代碼:

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

否則,您會將可能帶有白色字符的數據放入數據庫中,並且將來會引起問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM