|
|
|
| Возвращает строку:
?name=5
А как сделать, что бы это была не строка, а int(integer)? | |
|
|
|
|
|
|
|
для: Lenux
(18.07.2005 в 07:40)
| | Вообще изменение типа данных производится с помощью функции settype(), которая имеет синтаксис
где $var переменная.
Но в данном случае вообще ничего не понятно, не мог бы ты сформулировать вопрос по другому. | |
|
|
|
|
|
|
|
для: Ziq
(18.07.2005 в 08:09)
| | Сейчас попробуем:)
Вся фишка заклячается в том, что человек переходит по ссылке, ссылка ?id=n , n - это целое число, по которому ищется в бд соответствие.
Цель:
- узнать это целое число или нет.
Вывод:
- просто другого значения не может быть, т.к. при генерации страницы, опять таки id беруться из таблицы, значит другое число(не целое) или другие символы могут быть только подставленны пользователем,а не скриптом.
- И мне кажется, что это будет понадёжней preg_replace и т.п.
запрос к скрипту:
приведу скриптик, не большой:
<?php
$id=$_GET['id'];
echo gettype($id); //Возращает string
$id=settype($id, "integer");
echo gettype($id); //возвращает boolean
if(!is_integer($id)) { echo "Ваш запрос не корректен"; exit; }
?>
|
| |
|
|
|
|
|
|
|
для: Lenux
(18.07.2005 в 10:31)
| | Решение, основанное на регулярных выражений можно посмотреть в теме по ссылке http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=4235
<?
if(!preg_match("|^[\d]+$|",$_GET['parametr']) && !empty($_GET['parametr'])) exit();
?>
|
| |
|
|
|
|
|
|
|
для: Lenux
(18.07.2005 в 07:40)
| | Вообще в РНР приведение типов довльно просто сделано. Я например никогда не объявляю строка это или целое. Надо работать как со строкой, работаю так, надо как с целым, работаю по другому? А для чего тебе это надо? Может у тебя не в этом проблема? | |
|
|
|
|
|
|
|
для: Lenux
(18.07.2005 в 07:40)
| | И вообще оно тебя возвращает переменную name, которая равна 5. получить доступ к ней, если у тебя register_global = Off можеш так $name = $_GET['name']. Если On, то просто юзай $name. | |
|
|
|
|
|
|
|
для: Maloy
(18.07.2005 в 10:21)
| | Может, просто is_numeric($_GET['name']) или is_int? | |
|
|
|
|
|
|
|
для: Киналь
(18.07.2005 в 13:25)
| | Можно: is_numeric($_GET['name']) | |
|
|
|
|
|
|
|
для: Lenux
(18.07.2005 в 07:40)
| | Я использовал следующую конструкцию:
<?
$name=abs(intval($name));
?>
|
В этом случае ничего не проверяется, а жестко указывается что $name неотрицательное целое число. Так что злодеи могут подставлять любые значения - их просто будет выкидывать на главную страницу. | |
|
|
|