Intereting Posts
Stripe: нет такого токена .. аналогичный объект существует в тестовом режиме, но для выполнения этого запроса использовался клавиша режима реального времени Загрузить изображение на imgur с помощью php Как обращаться с PHP-переключателем с разными типами? Вопрос о включении html-страницы в PHP Обновить расширение ICU в xampp? Контроллер Symfony2 не будет исключать исключение Обновление файла RSS из другого XML-файла Загрузка изображений в TileList из Mysql с использованием PHP и XML на Flash CS5 Как скрыть ключ API на стороне клиента Javascript Laravel DatabaseTransactions, DatabaseMigrations не влияют при тестировании Редактирование цикла wordpress для отображения эскизов и выдержки PHP / MySQL – как предотвратить два запроса * Обновление Как я могу выполнять трудоемкую задачу после отправки ответа клиенту Как я могу загрузить файл, используя функцию jQuery $ .ajax с json и php извлекать субдомен в качестве переменной get

Как работают URL-адреса переполнения стека?

У меня есть URL-адреса моего сайта, такие как URL-адрес переполнения стека. Мои URL-адреса указаны ниже.

http://www.example.com/1255544/this-is-the-url-text 

В этом URL-адресе 1255544 – это идентификатор, а this-is-the-url-text заголовка URL-адреса, который хранится в базе данных. Я заметил, что URL-адреса переполнения стека работают на базе id. Предположим, что здесь находится URL переполнения стека

 http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks 

В этом URL-адресе 15679171 является идентификатором сообщения. Когда я изменил этот идентификатор на 15706581 не касаясь 15706581 « new-way-to-prevent-xss-attacks и нажав «Ввод», URL-адрес автоматически изменился на следующий URL-адрес:

 http://stackoverflow.com/questions/15706581/simplecursoradapter-does-not-load- external-sqlite-database-id-error 

И когда я попытался удалить часть части текста заголовка URL, как показано ниже

 http://stackoverflow.com/questions/15679171/new-way-to-preve 

Он автоматически корректирует URL-адрес, как показано ниже:

 http://stackoverflow.com/questions/15679171/new-way-to-prevent-xss-attacks 

Это означает, что данные извлекаются из базы данных на основе идентификатора 15679171 а соответствующий текст заголовка URL-адреса, new-way-to-prevent-xss-attacks , прикрепляется в соответствии с идентификатором.

Я также хочу это сделать. Но проблема в том, что я не пойму, что если кто-то изменит идентификатор URL-адреса, текст заголовка должен автоматически измениться. Как мне это сделать?

Я подумал следующее:

 $url_id = $_GET["id"]; $url_txt = $_GET["url_txt"]; $qry = "SELECT * FROM mytable WHERE url_id = '{$url_id}' LIMIT 1"; $data = mysql_query($qry); $data_set = mysql_fetch_array($data); if($url_txt== $data_set["url_txt"]) { // proceed further } else { $rebuilt_url = "http://www.example.com/" . $url_id . "/" . $data_set["url_txt"]; header("Location: {$rebuilt_url}") // Redirect to this URL } 

Это правильный и эффективный способ выполнить это действие или нет? Есть ли решение?

Solutions Collecting From Web of "Как работают URL-адреса переполнения стека?"

Ваш код выглядит довольно хорошо, и в одном из моих ответов «Переполнение стека» я также предложил аналогичный подход. Однако я предлагаю лишь одно незначительное улучшение. Вместо:

 header("Location: {$rebuilt_url}"); 

Ты должен сделать:

 header ('HTTP/1.1 301 Moved Permanently'); header("Location: {$rebuilt_url}"); 

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

Также проверьте:

  1. .htaccess, если URL-адрес плохо работает
  2. .htaccess переписать дружественные URL-адреса

Если вы используете Apache , я думаю, вы должны знать о перезаписи URL-адресов

При переписывании URL-адресов вы переписываете URL-адрес для более удобного просмотра. Взгляните на URL-адрес ниже.

http://www.downloadsite.com?category=34769845698752354

и когда вы переписываете URL-адрес, это стало

 http://www.downloadsite.com/Nettools/Messengers 

Необходимо переписать URL-адрес в настройке Apache (правила перезаписи), чтобы он переписывал ваш URL-адрес до того, как запрос интерпретируется PHP, поэтому вы получите точный ресурс, который хотите приобрести

  RewriteRule ^/category$ /content.php RewriteRule ^/category/([0-9]+)$ /.php?id=$1 RewriteRule ^/category/([0-9]+),([ad]*),([0-9]{0,3}),([0-9]*),([0-9]*$) cat.php?id=$1&sort=$2&order=$3&start=$4 

Ну, я не могу объяснить вам все здесь, но ниже я предоставляю вам некоторые ссылки, где вы можете узнать о перезаписи URL.

Это лучший хак, который вы можете сделать для создания дружественных URL-адресов!

Ресурсы: