Я гуглил и искал SO и все такое, но я не могу прийти к ответу.
Почему код PHP ниже пропускает знак плюс через:
$aValid = array('-', '_', '.');
if (ctype_alnum(str_replace($aValid, '', $_POST['Rusername']))){
(Если пользователь вводит 1234+, он продолжается как действительный ????).
Я обычно находил обход, но действительно ли это необходимо;
$aValid = array('-', '_', '.');
if (ctype_alnum(str_replace($aValid, '', (htmlentities ( trim ( $_POST['Rusername'] ) , ENT_NOQUOTES ))))){
echo "+ ok";
}else{
echo "+ not ok";
}
Я хотел быиспользовать этот вид проверки и просто добавлять специальные символы в $ aValid, когда это необходимо.
Перед вставкой в MySQL я бы сделал mysql_real_escape_string или подготовил операторы.
Любые идеи, почему знак + подходит дляпервый кусок кода.По моему мнению, это действительно не должно быть.
Последнее обновление - мне потребовалось несколько часов низкоуровневой отладки HTTP-заголовков, чтобы выяснить, что моя сторона A изменила Content-Type, чтобы знак + стал пробеломдо того, как он попал в PHP, если предложение (разрешено в моем белом списке) ...
Что - я надеюсь, что это никогда не случится с вами - опыт:)
Напоминание: jQuery должен бытьупомянуто, был ли он таким крупным игроком в этом процессе проверки ...