|Web Учебник | Самоучитель по HTML |Самоучитель по CSS | Самоучитель по PHP + MySql |Основы PhotoShop |Контакты. |

Удаление концевых пробелов.

Из многих источников по PHP знаю, что нельзя доверять пользователям по причинам их невнимательности, попыткам взломать сайт и т.д. Но человек не доверяющий другим, не заслуживает доверия сам. Потому предлагаю воспользоваться другим лозунгом: "Доверяй, но проверяй!!!".

Одну из таких проверок нужно уделить концевым пробелам, т.е. пользователь может скопировать логин, пароль и т.д. и какого либо файла и при этом зацепить несколько пробелов в начале, в конце или даже с двух сторон, при этом данные с пробелами не будут совпадать с данными без пробелов:
строковые переменные с пробелами.
Например при регистрации пользователь поставит пробел в логине, дальше система его зарегистрирует именно с "логин с пробелом", а уже при авторизации этого пробела не будет или будет в другом месте, то авторизация не произойдет. Хорошо если проблема будет в пароле(его еще можно восстановитель), а если в логине или адресе эл.почты?, то уже ничего исправить будет нельзя.
Чтобы таких проблем не возникало нужно обязательно отрезать все концевые пробелы в строковых переменных полученных от посетителей. Или если быть точнее, то нужно обрезать пробелы в важных переменных, это все переменные приходящие из полей input, а например в комментариях это делать не обязательно.

Как удалить концевой пробел?
Концевые пробелы в PHP удаляются с помощью функции trim() , т.е.:
$login = " name ";
$login = trim($login)
// результат: $login = "name"

Аналогом trim() есть функции ltrim() и rtrim(), первая обрезает пробелы только слева, а вторая только справа. В некоторых случаях это нужно.

Если при наборе текста в обычном HTML-коде поставить пробел клавишей TAB то в браузере вы не увидите разницы. Но а для PHP это очень важно, потому что для браузера пробел это всего лишь пробел, а для PHP это символ, который имеет свой номер в 16-ричной системе исчисления, например:
" " (ASCII 32 (0x20)), символ пробела.
"\t" (ASCII 9 (0x09)), символ табуляции.
"\n" (ASCII 10 (0x0A)), символ перевода строки.
"\r" (ASCII 13 (0x0D)), символ возврата каретки.
"\0" (ASCII 0 (0x00)), NUL-байт.
"\x0B" (ASCII 11 (0x0B)), вертикальная табуляция.
И все это в PHP отрезается в качестве концевых пробелов.

Начиная с версии PHP-4.1.0 у функций trim(), ltrim() и rtrim() появился второй параметр:
$text = trim($text, "параметр");
Если этого параметра нет то отрезаются все выше перечисленные символы. Если параметр задан, то отрезаются только те символы которые заданны:
$text = trim($text, "\t.");
Параметр может принимать сразу несколько значений:
$text = trim($text, "\t, \n, \x0B.");
При помощи параметра можно удалять ряд управляющих символов:
$text = trim($text, "\x00..\x1F");
В этом случае удалятся все управляющие символы от 0 до 31.

По отрезанию концевых пробелов и других управляющих символов все.

 

                   Перейти к выбору следующей страницы
 

Добавить в закладки
Добиться абсолютной межбраузерности для механизма добавления в закладки не существует ни на каких языках!!! А для браузера "Chrome" не работают вообще ни какие механизмы!!!
Потому это лучше всего делать в ручную при помощи одновременого нажатия клавиш Ctrl и D , после чего нужно нажать готово(добавить). Такой "механизм работает всегда и везде!!!