Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/239.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 是否可以将$\u POST视为单引号而不是双引号?_Php_Validation_Security_Post - Fatal编程技术网

Php 是否可以将$\u POST视为单引号而不是双引号?

Php 是否可以将$\u POST视为单引号而不是双引号?,php,validation,security,post,Php,Validation,Security,Post,我有一个名为password的$\u POST字段,它保存了从HTML表单发布的密码。前两项检查是: if(isset($_POST['password'])){ if(strlen($_POST['password'])>=8){ 问题是,如果帖子包含一个美元符号($),那么它后面的所有内容(包括美元符号)都将被忽略。我可以看到这一点,因为如果发布了诸如odte$tPa55word之类的内容,则strlen仅返回4。我认为这是因为$\u POST['password']将内容视为双引号

我有一个名为
password
$\u POST
字段,它保存了从HTML表单发布的密码。前两项检查是:

if(isset($_POST['password'])){
if(strlen($_POST['password'])>=8){
问题是,如果帖子包含一个美元符号
($)
,那么它后面的所有内容(包括美元符号)都将被忽略。我可以看到这一点,因为如果发布了诸如
odte$tPa55word
之类的内容,则
strlen
仅返回
4
。我认为这是因为
$\u POST['password']
将内容视为双引号字符串
(“”)
,而不是单引号
(“”)
,这意味着$后的所有内容都被解释为变量

我找到了一个解决方案,就是
addcslashes()
,但问题是,我不知道接下来的
preg\u match
是否会忽略这些斜杠,或者它是否会响应这些斜杠

问题是,如果有某种方法来处理
$\u POST
变量,如单引号字符串rater,然后双引号sting,以使输入更加安全,如果这是不可能的,那么我应该使用什么类型的转义语句来避免这种情况发生

编辑

完整代码:

<?php
    if(isset($_POST['password'])){
        if(strlen($_POST['password'])>=8){
            if($_POST['password']===$_POST['passwordConfirm']){
                $password=password_hash($_POST['password'], PASSWORD_BCRYPT);
            }
            else{
                echo('Err3');
            }
        }
        else{
            echo('Err1: '.strlen($_POST['password']));
        }
    }
    else{
        echo('Err0');
    }
?>
这将返回:

Err1: 4

并不是说,输入值被视为字符串,它们不会神奇地变成php变量。因为你试图调试错误。显示你所有的代码。告诉你的;p使用curl-v-d'password=odte$tPa55word'-w“\n”-X POSThttp://localhost:80/test.php相反。cmd也将像php一样插入。。
Err1: 4