Система юзеров - вопросы по организации и безопасности

SiMM

Новичок
Автор оригинала: Сенсей
Код:
+%2A+Bab04kA+%2A+
И чем же ты не доволен? В скрипт-то что в итоге приходит при нажатии на ссылку? А что надо было? И, наверно, всё же [m]rawurlencode[/m]

-~{}~ 10.01.05 16:00:

Для наглядности:
PHP:
<?$login='+*+Bab04kA+*+';?>
<a href=?login=<?=rawurlencode($login)?>><?=htmlspecialchars($login)?></a><br>
<?if (isset($_GET['login'])) echo htmlspecialchars($_GET['login']);?>
PS: хотя с [m]urlencode[/m] вроде тоже пашет.
 

4m@t!c

Александр
Дык, конечно, ты ж вставляешь в строку, а не в сам GET-запрос. А вот ты ради интереса сделай форму с текстовым полем и передай через GET ее значение - передавай что угодно - все преобразуется точно так же, как и в rawurlencode. глянь в адресную строку и удивись.
 

Сенсей

Новичок
SiMM
Я недоволен тем что не работает!

У меня в базе хранится ник : +*+Bab04kA+*+

а не:

+%2A+Bab04kA+%2A+

+%2A+Bab04kA+%2A+ != +*+Bab04kA+*+

Я прав, не?

url : /

запрос a базу : WHERE user_nick_name='"urlencode($_GET['username'])."'

В итоге в базу идет: WHERE user_nick_name='+%2A+Bab04kA+%2A+'

А мне нужно : WHERE user_nick_name='+*+Bab04kA+*+'

Сейчас понятно?

ForJest
Вот и я не хочу запрещать... но вот первая трабла... и пока справиться не удается

-~{}~ 10.01.05 16:30:

4m@t!c
Если б я делал формой - я бы и пост заюзал... надо с урла
 

SiMM

Новичок
Автор оригинала: Сенсей
У меня в базе хранится ник : +*+Bab04kA+*+
Ну и хрен?
запрос a базу : WHERE user_nick_name='"urlencode($_GET['username'])."'
Да потому что ты не умеешь их готовить.
Если наглядного примера недостаточно - то я просто умываю руки - уговаривать тебя я не буду - мне пофиг, проблема у тебя.
PS: так, любопытство разобрало - накой хрен в запросе выделенное?
 

4m@t!c

Александр
Тебе SiMM написал
<?$login='+*+Bab04kA+*+';?>
<a href=?login=<?=rawurlencode($login)?>><?=htmlspecialchars($login)?></a><br>
<?if (isset($_GET['login'])) echo htmlspecialchars($_GET['login']);?>
ты попробовал???? Нет, тогда рекомендую...
 

Сенсей

Новичок
И так ... логин для теста: !@#$%^&*()_+vasya";'\/.,|`~

делаем :

rawurlencode

в запросе к базе : rawurldecode

Пашет!

SiMM

Если делаю в запросе к базе htmlspecialchars - тне пашет... да и не должно...
 

SiMM

Новичок
Автор оригинала: Сенсей
И так ... логин для теста: !@#$%^&*()_+vasya";'\/.,|`~
делаем :
rawurlencode
в запросе к базе : rawurldecode
Пашет!
Частный случай. Логин для проверки: %20
Честно говоря я уже запарился тебя уговаривать. Неужели сложно просто посмотреть, что к тебе приходит в $_GET['login'] и убедиться в том, что никаких излишеств (кроме PHP FAQ: \"Кавычки \". Cоставление запросов mysql, слеши, экранирование кавычек.) делать не надо?
Если делаю в запросе к базе htmlspecialchars - тне пашет... да и не должно...
Не должно. Вывод в HTML и запись в БД - это всё же разные вещи, не так ли? Мне просто было тебя жаль (чтобы ты не парился с Вид->Просмотр HTML-кода). Если ты понимаешь, о чём я.
 

Сенсей

Новичок
SiMM
Ты по моему не понял... я ж писал :

Если я захожу по урлу (не с формы ) /test.php?a=+*+Bab04kA+*+

<?php
echo $_GET['a'];
?>

То даже в сорсе страницы там уже нет плюсов!

Про ковычки я вкурсе...
 

Сенсей

Новичок
Код:
reserved    = ";" | "/" | "?" | ":" | "@" | "&" | "=" | "+" |
                    "$" | ","
Ну так может чтоб не парить мозги просто запретить использование жтих символов в никах?

А то тут сами понасоветовали.... а потом говорят что не понимаю... я сам запутался...

Делаю щас так:

Ссылка юзеру : <a href="aaaa&login="rawurlencode($_GET['login'])">htmlspecialchars()</a>

А в запросе в базу :

where login='urldecode($_GET['login'])'

Кто то может внятно сказать - правильно я делаю или нет?
 

SiMM

Новичок
Из запроса в базу убери излишества в виде urldecode - и всё будет ок.
 

nightik

PHP5 BetaTeam
Сенсей, ты так ничего и не понял, резёрвед символы не имееют ни какого отношения к логину. Ты спрашивал почему у тебя ничего не получается когда:
Если я захожу по урлу (не с формы ) /test.php?a=+*+Bab04kA+*+
я тебе ответил. Тебе остается только понять
 

dmitrybelyakov

Новичок
мне кажется что нужно запретить все символы с которыми сложности при передаче get-запросом
 
Сверху