对于我的第一个php网站,我目前允许在用户名中使用所有字符。当它们插入数据库时,我使用addslashes(),当从数据库中检索它们时,我使用stripslashes(),然后我使用htmlentities()使它们在页面上正确显示。到目前为止我没有遇到任何问题,但是出于任何原因我是否应该在用户名中禁用任何字符? HTML,CSS和PHP是我能流利的唯一语言,我担心将来我会遇到PHP或Java或其他一些语言难以解析某些字符的语言。
答案 0 :(得分:3)
许多字符可能会导致问题:
显然,在你处理过的html和SQL中有一些特殊含义的字符。
其他可能性是:
用于搜索用户,正则表达式字符/通配符,例如。 *,?
如果您想为用户提供电子邮件地址,则电子邮件仅支持字母数字字符,下划线和非相邻点,并且许多系统假设电子邮件不区分大小写(尽管不是规范的一部分)
如果您想为用户提供个人资料页面,其中网址包含其用户名,则需要对许多字符进行正确编码。
非ascii字符可能会导致问题,具体取决于用户名的存储方式(如果它们存储在支持UTF-8的字段中,则支持任何字符)