2014-10-01 3 views
0

Я хочу защитить страницы от фактического пути, поэтому я использую переменный сервер Ури, чтобы знать, что пользователь запись в панели навигации:PHP, если переменная реж матч заданы переменная

page.php

if ($_SERVER['REQUEST_URI'] == '/path/to/page.php') { 
    unset($_SERVER['REQUEST_URI']); // nothing will be displayed 
} else // page content 

И он работает нормально, но теперь проблема заключается в id = x или просто добавлении? покажет страницу с ошибками.

Есть ли способ, чтобы добавить или == ....

Я хочу, чтобы предотвратить прямой доступ, потому что я использую маршрутизатор, который включает в себя эти страницы в index.php, как это:? Сайт. com/страница и site.com/page? ...

Спасибо ВАМ!

EDIT: Добавить больше информации:

.htaccess

Options -Indexes 

DirectoryIndex index.php 

<IfModule mod_rewrite.c> 
RewriteEngine On 
RewriteBase/
RewriteRule ^index\.php$ - [L] 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule . /index.php [L] 
</IfModule> 

маршрутизатор в index.php

// array whitelist for match 
$includes = array(
    '/home' => 'dir/to/home.php', 
    '/other' => 'dir/to/other/page.php' 
); 
if ($_SERVER['REQUEST_URI'] == '/') 
    $_SERVER['REQUEST_URI'] = '/home'; 

preg_match('/^([\w\/]+)/', $_SERVER['REQUEST_URI'], $matches); 
$matches[1] = isset($matches[1]) ? $matches[1] : null; 

if(array_key_exists($matches[1], $includes)) { 
    $content = include($includes[$matches[1]]); 
} else $content = include('views/error.php'); 
return $content; 
+1

Ждать - необходима дополнительная информация. Отмена '$ _SERVER ['REQUEST_URI']' не будет влиять на адрес браузера клиента, как показано. Вы используете переписывание URL-адресов через Apache mod_rewrite или подобное? Вы используете 'REQUEST_URI' для получения путей ссылок в вашем коде? Пожалуйста, разместите более релевантный код, показывая, как вы на самом деле его используете. –

+0

Я определил в .htaccess для перенаправления на index.php И я тестирую это, и он работает, когда я вхожу в путь в навигационной панели, ничего не отображается, но если я добавляю? то отображается страница. –

ответ

0

Я не знаю, если я понимаю, но если вы сделаете это путь:

if (preg_match('\/path\/to\/page\.php', $_SERVER['REQUEST_URI'])) 
+0

Будет ли это работать? я имею в виду, если dir просто .php или .php? ... будет отменять переменную? путь/к/page.php? -> unset variable, "?" и так далее:? x –

+0

Я получаю Предупреждение: preg_match(): разделитель не должен быть буквенно-цифровым или обратным слэшем –

Смежные вопросы