Php 为什么stripslashes不返回没有斜杠的数据?

Php 为什么stripslashes不返回没有斜杠的数据?,php,Php,在我的站点上按login时,脚本使用mysqli\u real\u escape\u字符串,然后处理登录 例如,当您在主页上按下登录按钮时,站点将转到该文件。如果一切顺利,您将被重定向到开始页面,但当出现问题时,您将停留在该页面并查看表单。表单包含您在按下登录键之前输入的数据。该数据的末尾包含一个斜杠 我想通过使用stripslashes删除斜杠,所以我创建了一个名为slash的函数来删除斜杠,但是当您输入错误的内容时,我仍然可以看到斜杠 //the slash function is plac

在我的站点上按login时,脚本使用mysqli\u real\u escape\u字符串,然后处理登录

例如,当您在主页上按下登录按钮时,站点将转到该文件。如果一切顺利,您将被重定向到开始页面,但当出现问题时,您将停留在该页面并查看表单。表单包含您在按下登录键之前输入的数据。该数据的末尾包含一个斜杠

我想通过使用stripslashes删除斜杠,所以我创建了一个名为slash的函数来删除斜杠,但是当您输入错误的内容时,我仍然可以看到斜杠

//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; ?>"/>