我正在尝试在用户登录时从用户名中删除空格。例如,如果他们具有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
}
}
答案 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中的内容。