? страница = индекс $ _GET - PullRequest
0 голосов
/ 04 июля 2011

На данный момент используется этот код:

if ($_GET['page'] == 'index' 
     and file_exists('./intl/tpl/' . $_GET['page'] . '.tpl') 
     or !file_exists('./intl/tpl/' . $_GET['page'] . '.tpl') 
     or !$_GET['page']) {
//code
} elseif ($_GET['page'] == 'multi' 
          and file_exists('./intl/tpl/' . $_GET['page'] . '.tpl')) {
//code 2
}

и так далее ...

Вопрос 1: этот код "хороший"? Не нужно бежать или что-то еще?

Вопрос 2:? Page = выход из системы не работает, поэтому я создал logout.php, который выглядит следующим образом:

<?php
require_once "./intl/config.php";
SessionDelete('logged_in');
SessionDelete('username');
SessionDelete('userid');
if ($user_admin != null) {
    SessionDelete('inadmin');
    if (SessionGet('s_order') != null or SessionGet('s_page_show_all') != null) {
        SessionDelete('s_order');
        SessionDelete('s_page_show_all');
    }
}
header('Location: '.$config['indexurl'].'index.php');
?>

Может быть, перед удалением сеанса нужно запустить сеанс, и это возможно сделать с помощью? Page = logout?

1 Ответ

0 голосов
/ 04 июля 2011

Код, безусловно, можно улучшить:

  1. Переупорядочить тесты, чтобы он не генерировал E_NOTICE ошибок
  2. Скобки, чтобы приоритет оператора сразу был очевиден
  3. Используйте логические операторы && и || (как говорится в комментарии Гарви)

После этого у вас будет:

if (empty($_GET['page']) ||
    !file_exists('./intl/tpl/' . $_GET['page'] . '.tpl') ||
    ($_GET['page'] == 'index' && file_exists('./intl/tpl/' . $_GET['page'] . '.tpl')) {
//code
}
} elseif ($_GET['page'] == 'multi' && file_exists('./intl/tpl/' . $_GET['page'] . '.tpl')) {
//code 2
}

Затем перепишите егобольше, чтобы было понятно почему вы делаете то, что делаете.Это также позволит вам писать более простой код.Простое - это хорошо.

// This way it's obvious that 'index' is the default page
$page = !empty($_GET['page']) ? $_GET['page'] : 'index';

if (!file_exists('./intl/tpl/' . $page . '.tpl')) {
    $page = 'index'; // comment here saying that if a non-existing page is requested, we display the index instead
}

$template = './intl/tpl/' . $page . '.tpl';

// At this point, we know that $page has a value, and we know that $template exists, so:
switch($page) {
    case 'index':
        // code
        break;
    case 'multi':
        // code2
        break;
}

Что касается второго вопроса: да, вам нужно начать сеанс, прежде чем вы сможете изменить или уничтожить его.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...