Правила     Закладки     Карма    Календарь    Журналы    Помощь    Поиск    PDA    Чат   
        СМС-ки
   
Пейджер выключен!
 
Фильтр авторов:    показать 
  скрыть
  Ответ в темуСоздание новой темыСоздание опроса

> Switch в foreach или как лучше сделать, Switch в foreach
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 20 дней
Карма: 7




Приветствую Форумчане!

Хочу сделать функцию и запихать switch в foreach

Плюс есть функция для проверки GET параметра в массиве

Вот примерно вот так получается

$set = array(
'index' => 'main.tpl',
'category' => 'category.tpl',
'good' => 'good.tpl'
);
function gtPages($gets, $data, $massiv)
{
if (array_key_exists($gets, $massiv))
{
$data = $gets;

} else {
header('HTTP/1.1 404 Not Found');
exit(file_get_contents(HOST.'404.html'));
}
}


function Cat($dat, $page) {

foreach ($dat as $key => $value)
{
switch ($page)
{
case $key:
include $value;
break;
}
}
}


$rem = isset($_GET['rem']) ? $_GET['rem'] : '';

gtPages($_GET['rem'], $rem, $set);

Cat($set, $rem);


Проблема в том что не могу в функцию Cat вставить default для switch.

Как это сделать ума не приложу.

Еще интересно вот что: Что лучше использовать switch или if?

Попробовал с IF и получилось вот так

$set = array(
'index' => 'main.tpl',
'category' => 'category.tpl',
'good' => 'good.tpl'
);


function gtPages($gets, $data, $massiv)
{
if (array_key_exists($gets, $massiv))
{
$data = $gets;

} else {
header('HTTP/1.1 404 Not Found');
exit(file_get_contents(HOST.'404.html'));
}
}


function Cat($dat, $page) {

foreach ($dat as $key => $value)
{
if ($key == $page)
{
include $value;
}
}
}



$rem = isset($_GET['rem']) ? $_GET['rem'] : '';

gtPages($_GET['rem'], $rem, $set);

Cat($set, $rem);


Что в первом что во втором случае если GET параметр пуст, то покажет ошибку 404.

Как лучше сделать? Как прикрутить default в функцию Cat и как сделать так
чтоб если GET параметр был пуст подключалось что либо установленное
к примеру по умочанию?

Буду рад любым подсказкам.

_
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  [x] Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 20 дней
Карма: 7




Пока что на счет
Цитата
как сделать так чтоб если GET параметр был пуст подключалось что либо установленное
к примеру по умочанию?

Получилось только вот так

$set = array(
'' => 'main.tpl',
'index' => 'main.tpl',
'category' => 'category.tpl',
'good' => 'good.tpl'
);


function gtPages($gets, $data, $massiv)
{
if (array_key_exists($gets, $massiv))
{
$data = $gets;

} else {
header('HTTP/1.1 404 Not Found');
exit(file_get_contents(HOST.'404.html'));
}
}


function Cat($dat, $page)
{
foreach ($dat as $key => $value)
{
switch ($page)
{
case $key:
include $value;
break;
}
}
}



$rem = isset($_GET['rem']) ? $_GET['rem'] : '';

gtPages($_GET['rem'], $rem, $set);

Cat($set, $rem);


Но как прикрутить default в функцию Cat так и не доперло до меня

_
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
kaww  
Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 1755
Пользователь №: 20757
На форуме: 6 лет, 10 месяцев
Карма: 184




Цитата (Astin @ 20.06.2016 - 19:02)
Но как прикрутить default в функцию Cat так и не доперло до меня

Там вообще происходит какая-то неведомая хрень. Почему бы просто не сделать
if(array_key_exists($page, $dat)) {
include $dat[$page];
} else {
include 'main.tpl';
}
PMПисьмо на e-mail пользователю
    1   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
Astin  
 ۩  Дата
Цитировать сообщение

Пользователя сейчас нет на форуме



Здесь живет
******

Профиль
Группа: Форумчанин
Завсегдатай форума
Сообщений: 592
Пользователь №: 42519
На форуме: 9 месяцев, 20 дней
Карма: 7




Благодарю kaww
Я тоже думал сделать примерно так и проще, но почему то зациклился на том
чтоб ели что показать ошибку 404

Цитата
Там вообще происходит какая-то неведомая хрень

Может ты и прав. В функции gtPages я проверяю есть ли такой Get параметр
в массиве и если нет то показываем ошибку 404.

Ну а про вторую функцию говорить не буду и так понятно, что пытаюсь выводит
данные через switch

Просто наверно какая то параноя что нельзя доверять тому что приходит от
пользователя, ну и тем более нужно проверять GET параметры.
Наверно и на том зациклился потому что видел много сайтов у которых нет проверки
на GET параметр и подставив к параметру к примеру одинарную или двойную кавычку
видно что есть дыра на сайте через которую можно взломать бд. Ну а мне как то
не очень охото чтоб меня взломаои wink.gif
PMПисьмо на e-mail пользователю
    0   Для быстрого поиска похожих сообщений выделите 1-2 слова в тексте и нажмите сюда Для быстрой цитаты из этого сообщения выделите текст и нажмите сюда
  Быстрый ответ
Информация о Госте
Введите Ваше имя
Кнопки кодов
Для вставки цитаты, выделите нужный текст и
НАЖМИТЕ СЮДА
Введите сообщение
Смайлики
:huh:  :o  ;) 
:P  :D  :lol: 
B)  :rolleyes:  <_< 
:)  :angry:  :( 
:unsure:  :blink:  :ph34r: 
     
Показать всё

Опции сообщения  Включить смайлики?
 Включить подпись?
 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:

Опции темы Ответ в темуСоздание новой темыСоздание опроса