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

Форум PHP

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

 

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

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

тема: Проверка входных параметров
 
 автор: tAleks   (16.02.2007 в 18:05)   письмо автору
 
 

Это нормальная проверка?
Можно ли это обойти?


// Проверяем входные параметры
if(isset($_GET['id_anket'], $_GET['code']))
{
if(is_numeric($_GET['id_anket'])) $id_anket = $_GET['id_anket'];
if(preg_match('/^[a-z0-9]{32}$/i', $_GET['code'])) $code = $_GET['code'];
}
if(!isset($id_order) || !isset($code)) die;

// и дальше сам скрипт

   
 
 автор: cheops   (16.02.2007 в 20:57)   письмо автору
 
   для: tAleks   (16.02.2007 в 18:05)
 

Лучше перед блоком if() инициализировать переменные $id_anket и $code явно
<?php
  $id_anket 
"";
  
$code "";
?>

   
 
 автор: tAleks   (16.02.2007 в 22:35)   письмо автору
 
   для: cheops   (16.02.2007 в 20:57)
 

Не понял... как инициализировать?

В скрипт приходят 2 GET параметра.. если они переданы и правильные то скрипт должен выполняться, елсли нет то не должен.

Инициализировать в смысле так чтоли:

<?php 
  $id_anket 
$_GET['id_anket']; 
  
$code $_GET['code']; 
?> 


А чем плохо в IF пеердать $_GET['id_anket'] и $_GET['code']?

Тем более что в условии они проверяются и уже тогда, если они правильные инициализируются $id_anket и $code.

А второй if проверяет наличие уже $id_anket и $code. И если они есть, то скрипт выполяняется....

   
 
 автор: mehelson   (17.02.2007 в 05:30)   письмо автору
 
   для: tAleks   (16.02.2007 в 22:35)
 

Имеется в виду инициализировать пустыми значениями...
Именно

$id_аnкеt = "";
$соdе = "";

т.е. до запроса эти переменные пусты
по-моему так.
Спасибо!

   
 
 автор: cheops   (17.02.2007 в 13:48)   письмо автору
 
   для: tAleks   (16.02.2007 в 22:35)
 

if() может не сработать и тогда переменные $id_anket и $code могут получить случайные значения.

   
 
 автор: Ret   (17.02.2007 в 15:12)   письмо автору
 
   для: cheops   (17.02.2007 в 13:48)
 

Почему нельзя так (без инициализации, из-за директивы "register_globals=On" ?):
<?php
if(isset($id_order) && preg_match('/^[a-z0-9]{32}$/i'$_GET['code']) && preg_match('/^[\d]+$/i'$_GET['id_anket']))

$code $_GET['code']; 
$id_anket $_GET['id_anket'];
}
else
die;
?>


// и дальше сам скрипт

   
 
 автор: tAleks   (17.02.2007 в 15:32)   письмо автору
 
   для: cheops   (17.02.2007 в 13:48)
 

>if() может не сработать и тогда переменные $id_anket и $code могут получить случайные значения.

Как это if моежт не сработать?
Можно пример?

   
 
 автор: AlMag   (17.02.2007 в 15:56)   письмо автору
 
   для: tAleks   (17.02.2007 в 15:32)
 

Ну, всмысле, что не выполнится условие.
Я думаю, что лучше сделать

 // Проверяем входные параметры 
if(isset($_GET['id_anket'], $_GET['code'])) 

$id_anket=""; $code="";
if(is_numeric($_GET['id_anket'])) $id_anket = $_GET['id_anket']; 
if(preg_match('/^[a-z0-9]{32}$/i', $_GET['code'])) $code = $_GET['code']; 

if ($id_order=="" || $code=="") die; 

// и дальше сам скрипт 
   

   
 
 автор: Unkind   (17.02.2007 в 16:30)   письмо автору
 
   для: tAleks   (17.02.2007 в 15:32)
 

Можно пример?
Если у Вас на сервере register_globals = on, то можно послать данные, скажем, с помощью метода POST передать переменные id_order и code. Тогда, естественно, условие
if(isset($_GET['id_anket'], $_GET['code'])) не будет выполнена и вся ваша проверка не будет выполняться.

Ваш код лучше изменить на:

<?php
$id 
= isset($_GET['id']) ? (int) $_GET['id'] : 0;
$code = isset($_GET['code']) ? $_GET['code'] : "";

if(!
preg_match('/^[a-z0-9]{32}$/i'$code)) die();
?>

   
Rambler's Top100
вверх

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