Задать вопрос

Странное поведение сценария на сайте

Здравствуйте!

Я написал простой php скрипт, который отодвигает меню на сайте от левого края на разное расстояние в зависимости от того, на какой странице находится пользователь. Если на главной — на -156px, а если на всех остальных — то на -43px.

Скрипт имеет такой вид:

<?php 
function request_url()
{
  $result = ''; // Пока результат пуст
  $default_port = 80; // Порт по-умолчанию
 
  // А не в защищенном-ли мы соединении?
  if (isset($_SERVER['HTTPS']) && ($_SERVER['HTTPS']=='on')) {
    // В защищенном! Добавим протокол...
    $result .= 'https://';
    // ...и переназначим значение порта по-умолчанию
    $default_port = 443;
  } else {
    // Обычное соединение, обычный протокол
    $result .= 'http://';
  }
  // Имя сервера, напр. site.com или www.site.com
  $result .= $_SERVER['SERVER_NAME'];
 
  // А порт у нас по-умолчанию?
  if ($_SERVER['SERVER_PORT'] != $default_port) {
    // Если нет, то добавим порт в URL
    $result .= ':'.$_SERVER['SERVER_PORT'];
  }

  $result .= $_SERVER['REQUEST_URI'];

  return $result;
}

$page = request_url();
$master = "http://www.masterhaus.net/";
if ($page == $master)
	{
		echo "<nav class='navigation' style = 'margin: 0 0 0 -156px;'>";
	}
else
	{
		echo "<nav class='navigation' style = 'margin: 0 0 0 -43px;'>";
	}
?>


— Сайт, на котором находится это меню:
www.masterhaus.net/

На моем рабочем компьютере все ок. Очистил все кеши, в том числе и внутренний друпаловский. Проверил через сервис browsershots.org. Тоже все ок. Проверил через анонимайзер — все ок.

Но на компьютерах коллег, с такими же точно браузерами и разрешениями меню на главной выдается только с отступом
echo "<nav class='navigation' style = 'margin: 0 0 0 -43px;'>";  

Как будто первое условие
echo "<nav class='navigation' style = 'margin: 0 0 0 -156px;'>"
; вообще не срабатывает. При этом переменная $page точно принимает значение «www.masterhaus.net/», я делал тестовый вывод. И на компьютерах коллег этот вывод давал такие же результаты.

Я искренне не понимаю, почему на моем компьютере все работате как надо, через анонимайзер С МОЕГО компьютера тоже все работает как надо, а вот у коллег — по другому. Php же интерпретируется сервером, а, значит, результат не должен зависеть от клиентской платформы…

Спасибо за помощь.
  • Вопрос задан
  • 2790 просмотров
Подписаться 2 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
rOOse
@rOOse
Frontend developer
Просто они заходят по адресу masterhaus.net/
И кстати у вас же на body класс front — not-front используйте его, зачем городить такое.
Ответ написан
Комментировать
Anonym
@Anonym
Программирую немного )
А где этот скрипт выполняется? В разрезе друпала — это полный бред.
Во-первых, в темизации друпала обычно для body прописываются классы, среди них есть что-то типа page-front. Просто пропишите нужные стили в CSS.
Во-вторых, если вам позарез надо как-то модифицировать вывод, работайте в препроцессе нужной темы, используйте drupal_is_front_page() и другие функции API.
Если хотите, могу рассказать подробнее в ЛС.
Ответ написан
Комментировать
Slavenin999
@Slavenin999
программист php/erlang/elixir/js
сделать
var_dump($page == $master);

и посмотреть там, где не работает.

возможно кэширует браузер
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы