Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Объектно-ориентированное программирование на PHP. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: GET- запрос
 
 автор: Lenux   (18.07.2005 в 07:40)   письмо автору
 
 

Возвращает строку:
?name=5
А как сделать, что бы это была не строка, а int(integer)?

   
 
 автор: Ziq   (18.07.2005 в 08:09)   письмо автору
 
   для: Lenux   (18.07.2005 в 07:40)
 

Вообще изменение типа данных производится с помощью функции settype(), которая имеет синтаксис

settype($var,integer);

где $var переменная.
Но в данном случае вообще ничего не понятно, не мог бы ты сформулировать вопрос по другому.

   
 
 автор: Lenux   (18.07.2005 в 10:31)   письмо автору
 
   для: Ziq   (18.07.2005 в 08:09)
 

Сейчас попробуем:)
Вся фишка заклячается в том, что человек переходит по ссылке, ссылка ?id=n , n - это целое число, по которому ищется в бд соответствие.
Цель:
- узнать это целое число или нет.
Вывод:
- просто другого значения не может быть, т.к. при генерации страницы, опять таки id беруться из таблицы, значит другое число(не целое) или другие символы могут быть только подставленны пользователем,а не скриптом.
- И мне кажется, что это будет понадёжней preg_replace и т.п.
запрос к скрипту:
index.php?id=5

приведу скриптик, не большой:

<?php
$id
=$_GET['id'];
echo 
gettype($id); //Возращает string
$id=settype($id"integer"); 
echo 
gettype($id); //возвращает boolean
if(!is_integer($id)) { echo "Ваш запрос не корректен"; exit; }
?>

   
 
 автор: cheops   (18.07.2005 в 12:25)   письмо автору
 
   для: 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(); 
?>

   
 
 автор: Maloy   (18.07.2005 в 10:18)   письмо автору
 
   для: Lenux   (18.07.2005 в 07:40)
 

Вообще в РНР приведение типов довльно просто сделано. Я например никогда не объявляю строка это или целое. Надо работать как со строкой, работаю так, надо как с целым, работаю по другому? А для чего тебе это надо? Может у тебя не в этом проблема?

   
 
 автор: Maloy   (18.07.2005 в 10:21)   письмо автору
 
   для: Lenux   (18.07.2005 в 07:40)
 

И вообще оно тебя возвращает переменную name, которая равна 5. получить доступ к ней, если у тебя register_global = Off можеш так $name = $_GET['name']. Если On, то просто юзай $name.

   
 
 автор: Киналь   (18.07.2005 в 13:25)   письмо автору
 
   для: Maloy   (18.07.2005 в 10:21)
 

Может, просто is_numeric($_GET['name']) или is_int?

   
 
 автор: JohnFord   (18.07.2005 в 20:06)   письмо автору
 
   для: Киналь   (18.07.2005 в 13:25)
 

Можно: is_numeric($_GET['name'])

   
 
 автор: Loki   (18.07.2005 в 17:27)   письмо автору
 
   для: Lenux   (18.07.2005 в 07:40)
 

Я использовал следующую конструкцию:

<?
$name
=abs(intval($name));
?>

В этом случае ничего не проверяется, а жестко указывается что $name неотрицательное целое число. Так что злодеи могут подставлять любые значения - их просто будет выкидывать на главную страницу.

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования