【问题标题】:if(isset($_POST['Submit'])){ Not workingif(isset($_POST['Submit'])){ 不工作
【发布时间】:2015-03-05 17:32:48
【问题描述】:

我试图将用户输入的数据发布到我的数据库中,但是我的 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";
}

?>

【问题讨论】:

  • 需要更多信息和调试。另外,regstersql.php != regster.php
  • 不工作如何?除了大开的sql injection attack 漏洞之外,这段代码唯一的“错误”是即使表单从未提交过,您也会吐出“错误”。
  • 6 列,5 个值。做数学;-)

标签: php forms if-statement


【解决方案1】:

你需要改变

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

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

【讨论】:

    【解决方案2】:

    isset() 告诉您变量是否已定义,而不是是否已填充。

    试试这样的:

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

    【讨论】:

    • 另外,正如@AbraCadaver 所说,您的表单操作(register.php)与您的表单处理文件(regstersql.php)不同。
    • 你需要添加 ) if(isset($_POST['submit']) && !empty($_POST['submit'])) { // 字段中有东西,做东西} else { // 触发错误 }
    • 假设我的网站上有一个注册表单,其中包含name="username" 字段。使用if(!isset($_POST['username'])) 是否合适,因为用户无法尝试直接访问处理PHP 的表单并且username 字段有一些任意值??
    • @progyammer :我认为这是合适的,但如果没有看到您的代码,我无法确定。也许你应该再问一个问题。
    【解决方案3】:

    你做错了两件事:

    1) 你使用了两次标签:

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

    有一个结束标签

    2) 不要指定你可以使用 require 或 require_once ('yourfile.php') 的文件位置,在这个文件中你可以使用if(isset($_POST['submit'])) 处理你的 POST 提交,然后得到你想要的。

    【讨论】:

      【解决方案4】:

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

      删除顶部的表格将起作用。

      我知道这是一篇很老的帖子,但我想它可能会对一些人有所帮助。

      【讨论】:

        【解决方案5】:

        customerid 值传递问题。

        /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')";
        

        【讨论】:

          猜你喜欢
          • 2014-07-04
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-04-14
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多