| |
|
|
| | Это нормальная проверка?
Можно ли это обойти?
// Проверяем входные параметры
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;
// и дальше сам скрипт
|
| |
| |
|
|
| |
|
|
| |
для: tAleks
(16.02.2007 в 18:05)
| | | Лучше перед блоком if() инициализировать переменные $id_anket и $code явно
<?php
$id_anket = "";
$code = "";
?>
|
| |
| |
|
|
| |
|
|
| |
для: 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. И если они есть, то скрипт выполяняется.... | |
| |
|
|
| |
|
|
| |
для: tAleks
(16.02.2007 в 22:35)
| | | Имеется в виду инициализировать пустыми значениями...
Именно
$id_аnкеt = ""; $соdе = "";
|
т.е. до запроса эти переменные пусты
по-моему так.
Спасибо! | |
| |
|
|
| |
|
|
| |
для: tAleks
(16.02.2007 в 22:35)
| | | if() может не сработать и тогда переменные $id_anket и $code могут получить случайные значения. | |
| |
|
|
| |
|
|
| |
для: 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;
?>
|
// и дальше сам скрипт | |
| |
|
|
| |
|
|
| |
для: cheops
(17.02.2007 в 13:48)
| | | >if() может не сработать и тогда переменные $id_anket и $code могут получить случайные значения.
Как это if моежт не сработать?
Можно пример? | |
| |
|
|
| |
|
|
| |
для: 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;
// и дальше сам скрипт
|
| |
| |
|
|
| |
|
|
| |
для: 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();
?>
|
| |
| |
|
|