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

Форум PHP

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

 

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

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

тема: А нужна ли защита?
 
 автор: Рома   (15.12.2008 в 23:13)   письмо автору
 
 

вот есть у меня такой код, который проверяет $_GET[ ] на совпадения, непредвиденной ситуации вроде не может быть. Обязательна ли проверка GET данных конкретно в моем случае?

<?php
$rub
=$_GET['параметр']
if(!empty(
$rub)) //если не пуста
{
if(
$rub=="n") {$a=1;}
if(
$rub=="t") {$a=2;}
if(
$rub=="ra") {$a=4;}
if(
$rub=="ru") {$a=5;}
if(
$rub=="oth") {$a=6;}
if(
$rub=="u") {$a=7;}
if(
$rub=="o") {$a=8;}
//если не пуста, но не сошлась
if($rub!=="n"&&$rub!=="t"&&$rub!=="ra"&&$rub!=="ru"&&$rub!=="oth"&&$rub!=="u"&&$rub!=="o") {$a=8888;}
echo 
$a;
}
else 
//если пуста
{
$glavnaya="index.php";
header("location: $glavnaya");
}
?>

  Ответить  
 
 автор: devil943   (15.12.2008 в 23:19)   письмо автору
 
   для: Рома   (15.12.2008 в 23:13)
 

Переменная $rub у вас поступает в массиве GET? В таком примере нет, не нужно проверять, хотя ИМХО желательно всегда писать что-то типа

<?php
$rub 
mysql_real_escape_string(htmlspecialchars($_GET['rub']));
?>

Кстати, пользуйтесь else :)

  Ответить  
 
 автор: Trianon   (16.12.2008 в 08:27)   письмо автору
 
   для: devil943   (15.12.2008 в 23:19)
 

>, хотя ИМХО желательно всегда писать что-то типа
>$rub = mysql_real_escape_string(htmlspecialchars($_GET['rub']));

желательно не нести чушь.

  Ответить  
 
 автор: DEM   (15.12.2008 в 23:19)   письмо автору
 
   для: Рома   (15.12.2008 в 23:13)
 

Вообще не нужна, но лучше написать так:

<?
<?php 
$rub
=trim($_GET['параметр']); //Тут вы, кстати, забыли ";" (точка с запятой)
if(!empty($rub)) 

if(
$rub=="n") {$a=1;} 
elseif(
$rub=="t") {$a=2;} 
elseif(
$rub=="ra") {$a=4;} 
elseif(
$rub=="ru") {$a=5;} 
elseif(
$rub=="oth") {$a=6;} 
elseif(
$rub=="u") {$a=7;} 
elseif(
$rub=="o") {$a=8;} 
else {
$a=8888;} 
echo 
$a

else

$glavnaya="index.php"
header("location: $glavnaya"); 

?>
?>

  Ответить  
 
 автор: Рома   (15.12.2008 в 23:22)   письмо автору
 
   для: DEM   (15.12.2008 в 23:19)
 

фенькью за быстрый ответ, а что, последний скрипт с применением elseif работает быстрее?

  Ответить  
 
 автор: bronenos   (16.12.2008 в 01:26)   письмо автору
 
   для: Рома   (15.12.2008 в 23:22)
 

а switch в данном вопросе не подойдет?

  Ответить  
 
 автор: Рома   (16.12.2008 в 01:53)   письмо автору
 
   для: bronenos   (16.12.2008 в 01:26)
 

я не знаю че тут лучше подойдет, но если мне не изменяет память, то elseif выполнив условие не проверяет до конца остальные elseif. но я не уверен

  Ответить  
 
 автор: Николай2357   (16.12.2008 в 09:06)   письмо автору
 
   для: bronenos   (16.12.2008 в 01:26)
 

Подойдет, но вот так ещё меньше писанины ))):
<?php 
$rub 
= ($_GET['a'])?trim($_GET['a']):null;
$arr = array(
"n"=>1
"t"=>2
"ra"=>4
"ru"=>5
"oth"=>6
"u"=>7
"o"=>8
);
if(
$rub//если не пуста 
{
$a = ($arr[$rub])?$arr[$rub]:8888
echo 
$a

else 
//если пуста 

$glavnaya="index.php";
header("location: $glavnaya"); 

  Ответить  
 
 автор: Trianon   (16.12.2008 в 09:23)   письмо автору
 
   для: Николай2357   (16.12.2008 в 09:06)
 

$a = isset($arr[$rub])?$arr[$rub]:8888;

  Ответить  
 
 автор: Николай2357   (16.12.2008 в 11:25)   письмо автору
 
   для: Trianon   (16.12.2008 в 09:23)
 

Спасибо, действительно поторопился.

  Ответить  
 
 автор: Рома   (16.12.2008 в 09:38)   письмо автору
 
   для: Николай2357   (16.12.2008 в 09:06)
 

да, действительно меньше писать, только боюсь запутаюсь:(
я конструирую ссылку типа

http://localhost/body.php?rubrika=n&kategory=1&razdel=a&...

и неизвестно когда это закончится, еще уровень пользователя нужно приписать к ссылке, и sid
когда же условие выполнится, внутри условия определятся переменные, которые будут подставляться в готовый шаблон.
если воспользоваться твоим способом, где мне потом писать значение переменных, если сойдется 1й элемент 1 массива, 3й элемент 2 массива, 5й элемент 3 массива.
думаю ничего не получится...

  Ответить  
 
 автор: Николай2357   (16.12.2008 в 11:37)   письмо автору
 
   для: Рома   (16.12.2008 в 09:38)
 

Так то, что я написал, это суть то же самое, просто короче. Могу раскомментить, если не всё понятно.
<?php 
//Инициализация, тут наверное и так ясно
$rub = isset($_GET['a'])?trim($_GET['a']):null;
//Массив, можно добавлять значения по мере надобности
$arr = array(
"n"=>1
"t"=>2
"ra"=>4
"ru"=>5
"oth"=>6
"u"=>7
"o"=>8
);
if(
$rub//если не пуста 
{
// Проверяем, есть ли такой в массиве. Если нету, то значит будет 8888
$a = isset($arr[$rub])?$arr[$rub]:8888
echo 
$a

else 
//если пуста 

$glavnaya="index.php";
header("location: $glavnaya"); 

//Вуаля

  Ответить  
 
 автор: DEM   (16.12.2008 в 10:44)   письмо автору
 
   для: Рома   (15.12.2008 в 23:13)
 

Люди! Человек только начинает разбираться в РНР (не новичёк, но такие вещи как swuth $a = () ? ** : ** еще не знает)... Зачем зря запутывать? Придёт время - узнает...

ЗЫ. а свич ИМХО тут только немного сократит код в размере ;)

  Ответить  
 
 автор: Николай2357   (16.12.2008 в 11:39)   письмо автору
 
   для: DEM   (16.12.2008 в 10:44)
 

А вот не надо привыкать, надо сразу учиться писать читаемый и компактный код. Свич длиннее, я проверял.

  Ответить  
Rambler's Top100
вверх

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