php接收ajax传的特殊字符,通过AJAX将特殊字符传递给PHP
我正在收集表单数据,并通过AJAX调用将其发送到PHP验证脚本。问题是在特殊字符的PHP验证脚本没有按预期工作。通过AJAX将特殊字符传递给PHP
HTML:
placeholder="[first name]" required autofocus maxlength="25" size="25" />
JS:
$(".button").click(function() {
var firstName = encodeURIComponent($("input.firstName").val());
var datastring = "firstName=" + firstName;
$.ajax({
type: "POST",
url: "/scripts/validateSignup.php",
data: datastring,
cache: false,
success: function (errorMessage) {
//print to screen
}
});
});
PHP验证
$postData = $_POST;
if (Filter::validateString($postData['firstName']) == false) {
echo "Oops! Some characters used in your first name are not valid.";
}
PHP过滤
//Returns true if string is good, false otherwise
public static function validateString($string) {
$string = trim($string);
if ($string == null || $string == "") {
return false;
} else {
if (preg_match("/[^\.\,\-\_\'\"\@\?\!\:\;\$\#\%\&\+\= a-zA-Z0-9()]/", $string) == true) {
return false;
} else {
return true;
}
}
}
在一个空字符串它打印错误筛选就好了。但是,如果我做了类似“〜!@#$%^ & *()”的操作,那么它会接受字符串为好,并且不会抛出错误,即使preg_match == false的结果。
+1
[文档](http://php.net/manual/en/function.preg-match.php):_preg_match()返回1,如果模式匹配给定的主题,则返回0,如果不匹配,则返回0,如果发生错误,则为FALSE._您是否尝试过比较'!= 0'而不是 –
+0
@davidkonrad:很好知道,但仍然不是预期的结果我确信validateString返回false,但if条件isn t接受它... –
+0
从pregmatch 该函数可能返回布尔FALSE,但也可能返回一个非布尔值,其中 评估为FALSE。有关更多信息,请阅读布尔部分。使用=== 运算符来测试此函数的返回值。 尝试使用===而不是== –
魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。
更多推荐


所有评论(0)