表单验证不起作用

时间:2017-03-04 10:47:42

标签: php

如果用户输入了重复的名称,我想显示错误。但是,它没有用。它保持名称插入即使它是相同的。所以,这是我的代码:

$namaErr = "";
$error==false;
if (isset($_POST['btnSubmit'])) {
if(isset ($_POST['nama'])){
$nama = $_POST['nama'];
$query ='SELECT nama FROM daftar_pengguna WHERE nama="' . $nama . '" LIMIT 
1';
$result = mysqli_query($query);
$totalNumRowResult = mysqli_num_rows($result);
if($totalNumRowResult > 0){
$error=true;
$namaErr="Nama ini telah digunakan!!";
} 
}

如果没有错误,它将插入数据库中:

else{
$query="INSERT INTO daftar_pengguna(nama) VALUES 
('$nama')";
$res = mysqli_query($query);
header('Location:index.php?registered=true');  
}    
}

我已经像我一样搜索了所有问题,但没有运气。

3 个答案:

答案 0 :(得分:0)

支架有问题。这应该工作

$namaErr = "";
$error==false;
if (isset($_POST['btnSubmit'])) {
   if(isset ($_POST['nama'])){
      $nama = $_POST['nama'];
           $query ='SELECT nama FROM daftar_pengguna WHERE nama="' .$nama . '" LIMIT 1';
 $result = mysql_query($query);
 $totalNumRowResult = mysql_num_rows($result);
 if($totalNumRowResult > 0){
 $error=true;
 $namaErr="Nama ini telah digunakan!!";
  } 
 else{
    $query="INSERT INTO daftar_pengguna(nama) VALUES 
    ('$nama')";
    $res = mysql_query($query);
    header('Location:index.php?registered=true');  
    }    
    }
  }

答案 1 :(得分:0)

我建议两件事:

  1. 将if条件合并到一个区块,这将消除我在上面评论中提到的并且Sujith也注意到的大括号混乱。

  2. 另外我建议您在发送到数据库查询之前清理$ _POST变量...

  3. 请参阅以下代码并提供修改建议:

    <?php
    
    $namaErr = "";
    $error = false;
    
    # Merge condition checks in One block using && (AND)
    if (isset($_POST['btnSubmit']) && isset($_POST['nama'])) {
    
    $nama = $_POST['nama'];
    
    # Sanitize the input before running into Database query
    $nama = filter_var($nama, FILTER_SANITIZE_STRING);
    
    
    $query ='SELECT nama FROM daftar_pengguna WHERE nama="' . $nama . '" LIMIT 
    1';
    $result = mysql_query($query);
    $totalNumRowResult = mysql_num_rows($result);
    
    if($totalNumRowResult > 0){
      $error=true;
      $namaErr="Nama ini telah digunakan!!";
    } 
    else{
      $query="INSERT INTO daftar_pengguna(nama) VALUES ('$nama')";
      $res = mysql_query($query);
      header('Location:index.php?registered=true');  
    }
    }    
    

答案 2 :(得分:0)

尝试使用此查询:

$query ='SELECT nama FROM daftar_pengguna WHERE nama="' . $nama . '" ';