PHP - 错误ASCII = 16状态= 0输入中的意外字符

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PHP - 错误ASCII = 16状态= 0输入中的意外字符相关的知识,希望对你有一定的参考价值。

我第一次遇到这个错误,似乎无法调试它。我的代码涉及此错误如下:

<?php
session_start();
$accountUsername = $_POST["username"];
$accountEmail = $_POST["email"];
$accountPassword = $_POST["password"];
$accountPasswordConfirm = $_POST["password-confirm"];
$recaptchaResponse = $_POST["g-recaptcha-response"];
$secretRecaptcha = "XXXXXXXXXXXXXXXX";

// Send Request Of Recaptcha To Google Servers
$verifyResponse = file_get_contents('https://www.google.com/recaptcha/api/siteverify?secret='.$secretRecaptcha.'&response='.$recaptchaResponse);
$recaptchaValidation = json_decode($verifyResponse, true);

// Validate Recaptcha Response
//if ($recaptchaValidation["success"] == false) {
    //echo "error:You must solve the reCAPTCHA verification";
    //exit();
//}

// Validate Email Address
$accountEmaili = str_replace("@", "", $accountEmail); $accountEmaili = str_replace(".", "", $accountEmaili);
if (filter_var($accountEmail, FILTER_VALIDATE_EMAIL) && ctype_alnum($accountEmaili)) {
} else {
    echo "error:You must enter a valid email address";
    exit();
}
if (strlen($accountEmail) >= 5 && strlen($accountEmail) <= 400) {
} else {
    echo "error:You must enter a valid email address";
    exit();
}

// Validate Username
if (strlen($accountEmail) >= 8 && $accountEmail <= 14) {
} else {
    echo "error:Your username must be 8-14 characters";
    exit();
}

我试图改变一些东西,但没有任何作用,我不知道这个错误代码也意味着什么。任何人都可以帮我调试这个问题,非常感谢。

错误:警告:输入中出现意外的字符:'/(ASCII = 16)state = 0 in / home / nodebase / public_html / Web App / Backend / UserPortal / Register / Create Account.php on 27行

警告:输入中出现意外字符:'/(ASCII = 16)state = 0 in / home / nodebase / public_html / Web App / Backend / UserPortal / Register / Create Account.php on 27行

第27行= if (strlen($accountEmail) >= 5 && strlen($accountEmail) <= 400) {

答案

如评论中所述,代码中存在隐藏(unicode)字符,这可能是由主机编辑器引起的。

通过复制/粘贴我在评论中提到的以下内容,将为您解决此问题。

if (strlen($accountEmail) >= 8 && $accountEmail <= 14) {

仅供参考:隐藏的角色在><运营商之前。

ASCII 16是所谓的“DATA LINK ESCAPE”字符。

https://en.wikipedia.org/wiki/Control_character拉出来:

数据链接转义字符(DLE)旨在作为数据链路另一端的信号,以下字符是控制字符,例如STX或ETX。例如,可以以下面的方式(DLE)(DLE)来构造分组。

https://www.pcmag.com/encyclopedia/term/40801/data-link-escape拉出来:

通信控制字符,指示以下字符不是数据,而是控制代码。

以上是关于PHP - 错误ASCII = 16状态= 0输入中的意外字符的主要内容,如果未能解决你的问题,请参考以下文章

串口网口16进制发送的和ASCII发送以及16进制接收和ASCII接收区别

PHP - 如何处理“utf-16”、us-ascii 编码的 html 字符串以正确保存在 DomDocument 中?

unicode utf-8 utf-16ascii gbk gb2312 的区别

PHP 致命错误:未捕获的错误:在 PHP 7.2.13 上调用未定义函数 idn_to_ascii()

AngularJS - $http get 返回状态为 0 的错误?

PHP错误代号列表