如果(isset($_POST['Submit'])){ 不起作用

4
我正在尝试将用户输入的数据POST到我的数据库中,但是我用于确保只有在提交按钮被按下后才会发生这种情况的if语句没有起作用。请帮忙解决!以下是代码...
<form>
    <form method="post" action="register.php" >
  <table align="center">
    <tr>
      <td align="right">First Name:</td>
      <td align="left"><input type="text" name="FirstName"></td>
    </tr>
    <tr>
      <td align="right">Last Name:</td>
      <td align="left"><input type="text" name="LastName"></td>
    </tr>
    <tr>
      <td align="right">Email:</td>
      <td align="left"><input type="text" name="Email" /></td>
    </tr>
    <tr>
      <td align="right">Password:</td>
      <td align="left"><input type="password" name="Password"></td>
    </tr>
    <tr>
      <td align="right">Gender:</td>
      <td align="left"><input type="text" name="Gender"></td>
    </tr>
    <tr>
      <td align="right">Age:</td>
      <td align="left"><input type="text" name="Age"></td>
    </tr>
  </table>
<input type="submit" value="Submit" name="Submit">
</form>

<?php include ("registersql.php"); ?>

我的regstersql.php

<?php
//include connection
 include ("connection.php");
//has form been submitted?
if(isset($_POST['Submit'])){
    $FirstName=$_POST['FirstName'];
    $LastName=$_POST['LastName'];
    $Email=$_POST['Email'];
    $Password=$_POST['Password'];
    $Gender=$_POST['Gender'];
    $Age=$_POST['Age'];
//Insert data
$query = "INSERT INTO Customers
(CustomerID, FirstName, LastName, Email, Password, Gender,Age)
VALUES
('$FirstName','$LastName','$Email','$Password','$Gender','$Age')";
mysqli_query($connection,$query);
} else
{
    echo "Error";
}

?>

1
需要更多信息和调试。另外,regstersql.php!= regster.php - AbraCadaver
3
除了可能存在的广泛开放的 SQL 注入攻击漏洞之外,这段代码的唯一问题是,即使表单从未被提交,它也会输出“错误”。关于“不工作”的具体情况是什么? - Marc B
2
6列,5个值。做个数学运算吧;-) - Funk Forty Niner
5个回答

3

isset()函数用于判断变量是否已经被定义(即是否存在),而不是判断变量是否已经被赋值。

你可以尝试使用以下语句:

if(isset($_POST['submit']) && !empty($_POST['submit'])) {
    // there is something in the field, do stuff
} else {
    // trigger error
}

另外,正如@AbraCadaver所说,您的表单操作(register.php)与您的表单处理文件(regstersql.php)不同。 - chakeda
1
如果(isset($_POST['submit']) && !empty($_POST['submit'])) { // 字段中有内容,执行某些操作 } else { // 触发错误 } - Peternak Kode Channel
假设我在我的网站上有一个注册表单,其中有一个名为 name="username" 的字段。使用 if(!isset($_POST['username'])) 是否合适,因为没有办法用户直接访问表单处理的 PHP,并且 username 字段得到了一些任意值? - progyammer
@程序员:我认为这可能是合适的,但如果没有看到你的代码,我无法确定。也许你应该提出另一个问题。 - chakeda

3

您需要从

<form method="post" action="register.php" >

为了

<form method="post" action="" >  //Sends data on same page. There is no register.php exist.

0

你做了两件错误的事情:

1)你使用了两次 <p> 标签:

<form method="post" action="register.php" >

带有一个闭合标签

2)不要指定文件位置,可以使用require或require_once('yourfile.php'),并在此文件中使用if(isset($_POST['submit']))处理您的POST提交,然后进行您想要的操作。


0

您已经使用了两次表单标签

删除上面的一个表单标签,表单就能正常工作。

我知道这是一个非常久远的帖子,但我觉得它可能会对一些人有所帮助。


-3

客户ID值传递中出现问题。

/Insert data
$query = "INSERT INTO Customers
(CustomerID, FirstName, LastName, Email, Password, Gender,Age)
VALUES
('$FirstName','$LastName','$Email','$Password','$Gender','$Age')";
mysqli_query($connection,$query);
} else
{
    echo "Error";
}

?>

看上面的代码,如果客户ID自动提到为空,则不会插入,但您没有提到任何内容,因此不会插入数据。 如果在用户端提到成功消息,将显示但不插入数据。

用法如下:

values('','$FirstName','$LastName','$Email','$Password','$Gender','$Age')";

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接