繁体   English   中英

为什么在以下php代码trim中,htmlspecialchars和stripslashes不起作用?

[英]Why in the following php code trim,htmlspecialchars and stripslashes not working?

我有一个包含两个字段用户名和密码的表单。 我想将用户输入的值存储在名为stack的数组中。

以下代码将值存储在堆栈数组中,并向我显示具有我输入的确切值的数组。 即使我的字段中有斜杠或任何html,javascript,它也只是将其存储到数组中。

我可以知道我的错误在哪里,因为函数check()无法正确执行。

<?php
$hostname = "localhost";
$username = "root";
$password = "";
$db = "test";
$stack = array();
$connect = mysqli_connect($hostname,$username,$password,$db);
if(!$connect){
    die("Couldn't connect to the database");
    exit();
}
function check($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
if(isset($_POST['login'])){
    foreach($_POST as $value){
        if($value == $_POST['login']){
        break;
        }
        else{
            check($value);
            array_push($GLOBALS['stack'],$value);
        }
    }
    print_r($stack);
}

?>

请检查注释行。

<?php
$hostname = "localhost";
$username = "root";
$password = "";
$db = "test";
$stack = array();
$connect = mysqli_connect($hostname,$username,$password,$db);
if(!$connect){
    die("Couldn't connect to the database");
    exit();
}
function check($data){
    $data = trim($data);
    $data = stripslashes($data);
    $data = htmlspecialchars($data);
    return $data;
}
if(isset($_POST['login'])){
    foreach($_POST as $value){
        if($value == $_POST['login']){
        break;
        }
        else{
            $value = check($value); //returned value is not captured
            array_push($GLOBALS['stack'],$value);
        }
    }
    print_r($stack);
}

?>

您有两个选择。

  • 将检查函数的返回值保存在变量中

    $ value =检查($ value);

  • 将功能检查($ data)更改为功能检查(&$ data)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM