php
2017-03-04 96 views 0 likes 
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 = 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'); 
}  
} 

我搜索像我所有的问题,但没有运气。

+1

你有双}括号为最后如果,这是没有正确地发生Else {block ... Als o我发现您的代码存在安全问题。我建议你为post变量做一些消毒。 – Mohsin

回答

0

我建议两两件事:

  1. 合并的,如果一个块的条件,这将删除括号混乱了,因为我在上面注释中提到,也通过Sujith指出。

  2. 此外,我建议你发送给数据库查询之前,消毒$ _ POST变量...

看到建议的更改下面的代码:

<?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'); 
} 
}  
+0

在哪里,我应该把另一个大括号?你错过了一个大括号 –

+0

哦,你是对的,那个去结束} – Mohsin

+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'); 
    }  
    } 
    } 
+0

它也不工作先生。它插入的名称与之前插入数据库中的名称相同。 :( –

0

尝试与此查询:

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

你应该阅读关于SQL注入 –

相关问题