dongza1708 2014-05-17 16:13
浏览 30

Javascript空白通过表单传递

I have a sign up form that uses AJAX to pass the data to a PHP script and enter it into a MySQL database.

However, the issue I am having is that when someone enters a username like so this: "Username Test" the space isn't parsed properly, so when you go to view the profile of that user via a link it won't work.

So my question is how to parse a space within Javascript and PHP if you know as well but I'm pretty sure the PHP side of things is good.

Firebug outputs this when the form is submitted:

Parameters application/x-www-form-urlencoded emailSignUp nickdimartino91@gmail.com passwordSignUp nidima10 usernameSignUp Username Test Source usernameSignUp=Username+Test&passwordSignUp=nidima10&emailSignUp=nickdimartino91%40gmail.com

I echo'd the value of the username field within the PHP script and it returns with a space in the username. Yet it's not getting entered that way into the DB. What is the issue?

UPDATE: Not sure what I did but all is working now!

Sign up form:

    <form action="<?php echo $_SERVER['PHP_SELF'];?>" id="signUpForm" method="post" name="signUpForm">
        <input class="formInput" id="usernameSignUp" name="usernameSignUp" placeholder="Username" required="required" type="text" style="margin-right: 6px;">
        <input class="formInput" id="passwordSignUp" name="passwordSignUp" placeholder="Password" required="required" type="password" /><br>
        <input class="formInput" id="emailSignUp" name="emailSignUp" placeholder="Email" required="required" type="email" style="margin-bottom: 10px; margin-top: 10px; width: 326px;"><br>
        <input class="formButton" id="signUpSubmit" name="signUpSubmit" type="submit" value="Sign Up">
        <div id="signUpLoading" style="display: none; height: auto; margin-top: 10px; width: auto;"><img alt="Loading" src="/images/loading.gif"><span class="loadingMessage">Signing up...</span></div>
        <div id="signUpResponse" style="display: none; height: auto; margin-top: 10px; width: auto;"></div>
    </form>

JS bit that does the AJAX stuff:

    <script>
    $(document).ready(function() {
        $("#signUpForm").submit(function() {
            $(document).ajaxStart(function() {
                $("#signUpLoading" ).show();
            });
            $.ajax({
                url:"/ajax/signUp.php", // Action of the form
                data:$("#signUpForm").serialize(), // Send forms data to server
                dataType:"JSON", // Take response as JSON
                type:"POST", // Send form by post or get
                complete:function(result) {
                    $(document).ajaxStop(function() {
                        $("#signUpLoading" ).hide();
                    });
                    $("#signUpResponse").html(result.responseText);
                    $("#signUpResponse").slideDown("slow");
                }
            });
            return false;  // Default submit return false
        });
    });
    </script>

signUp.php

    <?php
    require('../core/core.php');
    if (!empty($_POST)) {
        $username = $_POST['usernameSignUp'];
        $password = $_POST['passwordSignUp'];
        $email = strtolower($_POST['emailSignUp']);
        if (empty($username)) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">Please enter a username.</span>';
        }
        elseif (empty($password)) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">Please enter a password.</span>';
        }
        elseif (empty($email)) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">Please enter your email address.</span>';
        }
        elseif (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">Please enter a valid email address.</span>';
        }
        elseif (strlen($username) < 2 || strlen($username) > 32) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">Your username must be between 2 and 32 characters long.</span>';
        }
        elseif (strlen($password) < 6 || strlen($password) > 32) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">Your password must be between 6 and 32 characters long.</span>';
        }
        elseif ($users->userExists($username) === true) {
        $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">The username you\'ve entered is unavailable.</span>';
        }
        elseif ($users->emailExists($email) === true) {
            $errors[] = '<img alt="Error" src="/images/error.png"><span class="errorMessage">The email you\'ve entered is already associated with another account.</span>';
        }
        else {
            $hashedPassword = password_hash($password, PASSWORD_BCRYPT, ['cost' => 12]);
            $users->signUp($username, $hashedPassword, $email);
            echo '<img alt="Success" src="/images/success.png"><span class="successMessage">Thanks for joining the LiveGrooves Community!<br>We\'ve sent you an email with your account information, an activation link, and some tips on getting started.</span>';
            return true;
        }
    }
    if (!empty($errors)) {
        echo '<p>' . implode('</p><p>', $errors) . '</p>';
    }
    ?>
  • 写回答

0条回答 默认 最新

    报告相同问题?

    悬赏问题

    • ¥20 易康econgnition精度验证
    • ¥15 线程问题判断多次进入
    • ¥15 msix packaging tool打包问题
    • ¥28 微信小程序开发页面布局没问题,真机调试的时候页面布局就乱了
    • ¥15 python的qt5界面
    • ¥15 无线电能传输系统MATLAB仿真问题
    • ¥50 如何用脚本实现输入法的热键设置
    • ¥20 我想使用一些网络协议或者部分协议也行,主要想实现类似于traceroute的一定步长内的路由拓扑功能
    • ¥30 深度学习,前后端连接
    • ¥15 孟德尔随机化结果不一致