Как избежать изменения адреса в адресной строке в PHP - PullRequest
0 голосов
/ 27 января 2010

У меня одна проблема с адресной строкой (в браузере). URL домашней страницы моего сайта выглядит так: http://localhost/Website/index.php

Если я пишу .../Website/home.php, он загружает страницу home.php. Я думаю, что небезопасно, если кто-то может перейти на любую веб-страницу, которую он хочет, если знает ее адрес. Я хочу заблокировать автоматическое перенаправление URL в адресной строке. Пожалуйста, кто-нибудь, помогите мне сделать так, чтобы, если кто-то напишет адрес .../home.php, он перенаправит браузер на index.php как страницу по умолчанию.

Ответы [ 7 ]

6 голосов
/ 27 января 2010

Вся концепция всемирной паутины заключается в том, что каждый ресурс (например, каждая веб-страница) имеет уникальный идентификатор (адрес) ресурса. Это неотъемлемая часть работы интернета, и вы должны соответствовать ей, а не избегать ее.

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

Надеюсь, это поможет.

2 голосов
/ 27 января 2010

короче: вы не можете этого сделать. Как уже упоминалось, PHP - это серверный язык , что означает, что он не может управлять браузером (то есть не позволяет кому-либо изменять URL). Прочитайте и перейдите по ссылкам в Как работает PHP? , чтобы узнать разницу между языками на стороне сервера и на стороне клиента.

Статьи Wikipeda World Wide Web , Унифицированный указатель ресурса (URL) и Веб-сервер также могут быть интересны для вас, чтобы получить базовое понимание того, как WWW работает и что это за URL.

Но вы можете контролировать, какие файлы могут быть доступны. Есть два способа:

Конфигурация веб-сервера

Большинство (каждый?) Веб-сервер позволяет вам настраивать правила для управления тем, какие файлы должны быть доступны (также как контроль доступа). Ее пример, как это сделать с помощью веб-сервера Apache .

PHP: Фронт-контроллер

Вы также можете сделать это с помощью PHP напрямую (и немного настроить веб-сервер). Волшебное ключевое слово ей - шаблон Front Controller . Это, например, класс, который действует как единая точка входа в ваше приложение. Это означает, что каждый запрос, например до

 http://localhost/Website/home.php

или

http://localhost/Website/foo/bar.php

перенаправляется (пересылается, но вы хотите назвать его) и обрабатывается

 http://localhost/Website/index.php

Таким образом, в конечном итоге вы можете и должны решить, какой контент получает пользователь, чтобы увидеть, пытается ли он получить доступ к определенному URL.
Это дает вам больший контроль над (внешним видом) URL, но вы должны приложить больше усилий для его настройки.

Если вам интересно, как это работает, я предлагаю взглянуть на Zend Framework , который реализует этот шаблон.

Открытый вопрос ...

Хотя вы можете сделать это, вопрос в том, нужно ли вам это делать. Если вы не хотите, чтобы home.php был доступен, почему вы сначала размещаете его на своем веб-сервере?

Или, возможно, у вас неправильная картина структуры сайта в вашей голове. Веб-сайт single состоит из нескольких страниц (чаще всего), например

index.php   // is the main page
about.php   // is about the site or you
news.php    // contains the latest news you provide
archive.php // older news or articles
...

Даже требуется, чтобы пользователь / посетитель мог получить доступ к этим страницам напрямую, введя URL-адрес в адресную строку или с помощью закладки. Так работает сайт или WWW.

1 голос
/ 27 января 2010

Вы можете получить этот результат даже без кадров. Если вы используете javascript и ajax для динамической загрузки вашего контента, ваш URL не изменится.

Хотя я никогда не рекомендую это для Google, это был бы самый хороший способ сделать это, и все же отлично работать с PHP

1 голос
/ 27 января 2010

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

0 голосов
/ 14 февраля 2011

Странная вещь, которую нужно сделать, но простой способ (и не годится для всего, кроме небольших сайтов) - это использовать заголовок (LOcation: xxxx).

0 голосов
/ 27 января 2010

Я согласен с недавно опубликованными ответами.

Но если вам не нужно HTML, вы можете перейти к FLASH или Java Applet, после их загрузки ваши URL-адреса больше не изменяются.

0 голосов
/ 27 января 2010

Я бы посоветовался с Сони, но если вы действительно этого хотите, вы можете создать иллюзию, используя HTML-фреймы.

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