用户在php中登录时从用户名中删除空格

时间:2018-07-24 06:47:29

标签: php

我正在尝试在用户登录时从用户名中删除空格。例如,如果他们具有TEST BHA之类的用户名(TEST和BHA之间有空格),我希望该用户名应为TESTBHA,但不能有空格,并且必须用户自行登录时请小写。

我找到了一些解决方案,但这些解决方案在我的情况下不起作用。谁能帮我解决这个问题。

这是我的用户名:

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

        global $DB;

         $username = str_replace(" ", "", $_POST['username']);
         $password = $_POST['password'];
         $sql = "SELECT * FROM {user}  where username = ?";

        if ($user = $DB->get_record_sql($sql, array($username))) {
            //echo $user->password;
            //exit;
            if (password_verify($password, $user->password)) {
                if ($password != 'changeme'){
                  if ($user->trackforums == 1) {
                    complete_user_login($user);
                    \core\session\manager::apply_concurrent_login_limit($user->id, session_id());
                    $userauth = get_auth_plugin($USER->auth);

                    $DB->set_field('user', 'firstaccess', date('YmdHis'), array('id' => $user->id));
                    $_SESSION['username'] = $user->username;
                    $_SESSION['firstname'] = $user->firstname;
                    $_SESSION['idnumber'] = $user->idnumber;
                    $_SESSION['id'] = $user->id;
                    $_SESSION['clientid'] = $user->clientid;
                    $_SESSION['maildigest'] = $user->maildigest;
                    $_SESSION['skype'] = $user->skype;
                    $_SESSION['can_access'] = true;
                    $_SESSION['mnethostid'] = 1;
                    $_SESSION['confirmed'] = 1;

                    if (!empty($_POST["remember"])) {
                        setcookie("member_login", $_POST["username"], time() + (10 * 365 * 24 * 60 * 60));
                        setcookie("password", $_POST["password"], time() + (10 * 365 * 24 * 60 * 60));
                    } else {
                        if (isset($_COOKIE["member_login"])) {
                            setcookie("member_login", "");
                        }
                        if (isset($_COOKIE["password"])) {
                            setcookie("password", "");
                        }
                    }

                    if ($user->idnumber == '3')
                        header('location:course.php');
                    elseif ($user->idnumber == '2')
                        header('location:course.php');
                    else
                        header('location:course.php');
                }

                else {
                    ?>
                    <div class="alert alert-danger">
                        <strong> Sorry, User has been Deactivated. Contact Administrator</strong>
                    </div>
                    <?php
                }
            }
                else {
                    ?>
                    <div class="alert alert-primary">
                        <strong>Please change your password! By clicking this link <a style="color:red" href="forgot-password.php">Click Here</a></strong>
                    </div>
                    <?php
                }
            } else {
                ?>
                <div class="alert alert-danger">
                    <strong> Sorry, wrong password.</strong>
                </div>
                <?php
            }
        } else {
            ?>
            <div class="alert alert-danger">
                <strong> Sorry, wrong username.</strong>
            </div>
            <?php
        }
    }

4 个答案:

答案 0 :(得分:1)

您可以尝试str_replace()

<?php 
$no_spaces = str_replace(' ', '', $_POST['username']);

答案 1 :(得分:1)

只需使用str_replace函数。

示例:$ username = str_replace(“”,“”,$ _POST ['username']);

需要三个参数,第一个是要搜索的内容,第二个是要替换的内容,第三个是要搜索的字符串

答案 2 :(得分:0)

这里:

$username = preg_replace('/\s+/', '', $_POST['username']);

答案 3 :(得分:-1)

在您的代码中,您要用空格替换空格,但在所有情况下都不要使用替换后的字符串,例如

setcookie("member_login", $_POST["username"], time() + (10 * 365 * 24 * 60 * 60));

此代码应正常工作:

$username = str_replace(" ", "", $_POST['username']);

尝试调试,添加如下内容:

file_put_contents('PATH TO FILE', $username . ' ', FILE_APPEND | LOCK_EX);

在$ username变量声明之后

,您将在日志文件中看到$ username中的内容。