IMHO.WS

IMHO.WS (https://www.imho.ws/index.php)
-   Веб-программирование (https://www.imho.ws/forumdisplay.php?f=29)
-   -   безопасность скриптов на PHP (https://www.imho.ws/showthread.php?t=15370)

infernal 11.11.2002 01:20

безопасность скриптов на PHP
 
Безопасно ли писать скриплы на PHP используя switch/case как выбор по навигационному меню, или лучше использовать if/else?
thx
icq 10088009

sanchos 11.11.2002 01:31

:))) Смотря какое большое меню :)
Что именно тебя интересует? Поподробнее, плиз...

infernal 11.11.2002 01:51

есть страница, которая передает на скрипт переменную.\
вариантов переменной много..
как лучше написать скрипт?
switch/case или if/else

Aeon 11.11.2002 10:45

в терминах безопасности, разницы нет. я обычно пользуюсь комбинацией этих двух - нечто вроде этого меня устраивает:
Код:

$allowed = array('c1','c2');
if(in_array($var, $allowed))
  {
  switch($var)
    {
    case 'c1':
      echo 'foo c1';
    break;
    case 'c2':
      echo 'foo c2';
    break;
    }
  }
else
  {
    echo 'послано запрещённое значение var';
  }


infernal 11.11.2002 20:33

спасибо...

sanchos 20.11.2002 03:25

Мне бы лично было бы немного жалко памяти, да времени... У тебя сравнение идет два раза, а можно одним обойтись, только проверить на наличие переменной $var не забыть бы:
PHP код:

// проверим есть ли такая переменная вообще
if(empty($var)) $var 'нифига!';
// а теперь проверить ее значение
  
switch($var)
    {
    case 
'c1': echo 'foo c1';
                    break;
    case 
'c2': echo 'foo c2';
                    break;
    
// тогда на default мы попадаем, если переменная была пуста,
    // либо, если такого значения в списке не обнаружилось
    
default:    echo 'послано запрещённое значение var';
    } 

Двух зайцев сразу :) Но, правда, на вкус и цвет... :)

Aeon 20.11.2002 05:49

Sanchos, ты совершенно прав... я написал для примера - а значит от балды, не думая о эффективности... твоё решение лучше :)

infernal 20.11.2002 19:30

10x

sanchos 20.11.2002 20:40

Гы :) А я это как первый раз от балды написал, так до сих пор этот способ и юзаю при постах. Кстати, может мое решение и лучше, но твое выглядет моднее :)

ЗЫЖ Спасибо, ребята, за вотинг: приятно :)


Часовой пояс GMT +4, время: 20:40.

Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.