Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/262.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在注册表顶部显示注册表页的结果_Php_Forms - Fatal编程技术网

Php 在注册表顶部显示注册表页的结果

Php 在注册表顶部显示注册表页的结果,php,forms,Php,Forms,我对编码知之甚少。 这与我正在创建的注册表有关。我已经创建了表单。它正在将表单添加到数据库中。但它希望它显示结果,例如,表单顶部的“密码不匹配,请重试”。怎么弄到的? 提前谢谢 这是我的代码: <?php $conn = mysqli_connect("localhost","root",""); if(! $conn ) { die('Could not connect: ' . mysql_error()); } mysqli_select_db($conn, 'r

我对编码知之甚少。 这与我正在创建的注册表有关。我已经创建了表单。它正在将表单添加到数据库中。但它希望它显示结果,例如,表单顶部的“密码不匹配,请重试”。怎么弄到的? 提前谢谢

这是我的代码:

<?php

$conn = mysqli_connect("localhost","root","");
if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
mysqli_select_db($conn, 'registration');


    if(isset($_POST['submitbutton'])){

        if ($_POST['password'] == $_POST['confirm_password']) {
            $email = mysqli_real_escape_string($conn, $_POST['email']);
            $password = mysqli_real_escape_string($conn, $_POST['password']);
            $gender = mysqli_real_escape_string($conn, $_POST['gender']);
            $fname = mysqli_real_escape_string($conn, $_POST['fname']);
            $lname = mysqli_real_escape_string($conn, $_POST['lname']);
            $firm = mysqli_real_escape_string($conn, $_POST['firm']);

            $check_email_exists = mysqli_query($conn, "SELECT email FROM users WHERE email = '$email'");
            $count = mysqli_num_rows($check_email_exists);
            if ($count == 0) {
                $sql = "INSERT INTO users(email, password, gender, fname, lname, firm) VALUES('$email', '$password', '$gender', '$fname', '$lname', '$firm')";

                if(mysqli_query($conn, $sql)){
                    echo "Records added successfully.";
                } else{
                    echo "ERROR: Could not able to execute $sql. " . mysqli_error($conn);
                }

                // close connection
                mysqli_close($conn);
            } else {
                die('Email exists, Please use a different email');
            }
        }
        else {
            die('Passwords not matching, please try again');
        }
    }

在上述场景中,使用

<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">       

为每个错误消息创建一个变量
$message=“密码不匹配…”
,然后在
之后,您可以放置:

记得创建一个空白的
$message=”“

希望有帮助。

首先,不建议将表单和处理程序页面放在同一页面上,以避免通过刷新进行冗余插入。但是,在处理器部分,您必须在进程结束后使用任何重定向方法,在代码
die()
echo
中,应使用带有预先指定消息参数的重定向替换。例如,处理器中有四个端点,因此代码应该如下所示:

<?php

$conn = mysqli_connect("localhost","root","");
if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
mysqli_select_db($conn, 'registration');


    if(isset($_POST['submitbutton'])){

        if ($_POST['password'] == $_POST['confirm_password']) {
            $email = mysqli_real_escape_string($conn, $_POST['email']);
            $password = mysqli_real_escape_string($conn, $_POST['password']);
            $gender = mysqli_real_escape_string($conn, $_POST['gender']);
            $fname = mysqli_real_escape_string($conn, $_POST['fname']);
            $lname = mysqli_real_escape_string($conn, $_POST['lname']);
            $firm = mysqli_real_escape_string($conn, $_POST['firm']);

            $check_email_exists = mysqli_query($conn, "SELECT email FROM users WHERE email = '$email'");
            $count = mysqli_num_rows($check_email_exists);
            if ($count == 0) {
                $sql = "INSERT INTO users(email, password, gender, fname, lname, firm) VALUES('$email', '$password', '$gender', '$fname', '$lname', '$firm')";

                if(mysqli_query($conn, $sql)){
                    header("Location: user_login.php?msg=1");
                    exit();
                } else{
                    header("Location: user_login.php?msg=2");
                    exit();
                }

                // close connection
                mysqli_close($conn);
            } else {
                header("Location: user_login.php?msg=3");
                exit();
            }
        }
        else {
            header("Location: user_login.php?msg=4");
            exit();
        }
    }

$msg = [
  "Records added successfully.",
   "SQL Error",
   "Email exists, Please use a different email",
   "Passwords not matching, please try again"
];

if (isset($_GET['msg']) && isset($msg[($_GET['msg']-1)])){
 $message = $msg[($_GET['msg']-1)];
}

// In your form
....
</div>
 <?php if (isset($message)): ?>
 <div class="message"><?=$message;?></div>
<?php endif; ?>
    <div class="user-login">
        <form class="login-form....

什么是PHP和HTML文件以及它们在服务器上的位置?它们位于同一页面上,表示“了解用于的语句”。即使是这样也不安全!永远不要存储纯文本密码!请使用PHP来处理密码安全性。如果您使用的PHP版本低于5.5,则可以使用
密码\u hash()
。在散列之前,请确保对它们进行了清理或使用了任何其他清理机制。这样做会更改密码并导致不必要的额外编码。不在顶部显示,仍在顶部显示side@SibiKasim这可能是由于.css文件。您可以尝试将消息放在
标记之后。您好,感谢您的快速帮助。我试着用相反的方法。我能够以这种方式实现它,然后使用CSS定位来实现结果<代码>?>密码不匹配,请重试

非常感谢。。那救了我一天@SibiKasim不介意,别忘了投票支持答案!:)如果你在没有准备好陈述的情况下发布了答案。另外,@JayBlanchard非常好的注意,但是,我比其他任何一点都更专注于问题的要求点,最后我没有调试代码。@SaidbakR。。一个疑问。当我在线上传文件时。页面正在重定向到404错误页面。网址栏显示“l.com/home”/
<?php    
   if(isset($_POST['submitbutton'])){
      //perform validation, display error if any    
   }    
?>    
<?php

$conn = mysqli_connect("localhost","root","");
if(! $conn ) {
      die('Could not connect: ' . mysql_error());
   }
mysqli_select_db($conn, 'registration');


    if(isset($_POST['submitbutton'])){

        if ($_POST['password'] == $_POST['confirm_password']) {
            $email = mysqli_real_escape_string($conn, $_POST['email']);
            $password = mysqli_real_escape_string($conn, $_POST['password']);
            $gender = mysqli_real_escape_string($conn, $_POST['gender']);
            $fname = mysqli_real_escape_string($conn, $_POST['fname']);
            $lname = mysqli_real_escape_string($conn, $_POST['lname']);
            $firm = mysqli_real_escape_string($conn, $_POST['firm']);

            $check_email_exists = mysqli_query($conn, "SELECT email FROM users WHERE email = '$email'");
            $count = mysqli_num_rows($check_email_exists);
            if ($count == 0) {
                $sql = "INSERT INTO users(email, password, gender, fname, lname, firm) VALUES('$email', '$password', '$gender', '$fname', '$lname', '$firm')";

                if(mysqli_query($conn, $sql)){
                    header("Location: user_login.php?msg=1");
                    exit();
                } else{
                    header("Location: user_login.php?msg=2");
                    exit();
                }

                // close connection
                mysqli_close($conn);
            } else {
                header("Location: user_login.php?msg=3");
                exit();
            }
        }
        else {
            header("Location: user_login.php?msg=4");
            exit();
        }
    }

$msg = [
  "Records added successfully.",
   "SQL Error",
   "Email exists, Please use a different email",
   "Passwords not matching, please try again"
];

if (isset($_GET['msg']) && isset($msg[($_GET['msg']-1)])){
 $message = $msg[($_GET['msg']-1)];
}

// In your form
....
</div>
 <?php if (isset($message)): ?>
 <div class="message"><?=$message;?></div>
<?php endif; ?>
    <div class="user-login">
        <form class="login-form....