Как избежать смены адреса в адресной строке в PHP

StackOverflow https://stackoverflow.com/questions/2145241

  •  23-09-2019
  •  | 
  •  

Вопрос

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

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

Нет правильного решения

Другие советы

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

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

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

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

Статьи в Википеде Всемирная паутина, Единый указатель ресурсов (URL) и Веб сервер Вам также может быть интересно получить общее представление о том, как работает WWW и что такое URL-адреса.

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

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

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

PHP:Передний контроллер

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

 http://localhost/Website/home.php

или

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

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

 http://localhost/Website/index.php

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

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

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

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

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

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.

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

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

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

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

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

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

Странное желание сделать, но простой способ (и не подходит ни для чего, кроме небольших сайтов) — использовать Header(LOcation:хххх).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top