为什么在下面的php代码修剪中,htmlspecialchars和stripslashes不起作用?
我有一个表单,其中包含两个字段用户名和密码。我想将用户输入的值存储在名为stack的数组中 下面的代码将值存储在堆栈数组中,并显示带有我输入的精确值的数组。即使我的字段中有斜杠或任何html、javascript,它也会将其存储到数组中 我想知道我的错误在哪里,因为函数check()执行不正确为什么在下面的php代码修剪中,htmlspecialchars和stripslashes不起作用?,php,arrays,Php,Arrays,我有一个表单,其中包含两个字段用户名和密码。我想将用户输入的值存储在名为stack的数组中 下面的代码将值存储在堆栈数组中,并显示带有我输入的精确值的数组。即使我的字段中有斜杠或任何html、javascript,它也会将其存储到数组中 我想知道我的错误在哪里,因为函数check()执行不正确 <?php $hostname = "localhost"; $username = "root"; $password = ""; $db = "test"; $stack = array();
<?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);
}
?>
您有两个选择
- 将check函数的返回值保存在变量中
$value=支票($value)
- 将功能检查($data)更改为功能检查(&$data)
我是否可以知道如何使用$value捕获返回值我已经更改了行。请比较我添加评论的那一行。它不起作用。在放入数组之前,它再次用斜杠和alltry echo$value向我显示值。无论我在字段中写了什么,它都会向我回显用户输入,包括所有空格和斜杠