【问题标题】:PHP form error somwhere $_POST['SUBMIT'] [closed]PHP表单错误somwhere $_POST ['SUBMIT'] [关闭]
【发布时间】:2016-03-28 16:00:13
【问题描述】:

我不知道问题出在哪里,你能帮帮我吗?我无法调试这个。 我试图在任何地方放一个回声,看看问题出在哪里,它停在if(isset($_POST['SUBMIT'])) {

这是整个php:

<?php
$conn = mysqli_connect($IP, "pavip", "", "c9") or die("Kapcsolatot nem sikerult letrehozni!");

$error = "Here's the problem: ";
$err = false;
$name = $_POST['name'];
$password = $_POST['pass'];
$email = $_POST['email'];

if(isset($_POST['SUBMIT'])) {
    echo $name;
    if(isset($_POST['email'])){
        if($_POST['name'] != "") {
            if($_POST['pass'] == $_POST['pass2'] AND strlen($_POST['pass']) < 6) {
                if($_POST['email'] != "") {

                    $name = $_POST['name'];
                    $password = $_POST['pass'];
                    $email = $_POST['email'];

                    $sql = "INSERT INTO user (username, password, email)
                    VALUES ('$name, '$password','$email)";
                }else {
                    $error .= "No email";
                    $err = true;
                }
            }else {
                $error .= "Password too short or wrong ujrairas ";
                $err = true;
            }
        }else {
            $error .= "No name ";
            $err = true;
        }
    }else {

    }
}
if($err == true){ echo '<script type="text/javascript">alert("' . $error . '"); </script>';}
?>

这是我制作的表格:

<form action="index.php" method="Post" class="register">
                <input type="text" name="name" placeholder="Name(Can be nick!)">
                <input type="pasword" name="pass" placeholder="Password">
                <input type="password" name="pass2" placeholder="Password again">
                <input type="text" name="email" placeholder="Email address">
                <input type="submit" value="Register">
            </form>

【问题讨论】:

  • name attribute 在提交类型中丢失!!在提交按钮中添加name="SUBMIT"
  • 是的,这就是问题所在。谢谢! @djot:我不知道英文是什么,所以我用匈牙利文写了:)
  • 您的代码登录也有问题。如果密码少于 6 个字符,您将处理该表单。看起来您使用的是纯文本密码。您也对 sql 注入持开放态度。
  • 我只是想做一个演示@chris85 我想写一些东西来写东西到某个地方。但是现在我遇到了 mysql 的问题,所以我看到它有很多错误。
  • 我希望这不是直播或打算上线。

标签: php html mysql forms debugging


【解决方案1】:

首先,找不到$_POST['SUBMIT'],因为您的表单没有name 属性。

您需要指定它:

<input name="SUBMIT" type="submit" value="Register"/>

其次,您会错过'$email 的单引号:

$sql = "INSERT INTO user (username, password, email)
                VALUES ('$name, '$password','$email')";

第三,你应该使用mysqli_real_escape_string来防止MySQL注入:

$name = mysqli_real_escape_string($conn, $_POST['name']);
$password = mysqli_real_escape_string($conn, $_POST['pass']);
$email = mysqli_real_escape_string($conn, $_POST['email']);

第四,您可以考虑使用empty() 来检查空字段,例如:

if(!empty($_POST['name'])) {

【讨论】:

  • 非常感谢! @luweiqi
  • @pavip 不客气!很高兴解决了你的问题:)
  • 但是我必须了解更多关于安全的知识。我什至不知道为什么我需要mysql连接等等。再次感谢! :) @luweiqi
【解决方案2】:

请查看您的 HTML 中的任何地方都没有提到 input name="SUBMIT"。

改变你的:

<input type="submit" value="Register">

<input type="submit" value="Register" name="SUBMIT" />

希望这会有所帮助!

【讨论】:

    【解决方案3】:

    您没有名为“SUBMIT”的提交按钮 如果您想以这种方式使用它,您至少需要添加

    <input type="submit" name="SUBMIT">
    

    最好直接将提交路由到不同的控制器函数 请注意,您也可以使用 if($_POST) afaik

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-12-29
      相关资源
      最近更新 更多