0

我想使用 if(isset($_POST['name'])) 循环来测试用户是否输入数据,以便将其存储在数据库中,如果没有,即使我刷新页面也不要存储它!

我尝试使用 if(isset($_POST['name'])) 循环来测试用户是否输入数据,以便将其存储在数据库中,如果不是这样,即使我刷新页面但也不起作用,也不要存储它!当我刷新页面时,它会存储我之前尝试过的最后一个数据!

这是 index.php :

<!DOCTYPE html>
<html>
<body>
<ul><?php
  require "controller/database.php";
  require "controller/users.php";


  $user=new Users();
  $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']);


?></ul>

<form action="" method="POST">


<input type="text" name="name" required placeholder="Name"><br><br>

<input type="number" name="age" required placeholder="Age" ><br><br>
<input type="text" name="email" required placeholder="Email" ><br><br>

<button type="submit" name="insert" value="Add Data To Database"></button>

</form>
</body>
</html>

这是 users.php 文件:

 <?php
 class Users extends DB {
    function insertUser($name,$age,$email){

     $query = "INSERT INTO users (name, age, email )
    VALUES ('$name', '$age', '$email')";

            $res=$this->insert($query);

    //return $this->select("SELECT * FROM `users`");

} }

我尝试使用 if(isset($_POST['name'])) 循环来测试用户是否输入数据,以便将其存储在数据库中,如果不是这样,即使我刷新页面但也不起作用,也不要存储它!当我刷新页面时,它会存储我之前尝试过的最后一个数据!

请帮忙!!

它显示此错误并同时存储数据!

注意:未定义的索引:第 10 行 C:\xampp\htdocs\gestion de paie\index.php 中的名称

注意:未定义的索引:第 10 行 C:\xampp\htdocs\gestion de paie\index.php 中的年龄

注意:未定义索引:第 10 行 C:\xampp\htdocs\gestion de paie\index.php 中的电子邮件

4

2 回答 2

0

而不是isset,您应该使用!empty(看这里),因为isset它不适用于数组。isset($_POST["anything"])始终返回 true,而!empty($_POST["anything"])仅在$_POST["anything"]存在时才返回 true。

 <!DOCTYPE html>
<html>
<body>
<ul><?php
    require "controller/database.php";
    require "controller/users.php";

    if (!empty($_POST['name']) && !empty($_POST['age']) && !empty($_POST['email']) {
        $user=new Users();
        $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']);
    }

?></ul>

<form action="" method="POST">


<input type="text" name="name" required placeholder="Name"><br><br>

<input type="number" name="age" required placeholder="Age" ><br><br>
<input type="text" name="email" required placeholder="Email" ><br><br>

<button type="submit" name="insert" value="Add Data To Database"></button>

</form>
</body>
</html>

此外,您应该使用准备好的语句。

于 2019-01-16T17:18:05.000 回答
0

您可以在创建用户之前在索引文件中放置一个条件

索引.php

 <!DOCTYPE html>
<html>
<body>
<ul><?php
  require "controller/database.php";
  require "controller/users.php";

  if(isset($_POST['name']) && isset($_POST['age']) && isset($_POST['email']){
    $user=new Users();
    $user->insertUser($_POST['name'],$_POST['age'],$_POST['email']);
  }

?></ul>

<form action="" method="POST">


<input type="text" name="name" required placeholder="Name"><br><br>

<input type="number" name="age" required placeholder="Age" ><br><br>
<input type="text" name="email" required placeholder="Email" ><br><br>

<button type="submit" name="insert" value="Add Data To Database"></button>

</form>
</body>
</html>

也不要在没有清理的情况下将用户输入放在查询中,我建议在输入 sql 查询之前始终控制用户输入:

用户.php:

 <?php
 class Users extends DB {
    function insertUser($name,$age,$email){

    // Sanitize your data always don't trust user
    $name = mysql_real_escape_string($name);
    $age = mysql_real_escape_string($age);
    $email = mysql_real_escape_string($email);

    $query = "INSERT INTO users (name, age, email )
    VALUES ('$name', '$age', '$email')";

    $res=$this->insert($query); //return $this->select("SELECT * FROM `users`");

希望成为需要的问题:)

于 2019-01-16T17:08:01.757 回答