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

时间:2018-07-29 13:39:00

标签: php error-handling

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

<?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在第27行的/home/nodebase/public_html/WebApp/Backend/UserPortal/Register/CreateAccount.php中

     

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

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

1 个答案:

答案 0 :(得分:1)

如评论中所述,代码中隐藏的(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中拉出:

  

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