Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Сравнить ID

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Estenny
Отправлено: 10 Января, 2012 - 19:49:05
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




В своих скриптах мне приходится получать ID переданной записи из URL (к примеру, /article/1). Получаю я его в виде строки, но в результате это должно быть число.

Чтобы избежать SQL-инъекций я перевожу полученный ID в число с помощью intval(). Но есть 1 проблема: предположим, что перешли на страницу /article/a1a, тогда после прохода через функцию intval() мне вернется 0, что вполне нормально (т.к. 0 и булевом типе 0, то я просто поставлю условие и выведу ошибку о том, что такой записи не существует), но если перейти на страницу /article/1a, то после прохождения через intval() я получу результат 1 и получится, что такая запись существует, т.к. запись с ID = 1 хранится в базе.

Что я предпринял: я записал в переменную полученное из URL значение. Дальше я обработал его intval()'ом и тоже сохранил, а дальше я сравниваю исходное значение из URL со значением обработанного intval()'ом и обработанного strval()'ом, т.е. я получаю число и перевожу в строку.

Наглядно: была строка '1a'. Я сделал число 1 с помощью intval('1a') и сделал строку '1' с помощью strval(1). Дальше я сравниваю с исходным: '1a' == '1'. Разумеется, неравно и я выведу ошибку пользователю.

Так вот, мне кажется, что все это можно сделать намного легче и быстрее, чем это делаю я. Если это так, то как реализовать по-другому и быстрее?
 
 Top
Panoptik
Отправлено: 10 Января, 2012 - 19:51:42
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




is_numeric($_GET[id]) не?


-----
Just do it
 
 Top
Estenny
Отправлено: 10 Января, 2012 - 20:24:07
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Panoptik, как оказалось — нет.

1e4 он считает числом, а мне так не надо.

Буду регулярные выражения использовать.
 
 Top
Panoptik
Отправлено: 10 Января, 2012 - 20:28:35
Post Id



Постоянный участник


Покинул форум
Сообщений всего: 2493
Дата рег-ции: Нояб. 2011  
Откуда: Одесса, Украина


Помог: 131 раз(а)




1е4 и есть число в экспоненциальной форме)


-----
Just do it
 
 Top
Estenny
Отправлено: 10 Января, 2012 - 20:33:54
Post Id



Гость


Покинул форум
Сообщений всего: 122
Дата рег-ции: Нояб. 2011  
Откуда: Москва


Помог: 0 раз(а)




Panoptik, ну да, но мне таких не нужно.
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB