Php 注册表未重定向

Php 注册表未重定向,php,html,mysql,Php,Html,Mysql,我用HTML、PHP、MYSQL制作了这个注册表 因此,配置如下所示。当我填写表格并提交时,页面只需重新加载。我不知道我是否在PHP或HTML中遗漏了一些东西 我不知道发生了什么事 也许您可以发现错误… 在页面底部使用此代码 <?php session_status(); include('includes/config.php'); if (isset($_POST['submit'])) { $firstname = $_POST['firstname']; $lastnam

我用HTML、PHP、MYSQL制作了这个注册表

因此,配置如下所示。当我填写表格并提交时,页面只需重新加载。我不知道我是否在PHP或HTML中遗漏了一些东西

我不知道发生了什么事

也许您可以发现错误…


在页面底部使用此代码

<?php
session_status();
include('includes/config.php');
if (isset($_POST['submit'])) {
  $firstname = $_POST['firstname'];
  $lastname = $_POST['lastname'];
  $email = $_POST['email'];
  $mobile = $_POST['mobile'];
  $username = $_POST['username'];
  $password = md5($_POST['password']);

$sql = "INSERT INTO users(firstname,lastname, email, mobile, username, 
password) VALUES(:firstname, :lastname, :email, :mobile, :username, 
:password, 1)";
$query = $dbh->prepare($sql);
$query->bindParam(':firstname', $firstname, PDO::PARAM_STR);
$query->bindParam(':lastname', $lastname, PDO::PARAM_STR);
$query->bindParam(':email', $email, PDO::PARAM_STR);
$query->bindParam(':mobile', $mobile, PDO::PARAM_STR);
$query->bindParam(':username', $username, PDO::PARAM_STR);
$query->bindParam(':password', $password, PDO::PARAM_STR);
$query->execute();
$lastInsertId = $dbh->lastInsertId();
 if ($lastInsertId) {
    $_SESSION['msg'] = 'Registration Sucessfull';
 } else {
    $_SESSION['msg'] = 'Something went wrong. Please try again';
 }
}
header('Location:profile.php');

在继续之前,您应该检查POST数组中的所有必填字段是否可用,并且需要修改SQL以删除输入值末尾的随机数
1
。在准备SQL语句时,您应该使用
prepare
方法的返回值,以确保语句创建成功,而不是盲目依赖它-调用
execute
方法时的类似方法将进一步帮助分叉程序逻辑

if( $_SERVER['REQUEST_METHOD']=='POST'){
    include('includes/config.php');

    if( isset( 
        $_POST['submit'],
        $_POST['firstname'],
        $_POST['lastname'],
        $_POST['email'],
        $_POST['mobile'],
        $_POST['username'],
        $_POST['password'] 
    ) ){

        $firstname=$_POST['firstname'];
        $lastname=$_POST['lastname'];
        $email=$_POST['email'];
        $mobile=$_POST['mobile'];
        $username=$_POST['username'];
        $password=md5($_POST['password']);

        $sql ='insert into `users` 
            ( `firstname`, `lastname`, `email`, `mobile`, `username`, `password` ) 
                values 
            ( :firstname, :lastname, :email, :mobile, :username, :password )';

        $query=$dbh->prepare( $sql );

        if( $query ){
            $query->bindParam(':firstname', $firstname, PDO::PARAM_STR);
            $query->bindParam(':lastname', $lastname, PDO::PARAM_STR);
            $query->bindParam(':email', $email, PDO::PARAM_STR);
            $query->bindParam(':mobile', $mobile, PDO::PARAM_STR);
            $query->bindParam(':username', $username, PDO::PARAM_STR);
            $query->bindParam(':password', $password, PDO::PARAM_STR);

            $res=$query->execute();

            if( $res ){
                $lastInsertId = $dbh->lastInsertId();
                if($lastInsertId){
                    echo "<script>
                        alert('Registration Sucessfull!');
                        location.href='profile.php';
                    </script>";         
                }else{
                    $error="Something went wrong. Please try again";
                }
            }   
        }else{
            exit('Error: Failed to prepare SQL statement');
        }
    }
}
if($\u服务器['REQUEST\u METHOD']=='POST'){
include('includes/config.php');
如果(isset(
$\u POST['submit'],
$\u POST['firstname'],
$\u POST['lastname'],
$\u POST[“电子邮件”],
$\u POST['mobile'],
$\u POST['username'],
$\u POST['password']
) ){
$firstname=$_POST['firstname'];
$lastname=$\u POST['lastname'];
$email=$_POST['email'];
$mobile=$_POST['mobile'];
$username=$_POST['username'];
$password=md5($_POST['password']);
$sql='insert到'users'中'
(`firstname`、`lastname`、`email`、`mobile`、`username`、`password`)
价值观
(:firstname,:lastname,:email,:mobile,:username,:password);
$query=$dbh->prepare($sql);
如果($query){
$query->bindParam(':firstname',$firstname,PDO::PARAM_STR);
$query->bindParam(':lastname',$lastname,PDO::PARAM_STR);
$query->bindParam(':email',$email,PDO::PARAM_STR);
$query->bindParam(':mobile',$mobile,PDO::PARAM_STR);
$query->bindParam(':username',$username,PDO::PARAM_STR);
$query->bindParam(':password',$password,PDO::PARAM_STR);
$res=$query->execute();
如果($res){
$lastInsertId=$dbh->lastInsertId();
如果($lastInsertId){
回声“
警报(“注册成功!”);
location.href='profile.php';
";         
}否则{
$error=“出现问题,请重试”;
}
}   
}否则{
退出('错误:准备SQL语句失败');
}
}
}

我在这行找到了错误

$sql ="INSERT INTO users(firstname,lastname, email, mobile, username, password) 
VALUES(:firstname, :lastname, :email, :mobile, :username, :password, 1)";
为什么最后是1?? 我刚刚重新生活,从一开始它就起作用了

$sql ="INSERT INTO users(firstname,lastname, email, mobile, username, password) 
VALUES(:firstname, :lastname, :email, :mobile, :username, :password)";

当你有一个绑定到表单的事件处理程序时,你能发布这个函数吗?另外-看起来你的SQL在值的末尾有一个虚假的
1
,所以你的语句会失败对不起,我是一个完全的新手,当涉及到PHP/MySQL时,我该如何添加事件处理程序?还有一点:不要使用
md5
散列用户的密码,它根本不够安全,因为
md5
被认为已经坏了好几年了。改为使用
password\u hash
,另一方面,使用
password\u verify
无法解决OP需要如何识别错误的问题。他说,提交数据后,页面将变为白色。如果有错误,为什么会变成白色。需要显示一些错误。我删除了一个并更新了上面的代码。仍然只是重新加载注册页面,数据库中没有条目。@CullenCarstens如果在同一页面中有php代码,请从起始表单中删除此操作=“register.php”。tagI更正了上面的代码,这是针对状态;)还有一个问题。。为什么页面重定向到index.php而不是profile.php?与其使用
javascript
弹出一条消息,然后重定向,不如简单地使用php,并在
profile.php
上显示一条临时消息。为什么它会重定向到
index.php
——我不确定。它会弹出警告消息吗?是的,在我单击“注册”后,它会弹出一条消息,说“注册成功!”然后带我去index.php。