[英]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.