Php 为什么stripslashes不返回没有斜杠的数据?
在我的站点上按login时,脚本使用mysqli\u real\u escape\u字符串,然后处理登录 例如,当您在主页上按下登录按钮时,站点将转到该文件。如果一切顺利,您将被重定向到开始页面,但当出现问题时,您将停留在该页面并查看表单。表单包含您在按下登录键之前输入的数据。该数据的末尾包含一个斜杠 我想通过使用stripslashes删除斜杠,所以我创建了一个名为slash的函数来删除斜杠,但是当您输入错误的内容时,我仍然可以看到斜杠Php 为什么stripslashes不返回没有斜杠的数据?,php,Php,在我的站点上按login时,脚本使用mysqli\u real\u escape\u字符串,然后处理登录 例如,当您在主页上按下登录按钮时,站点将转到该文件。如果一切顺利,您将被重定向到开始页面,但当出现问题时,您将停留在该页面并查看表单。表单包含您在按下登录键之前输入的数据。该数据的末尾包含一个斜杠 我想通过使用stripslashes删除斜杠,所以我创建了一个名为slash的函数来删除斜杠,但是当您输入错误的内容时,我仍然可以看到斜杠 //the slash function is plac
//the slash function is placed in a previous loaded file
function slash($username, $password){
$password = stripslashes($password);
$username = stripslashes($username);
return $username;
return $password;
}
if(empty($_POST === false)){
$username = $_POST['username'];
$password = $_POST['password'];
//check if the fields are empty
if (empty($username) || empty($password)){
$errors[] = 'You need to enter a username and password';
//check if the username exists
}else if(user_exists($username) === false){
$errors[] = 'We can\'t find that username';
slash($username, $password);
//check if the username is active
}else if(user_active($username) === false){
$errors[] = 'You haven\'t activated your account';
slash($username, $password);
//if none of the previous checks are false, log in
}else{
$login = login($username, $password);
//if username or password is incorrect, display error
if($login === false){
$errors[] = 'That username or password combination is incorrect';
slash($username, $password);
//if everthing is fine, log in
}else{
//set the user session
$_SESSION['user_id'] = $login;
//redirect user to home
header('Location: index.php');
exit();
}
}
}
?>
<html>
<head>
<link rel="stylesheet" href="css/error_login.css"/>
</head>
<body>
<?php
include 'templates/menu/menu.php';
?>
<div class="error_login">
<h3>Login</h3>
<form action="login.php" method="POST">
<div id="login">
username:<br>
<input type="text" name="username" value=<?php echo $username; ?>/><br><br>
password:<br>
<input type="password" name="password" value=<?php echo $password; ?>/><br><br>
<input type="submit" value="Log In"/><br><br>
<a href="register.php">Register</a>
<ul>
<?php
error_output($errors);
?>
</ul>
</div>
</form>
</div>
<?php
include 'templates/footer/footer.php';
?>
</body>
</html>
输入与您的see一样无效,因为没有密码,所以站点将使用userinput+添加的斜杠重新显示表单
output:
username: test/
password: ●
在HTML中:
<input type="text" name="username" value=<?php echo $username; ?>/>
这与密码相同。您的函数有2条返回语句。如果从函数中调用,return语句立即结束了当前函数的执行,但实际上你并没有说你在哪里/在什么地方看到了斜杠/我们能看到表单的HTML代码吗?@caCtus我添加了代码并解释了这个问题,我会更好地删除斜杠函数并使用准备好的语句。你的代码也会更小更安全。另外,希望您使用的是现代散列方法。
<input type="text" name="username" value=<?php echo $username; ?>/>
<input type="text" name="username" value="<?php echo $username; ?>"/>