Проще говоря, я пытаюсь создать собственный регистратор для посетителей php-сайта с mysql. При этом я обнаружил, что вставляю две записи для каждой загрузки страницы.
Я уже исключил случайное выполнение кода дважды.
Я разместил запрос на каждой странице, предполагая, что он будет работать безупречно. Поняв, что это приводит к двум записям, я запутался и удалил запрос с других страниц, оставив его только на странице индекса.
Используя PHP $ _SERVER ['HTTP_REFERER'] и $ _SERVER ['PHP_SELF'], я вставил значения в журнал. Чтобы увидеть, где я был заранее и где я был в настоящее время.
Итак, допустим, я был на странице создания и щелкнул ссылку на «домашнюю» страницу с именем index.php. Записи в базе данных сказали бы, что referer был «create.php», а текущая страница была «index.php». Тем не менее, будет вставлена вторая запись, в которой указанным реферером будет «index.php», а текущей страницей будет «index.php»
Я проверил, что произойдет, если щелкнуть ссылку на страницу без регистратора, поэтому я щелкнул, чтобы перейти на страницу «Создать». Я проверил базу данных и там была другая запись, , но по иронии судьбы только одна запись была вставлена на этот раз . Это было странно, потому что на странице создания нет кода для входа посетителя, и он вставлял только одну запись. Тем не менее, он говорил, что ссылка была на «create.php», а текущая страница была index.php. Что является обратным от того, что должно быть.
Проведя дополнительные исследования, я решил посмотреть, как живут заголовки. Поэтому я проверил с помощью Firefox и IE, где я понял, что заголовки получают запрашиваемую мной страницу, а также всегда получают корневую страницу. Например, запрос create.php возвращает ..
GET /create.php HTTP / 1.1
GET / style / HTTP / 1.1
GET / HTTP / 1.1
Я понимаю первый GET, для запрашиваемой страницы я понимаю второй GET для внешней таблицы стилей. Последнее, что смущает меня, хотя, кажется, подтверждает, почему я получаю дубликат записи.
Поскольку на странице create.php нет журнала посещений, первой записи в журнале нет, но как только он загружает корневую страницу, создается запись для create.php, являющегося реферером, и текущая страница является страница index.php, потому что она загружает корневую страницу.
Так как на странице index.php есть журнал посещений, когда я перехожу из 'create.php' к 'index.php', первый GET создает запись в 'create.php', который является реферером и текущим страница является index.php, но вторая запись говорит, что index.php - это ссылка и текущая страница.
Так что я почти уверен, что именно по этой причине я получаю вторую запись.
Может кто-нибудь сказать мне, почему он загружает корневую страницу при каждом запросе?
Я использую xampp для Mac OS X локально, и я понимаю, что это может быть значок по умолчанию. Тем не менее, я только что удалил значок, и это все еще происходит, даже если значок не отображается.
Я могу предоставить примеры кода и другие вещи, на данный момент это просто не имеет значения, потому что запрос на вставку работает, это происходит дважды, когда я выполняю его только один раз.