在PHP中使用filter_var()和html实体()形成Sanitize

时间:2017-08-20 11:53:10

标签: php

必须使用filter_var()和html_entities()验证我的输入。

这是我无法运作的代码:

session_start();

if(empty($_POST['add']) === false ) {

    $name =    filter_var(INPUT_POST, 'name', FILTER_SANITIZE_STRING);
    $email =   filter_var(INPUT_POST, 'email', FILTER_SANITIZE_EMAIL);
    $phone =   filter_var(INPUT_POST, 'phone', FILTER_SANITIZE_INT);
    $address = filter_var(INPUT_POST, 'address', FILTER_SANITIZE_STRING);


}
?>

当我做一个测试并且放置" Frost "进入我的名字输入它以粗体显示,但它不是假设的。完成此操作后,需要写出$ _SESSION [' cart']。我迷失在这一点

2 个答案:

答案 0 :(得分:0)

从评论到目前为止,我可以看到: 如果$ _GET变量包含该数组,则表示您没有正确发布HTML表单。使用它来发布HTML <form>

<form action="/path/to/script.php" method="post" enctype="multipart/form-data"> <!-- input fields --> </form>

此外,如Peter van der Wal所说,如果您想使用filter_input(),请使用filter_var()函数代替INPUT_POST。否则使用filter_var($_POST['input_name'], FILTER_SANITIZE_STRING)

如需更多帮助,请发布更多HTML代码

如果您不熟悉编码/ PHP,建议您熟悉W3SchoolsPHP Documentation。如果您了解这些资源,那将非常有用。开始学习的好方法。

答案 1 :(得分:0)

所以在这一点上我需要将表单提交给自己进行测试,现在是我当前代码的代码:

   <?php

 session_start();
 if(empty($_POST['add']) === false ) {

$name =    filter_var($_POST['name'], FILTER_SANITIZE_STRING);
$email =   filter_var($_POST['email'], FILTER_SANITIZE_EMAIL);
$phone =   filter_var($_POST['phone'], FILTER_SANITIZE_INT);
$address = filter_var($_POST['address'], FILTER_SANITIZE_STRING);


}
?>
    <form method="post" action="cart.php" id="form1">

        <label for="name">Name:</label><br>
        <input type="text" name="name">
        <br><br>
        <label for="email">Email:</label><br>
        <input type="email" name="email">
        <br><br>
        <label for="tel">Phone:</label><br>
        <input type="tel" name="phone">
        <br><br>
        <label for="textarea">Address:</label><br>
        <input type="textarea" name="address">
        <br>

        <div id="checkbox">
            <input type="checkbox" value="remember">
        </div> 

        <div id="label1">
            <label for="checkbox">Remember Me</label>       
        </div>


        <br>
        <br>


            <input type="submit" value="Submit">   

    </form>

我在页面上也有一个调试模块,现在它在$ _POST数组中而不是GET,这很好,但是当我将html实体放在名称输入字段中时,它们仍然没有被清理/删除。

调试模块:

$_POST contains:
Array
(
[name] => Frost
[email] => 
[phone] => 
[address] => 
)

*当我将BOLD html标签添加到其输入字段时,Frost以粗体显示,但这样做的目的是阻止它发生。