【问题标题】:PHP - Error ASCII=16 State=0 Unexpected Character in InputPHP - 错误 ASCII=16 状态=0 输入中的意外字符
【发布时间】:2019-01-05 22:21:00
【问题描述】:

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

<?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/WebApp/Backend/UserPortal/Register/CreateAccount.php 第 27 行

警告:输入中的意外字符:'' (ASCII=16) state=0 in /home/nodebase/public_html/WebApp/Backend/UserPortal/Register/CreateAccount.php 第 27 行

第 27 行 = if (strlen($accountEmail) &gt;= 5 &amp;&amp; strlen($accountEmail) &lt;= 400) {

【问题讨论】:

  • &gt;= 5&lt;= 400 中发生了一些奇怪的事情,它没有出现在 cmets 中,而是作为一个框出现,但您似乎已经将其编辑了,并且不知道这是否是其中的一部分您的工作代码与否。可能是隐藏的 unicode。
  • 我没听懂你的意思,你想说什么?
  • 当你最初发布你的代码时,有一个字符的“框”对我来说可能是一个隐藏的 unicode 字符,但现在不显示了。我认为问题就在那里。 var_dump() 你可能会看到一些东西。
  • 第27行是哪一个?
  • 我已经从编辑器中重新复制并粘贴了代码,没有进行任何更改,现在第 27 行在那里我编辑了帖子

标签: php error-handling


【解决方案1】:

正如 cmets 中所说,您的代码中存在隐藏(unicode)字符,这可能是您主机的编辑器造成的。

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

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

仅供参考:隐藏字符位于 &gt;&lt; 运算符之前。

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

一个通信控制字符,表示后面的字符不是数据,而是一个控制码。

【讨论】:

    猜你喜欢
    • 2013-09-14
    • 2015-12-24
    • 2011-12-11
    • 2013-06-13
    • 2014-07-23
    • 2015-10-27
    • 1970-01-01
    • 2017-09-05
    • 2023-03-12
    相关资源
    最近更新 更多