【问题标题】:Reporting sanitized user input to the user via AJAX通过 AJAX 向用户报告经过清理的用户输入
【发布时间】:2011-02-20 10:27:18
【问题描述】:

我正在编写一些代码来向用户提供有关使用 AJAX 验证表单的实时反馈。我已经检查了长度以及该字段是否为空。现在我希望它清理用户输入,如果清理后的输入与用户的原始输入不同,那么告诉他们哪些字符是不允许的。

到目前为止,我编写的代码可以正常工作,但某些字符最明显的是“£”符号导致没有响应。我认为它与 json_encode 及其编码有关。

代码如下:

  $user_input = 'asdfsfs£';
  $strip_array = str_split(strip($user_input));
  $orig_array = str_split($user_input);
  $diff_array = array_diff($orig_array,$strip_array);
  $diff_str = implode(', ',$diff_array);
  $final = json_encode($diff_str);

  function strip($input){return htmlentities(strip_tags($input),ENT_QUOTES);}

希望有人能找到解决办法。

【问题讨论】:

  • 我的猜测是字符串中存在 unicode 字符。 PHP 不支持 unicode,因此它会弄乱字符串 -> 数组转换。还不确定问题到底出在哪里或如何解决。
  • 是的,我认为它与此有关.. 我注意到在 PHPED 中,如果我调试它并查看字符串的内容,£ 总是前面有一个奇怪的类似“A”的字符.

标签: php ajax json sanitize utf-8


【解决方案1】:

如果这是通过 AJAX 完成,那么您需要编写一个 javascript 函数来完成此操作。

让服务器返回一个格式的JSON对象

{
    original: 'asdfsfs£',
    edited: 'asdfsfs',
    illegalChars: ['£']
}

在您的 html 中,您应该在表单输入字段旁边有空元素,您可以在其中输出表单验证消息

<input type="text" id="myTextField" />
<span id="myTextFieldLabel" />

现在让您的 javascript 根据验证数据更新 myTextFieldLabel 组件的内容

肖恩

【讨论】:

  • 也许我没有说清楚,Ajax 在验证方面工作得很好。问题是我用于检查非法字符的代码(上面发布)返回正确的结果 > 或 " 但对于 '£' 它什么也不返回。我相信这与文本编码不是 UTF-8 有关处理后。
猜你喜欢
  • 2010-11-18
  • 2020-05-28
  • 2012-06-27
  • 1970-01-01
  • 2010-10-15
  • 2013-09-14
  • 2012-08-11
  • 2015-11-06
  • 1970-01-01
相关资源
最近更新 更多