我第一次遇到此错误,似乎无法调试它。我的与该错误有关的代码如下:
<?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) {
答案 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中拉出:
一个通信控制字符,指示后面的字符不是数据,而是控制代码。