首页 > 解决方案 > 我想通过获取成功注册后设置的 URL 参数来更改或删除我的 html 元素

问题描述

首先我必须说我对网站设计和编码非常陌生,所以请让你的回答简单,非常感谢。

所以我有我的文件 register.php ,其中包含我的表单。我有一个名为 register-controller.php 的操作文件,它从 user 获取数据,检查它并将其插入到 database 。

我需要的是,每当注册成功时,我的表单就会被隐藏或删除,并且我的新 div 会显示,其中包含“注册成功”。(在同一页面上“register.php”)

我可以使用传递给标题“register=success”的变量来执行此操作吗?我应该使用 AJAX 吗?JSON?我应该怎么办 ?请给我最简单的答案谢谢大家。

我的“register.php”文件包含这些:

<?php 
require_once "../DB/users-database.php";
?>

<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="/Header.CSS">
    <link rel="stylesheet" href="/Style.CSS">
    <link rel="stylesheet" href="/Footer.CSS">
    <script src="https://kit.fontawesome.com/38b3678073.js" crossorigin="anonymous"></script>
    <script src="../JS/main.js" async></script>
    <title>ثبت نام | PCGA</title>
</head>
<body>

<?php include '../header.php' ?>

<div class="register-container">
    <form action="../controllers/register-controller.php" method = "POST">
        <label class = "email-label" for="email">ایمیل</label>
        <input type="text" id="email" name="email" placeholder="example@example.com" value = '<?php if(isset($_REQUEST['email'])){echo $_REQUEST['email'];}else{echo '';} ?>'>
        <?php 
        if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'emptyEmail'){
            echo "<span class = 'empty-email'>فیلد نباید خالی باشد *</span>";
        }
        else if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'invalidEmailFormat') {
            echo "<span class = 'formaterr-email'>فرمت ایمیل نادرست است*</span>";
        }
        ?>
        <label class = "phone-label" for="phone">شماره موبایل</label>
        <input type="text" id="phone" name="phone" placeholder="09xxxxxxxxx" value = '<?php if(isset($_REQUEST['phone'])){echo $_REQUEST['phone'];}else{echo '';} ?>'>
        <?php if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'emptyPhone'){
            echo "<span class = 'empty-phone'>فیلد نباید خالی باشد *</span>";
        }
        else if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'invalidPhoneNumber') {
            echo "<span class = 'formaterr-phone'>شماره موبایل حداکثر 11 عدد است و حروف قابل قبول نیست*</span>";
        }
        ?>
        <label class = "user-label" for="username">نام کاربری</label>
        <input type="text" id="username" name="username" placeholder="Username" value = '<?php if(isset($_REQUEST['username'])){echo $_REQUEST['username'];}else{echo '';} ?>'>
        <?php if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'emptyUsername'){
            echo "<span class = 'empty-user'>فیلد نباید خالی باشد *</span>";
        }
        else if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'invalidUserName') {
            echo "<span class = 'formaterr-user'>فرمت نام کابری نادرست است*</span>";
        }
        ?>
        <label class="pass-label" for="password">رمز عبور</label>
        <input type="password" id = "password" name = "password" placeholder = "Password" >
        <?php if (isset($_REQUEST['error']) && $_REQUEST['error'] == 'emptyPass'){
            echo "<span class = 'empty-pass'>فیلد نباید خالی باشد *</span>";
        }
        ?>
        <div class="checkbox-container">
            <input type="checkbox" class = 'checkbox-style' name = 'rules-check'>
            <label for="checkbox" class="checkbox-label">من قوانین فروشگاه را کامل مطالعه کرده ام و با آن موافق هستم</label>
            <?php if (isset($_REQUEST['rules'])){
            echo "<span class = 'rules-error'>قبول قوانین اجباری است و آن را حتما مطالعه کنید *</span>";
            }
            ?>
        </div>
        <button type="submit" name = "submit" id="submit">ثبت نام</button>
    </form>
</div>

<?php 
if (isset($_REQUEST['register'])){
    echo "<div class = 'register-success'>
    <span class = 'register-success-span'>ثبت نام با موفقیت انجام شد</span>
</div>" ;
}

?>

<?php include '../footer.php' ?>

</body>
</html>

我的“register-controller.php”文件包含这些:

<?php 
require "../DB/users-database.php";

function test_input($data) {
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}

if (isset($_POST['submit']) && $_POST['rules-check']) {
    $email = test_input($_POST["email"]);
    $phone = test_input($_POST["phone"]);
    $username = test_input($_POST["username"]);
    $pass = test_input($_POST["password"]);

    if (empty($username)){
        header("Location: ../page/register.php?error=emptyUsername&username=".$username."&email=".$email."&phone=".$phone);
        exit();
    }
    elseif (empty($phone)){
        header("Location: ../page/register.php?error=emptyPhone&username=".$username."&email=".$email."&phone=".$phone);
        exit();
    }
    elseif (empty($pass)){
        header("Location: ../page/register.php?error=emptyPass&username=".$username."&email=".$email."&phone=".$phone);
        exit();
    }
    elseif (empty($email)){
        header("Location: ../page/register.php?error=emptyEmail&username=".$username."&email=".$email."&phone=".$phone);
        exit();
    }
    elseif (!filter_var($email , FILTER_VALIDATE_EMAIL)) {
        header("Location: ../page/register.php?error=invalidEmailFormat&username=".$username."&phone=".$phone);
        exit();
    }
    elseif (!preg_match("/^[a-z\d_]{2,20}$/i" , $username)){
        header("Location: ../page/register.php?error=invalidUserName&email=".$email."&phone=".$phone);
        exit();
    }
    elseif (!preg_match("/^[0-9]{11}+$/" , $phone)){
        header("Location: ../page/register.php?error=invalidPhoneNumber&email=".$username."&phone=".$phone);
        exit();
    }
    else {
        $sql = "SELECT username FROM registered WHERE username = ?";
        $stmt = mysqli_stmt_init($conn);
        if(!mysqli_stmt_prepare($stmt , $sql)){
            header("Location: ../page/register.php?error=SQLcheckUser");
            exit();
        }
        else {
            mysqli_stmt_bind_param($stmt , "s" , $username);
            mysqli_stmt_execute($stmt);
            mysqli_stmt_store_result($stmt);
            $rowcount = mysqli_stmt_num_rows($stmt);
            if($rowcount > 0 ) {
                header("Location: ../page/register.php?error=UserNameTaken");
                exit();
            }
            else {
                $sql = "INSERT INTO registered(email,phone,username,password) VALUES(?,?,?,?)";
                $stmt = mysqli_stmt_init($conn);
                if(!mysqli_stmt_prepare($stmt , $sql)){
                    header("Location: ../page/register.php?error=SQLInsert");
                    exit();
                }
                else {
                    $hased_pass = password_hash($pass , PASSWORD_DEFAULT);
                    mysqli_stmt_bind_param($stmt , "ssss" , $email , $phone , $username , $hased_pass);
                    mysqli_stmt_execute($stmt);
                    header("Location: ../page/register.php?register=success");
                    exit();
                }
            }
        }
    }
    mysqli_stmt_close($stmt);
    mysqli_close($conn);
}
elseif (isset($_POST['submit']) && !isset($_POST['rules-check'])) {
    $email = test_input($_POST["email"]);
    $phone = test_input($_POST["phone"]);
    $username = test_input($_POST["username"]);
    $pass = test_input($_POST["password"]);
    header("Location: ../page/register.php?rules=notChecked&username=".$username."&email=".$email."&phone=".$phone);
    exit();
}
else {
    header("Location: ../page/register.php?access=denied");
    exit();
}

?>

标签: javascriptphphtml

解决方案


您可以根据您的 URL 参数呈现您喜欢的页面部分,方法是

<?php
if ($_GET['success']) { ?>

   <-- YOUR HTML SUCCESS CODE -->

<?php } else { ?>

   <-- YOUR HTML FORM CODE -->

<?php }
?>

推荐阅读