Home > Back-end >  How Can I show array content inside the body of html
How Can I show array content inside the body of html

Time:10-25

This is my custom user registration form WordPress site, actually, this is my first custom development, and here all the data passes the DB my problem is I need to show my error message inside the HTML code. how can I do it? can anyone help me to solve this problem? now my error messages show like this (Array ( [username_empty] => Needed Username [email_valid] => Email has no valid value [texnumber_empty] => Needed Tax Number )) but I need only show error message only Ex: this one ( [username_empty] => Needed Username) I need to show "Needed Username" Like this.

if (is_user_logged_in()) {
    // echo '<script>alert("Welcome, registered user!")</script>';
    echo '<script type="text/javascript">';
    echo 'alert("Welcome, registered user!");';
    echo 'window.location.href = "Url";';
    echo '</script>';
} else {
    // echo 'Welcome, visitor!';

    global $wpdb;

    if ($_POST) {
        $username = $wpdb->escape($_POST['user_login']);
        $email = $wpdb->escape($_POST['user_email']);
        $taxnumber = $wpdb->escape($_POST['tax_number']);
        $password = $wpdb->escape($_POST['user_pass']);
        $ConfPassword = $wpdb->escape($_POST['user_confirm_password']);


        $error = array();
        if (strpos($username, ' ') !== FALSE) {
            $error['username_space'] = "Username has Space";
        }

        if (empty($username)) {
            $error['username_empty'] = "Needed Username";
        }

        if (username_exists($username)) {
            $error['username_exists'] = "Username already exists";
        }

        if (!is_email($email)) {
            $error['email_valid'] = "Email has no valid value";
        }

        if (email_exists($email)) {
            $error['email_existence'] = "Email already exists";
        }
        if (empty($taxnumber)) {
            $error['texnumber_empty'] = "Needed Tax Number";
        }

        if (strcmp($password, $ConfPassword) !== 0) {
            $error['password'] = "Password didn't match";
        }

        if (count($error) == 0) {

            $user_id = wp_create_user($username, $password, $email);

            $userinfo = array(
                'ID' => $user_id,
                'user_login' => $username,
                'user_email' => $email,
                'user_pass' => $password,
                'role'      => 'customer',
            );

            // Update the WordPress User object with first and last name.
            wp_update_user($userinfo);

            // Add the company as user metadata
            update_user_meta($user_id, 'tax_number', $taxnumber);
            echo '<script type="text/javascript">';
            echo 'alert("User Created Successfully");';
            echo 'window.location.href = "url";';
            echo '</script>';
            
            exit();
        } else {

            print_r($error);
        }
    }


?>
    <section id="wholesale-custom-register-form">
        <div >
            <div >
                <div >
                    <h1>Wholesale Register Form</h1>
                </div>
                <div >
                    <form  method="POST">
                        <div >
                            <label>User Name</label>
                            <input  type="text" name="user_login" id="user_login" placeholder="Username" />
                            <?php foreach ($error as $error) {
                                echo $error . "<br>";
                            } ?>
                        </div>
                        <div >
                            <label>Email</label>
                            <input  type="email" name="user_email" id="user_email" placeholder="Email" />
                        </div>
                        <div >
                            <label>Tax Number</label>
                            <input  type="text" name="tax_number" id="tax_number" placeholder="Tax Number" />
                        </div>
                        <div >
                            <label>Enter Password</label>
                            <input  type="password" name="user_pass" id="user_pass" placeholder="Password" />
                        </div>
                        <div >
                            <label>Enter Cofirm Password</label>
                            <input  type="password" name="user_confirm_password" id="user_confirm_password" placeholder="Cofirm Password" />
                        </div>
                        <div >
                            <button  type="submit" name="btnsubmit">Log In</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>

<?php

};

This is my code I will try many times but I can't get the error messages inside the HTML body.

CodePudding user response:

You want to make an AJAX call to register a user then use a callback function to check for success. If a field is invalid you also check it with javascript. So you would need to refactor your code, seperate it into frontend/backend code and connect it via AJAX.

  1. Write your PHP code as "add_action_hook" and register function
  2. Onclick validate fields and inputs
  3. Call the hook via AJAX (url: "/wp-admin/admin-ajax.php")
  4. Return result

These are just very abstract steps, you'll need to gather some intel for yourself. You could take a look at this: https://awhitepixel.com/blog/wordpress-use-ajax/ and https://docs.wpvip.com/technical-references/security/validating-sanitizing-and-escaping/

CodePudding user response:

I would do something like this

if (is_user_logged_in()) {
    // echo '<script>alert("Welcome, registered user!")</script>';
    echo '<script type="text/javascript">';
    echo 'alert("Welcome, registered user!");';
    echo 'window.location.href = "Url";';
    echo '</script>';
} else {
    // echo 'Welcome, visitor!';

    global $wpdb;

    if ($_POST) {
        $username = $wpdb->escape($_POST['user_login']);
        $email = $wpdb->escape($_POST['user_email']);
        $taxnumber = $wpdb->escape($_POST['tax_number']);
        $password = $wpdb->escape($_POST['user_pass']);
        $ConfPassword = $wpdb->escape($_POST['user_confirm_password']);



        if (strpos($username, ' ') !== FALSE) {
            $errorMsg[] = "Username has Space";
        }

        if (empty($username)) {
            $errorMsg[] = "Needed Username";
        }

        if (username_exists($username)) {
            $errorMsg[] = "Username already exists";
        }

        if (!is_email($email)) {
            $errorMsg[] = "Email has no valid value";
        }

        if (email_exists($email)) {
            $errorMsg[] = "Email already exists";
        }
        if (empty($taxnumber)) {
            $errorMsg[] = "Needed Tax Number";
        }

        if (strcmp($password, $ConfPassword) !== 0) {
            $errorMsg[] = "Password didn't match";
        }

        if (count($errorMsg) == 0) {

            $user_id = wp_create_user($username, $password, $email);

            $userinfo = array(
                'ID' => $user_id,
                'user_login' => $username,
                'user_email' => $email,
                'user_pass' => $password,
                'role'      => 'customer',
            );

            // Update the WordPress User object with first and last name.
            wp_update_user($userinfo);

            // Add the company as user metadata
            update_user_meta($user_id, 'tax_number', $taxnumber);
            echo '<script type="text/javascript">';
            echo 'alert("User Created Successfully");';
            echo 'window.location.href = "url";';
            echo '</script>';
            
            exit();
        } else {

            print_r($errorMsg);
        }
    }


?>
    <section id="wholesale-custom-register-form">
        <div >
            <div >
                <div >
                    <h1>Wholesale Register Form</h1>
                </div>
                <div >
                    <form  method="POST">
                        <div >
                            <label>User Name</label>
                            <input  type="text" name="user_login" id="user_login" placeholder="Username" />
                            <?php foreach ($errorMsg as $error) {
                             ?>
                                <div>
                                  <strong><?= $error; ?> </strong>
                                </div>
                            <?php
                              
                            } ?>
                        </div>
                        <div >
                            <label>Email</label>
                            <input  type="email" name="user_email" id="user_email" placeholder="Email" />
                        </div>
                        <div >
                            <label>Tax Number</label>
                            <input  type="text" name="tax_number" id="tax_number" placeholder="Tax Number" />
                        </div>
                        <div >
                            <label>Enter Password</label>
                            <input  type="password" name="user_pass" id="user_pass" placeholder="Password" />
                        </div>
                        <div >
                            <label>Enter Cofirm Password</label>
                            <input  type="password" name="user_confirm_password" id="user_confirm_password" placeholder="Cofirm Password" />
                        </div>
                        <div >
                            <button  type="submit" name="btnsubmit">Log In</button>
                        </div>
                    </form>
                </div>
            </div>
        </div>
    </section>

<?php

};
  • Related