Бит в конце URL-адреса называется переменной GET
. Когда пользователь переходит на страницу с одним в конце, например:
example.org/comics/myawesomecomic.php?page=50
Сервер переходит на эту страницу, и (обычно) серверный скрипт выполняет некоторую работу перед выводом страницы пользователю. В PHP переменная GET является глобальной переменной (наряду с другими, большими из которых являются POST и COOKIE), которую сценарий php может получить, передав значение, переданное с сервера в сценарий, в данном случае в $_GET['page']
.
Итак, если у вас есть скрипт, который обрабатывает все запросы на комическую сюжетную линию «Мой удивительный комикс», и он разбит на 60 страниц, все, что пользователь должен сделать, чтобы попасть на любую страницу, это изменить переменную GET на номер страницы. , Ваш скрипт может сделать что-то действительно простое, например, получить содержимое каталога с именем myawesomecomic/
, получить файл с именем 50.html
и затем вывести его пользователю. Но, скорее всего, вам нужно что-то более сложное, так как вы пошли на эту проблему, поэтому вместо этого он берет страницу 50 из базы данных, обновляет всю навигацию и, возможно, даже добавляет стильный 50 - 60
в верхний угол.
Теперь вот самая легкая часть, она же ответ на ваш вопрос. Теперь, когда вы знаете, как работают переменные GET и что с ними делает серверный скрипт, все, что вам нужно сделать, чтобы сделать навигацию, как вы описываете:
$current_page = $_GET['page'];
$next_page = $current_page + 1;
$prev_page = $current_page - 1;
$first_page = 1;
$last_page =
И эта последняя часть будет зависеть от вас, чтобы уже знать. Либо у вас всегда может быть одинаковое количество страниц, либо вы можете запрашивать БД в то же время, когда вы открываете текущую страницу, и т. Д. Допустим, вы запрашивали в БД общее количество страниц, пока получали текущую страницу. И он вернул 60 (и мы будем предполагать, просто чтобы избежать головной боли, что 60 - это количество страниц, начиная с 1, а не 0), поэтому вернемся к навигации ...
$last_page = 60;
Теперь у вас есть ваш первый, последний, предыдущий и следующий. Предполагая, что вы разбираетесь в HTML, все, что осталось (кроме того, чтобы выглядеть красиво), это:
echo "
<a href='myawesomecomic.php?page=$first_page'>First Page</a>
<a href='myawesomecomic.php?page=$prev_page'>Previous Page</a>
<a href='myawesomecomic.php?page=$next_page'>Next Page</a>
<a href='myawesomecomic.php?page=$last_page'>Last Page</a>
";
А вот и ваша навигация. Очевидно, вы захотите расположить их так, чтобы они подходили под ваш сайт, чтобы они не работали вместе, использовали крутые стрелки и т. Д. Но ссылки будут работать, даже если вы не делаете ничего необычного.
НО!
Я только что дал вам действительно хорошую версию "я впервые получаю удовольствие от PHP". Вещи, которые я пропустил (о которых вы должны узнать больше или провести серьезное исследование):
Поскольку переменные GET включены в URL, их нетрудно понять. Я мог бы легко изменить ?page=50
на ?page=1=1
и, в зависимости от того, как вы получаете контент, возможно, я просто запросил все содержимое вашей базы данных. Никогда не захватывает ввод пользователя (даже URL) прямо в ваши переменные. Если вы знаете, что это номер страницы, то вы знаете, что это номер. Проверьте ввод, чтобы убедиться, что это число, прежде чем запускать его через скрипт и базу данных.
Вам нужна система, если пользователь вводит число, и оно выходит за пределы допустимого диапазона. Что-то простое, например «Извините, страница не найдена» или даже «Страница не найдена, начиная с самого начала» и отправляя их обратно на страницу 1, что угодно. Если вы просто ничего не выводите, это выглядит плохо и вы обнаруживаете части логики вашего скрипта, которыми можно манипулировать.
Когда вы освоитесь с переменными GET, я предлагаю отключить их для mod_rewrite (при условии, что вы находитесь на сервере Apache).Не вмешивайтесь сейчас, но когда вы освоитесь, вы можете начать создавать URL-адреса, такие как: example.org/comics/myawesomecomic/page50
или example.org/comics/myawesomecomic/page/50
или что там у вас.На самом деле все страницы в этом каталоге перенаправляются на один и тот же сценарий, который затем проверяет окончание URL-адреса, чтобы выяснить, что извлечь из БД.Но для конечного пользователя это выглядит как веб-страница.Это выглядит чище (я думаю) и делает еще больше, чтобы покрыть логику вашего скрипта.Но я говорю, что нужно подождать, потому что это также открывает вам другие риски, которые может быть сложнее предвидеть, пока вы не привыкнете к дезинфекции ввода пользователя и обработке стандартных ошибок страницы, таких как «страница не найдена».
В любом случае, выяснение таких вещей, как добавление недели к текущей дате и добавление номера страницы к текущей странице, полностью помогает мне в разработке PHP и веб-приложений, поэтому я надеюсь, что это было полезнопростой.