Используйте скрипт PHP для выполнения тега JS ‹script› только на главной странице.

Я пытаюсь создать оператор в PHP, который заставит всплывающее окно опроса обезьяны появляться на главной странице веб-сайта, а не на других страницах.

Я пробовал приведенный ниже код и различные его варианты, чтобы попытаться заставить его работать. Я могу добавить всплывающее окно на весь сайт, просто поместив элемент на веб-сайт, но когда я пытаюсь сделать так, чтобы оно отображалось только на главной странице, вообще ничего не появляется.

Я пробовал использовать только одно «эхо» вместо того, чтобы разбивать его на три, а также использовать /index.php вместо /.

<?php
if ($_SERVER["SCRIPT_NAME"] == '/') { 
  echo '<script>';
  echo '(function(t,e,s,o){var n,a,c;t.SMCX=t.SMCX||[],e.getElementById(o)||(n=e.getElementsByTagName(s),a=n[n.length-1],c=e.createElement(s),c.type="text/javascript",c.async=!0,c.id=o,c.src=["https:"===location.protocol?"https://":"http://","widget.surveymonkey.com/collect/website/js/tRaiETqnLgj758hTBazgd_2Fw5nxAtNDAAqLsYqzVv_2FShi5yryjY3psD6EYInvUCYX.js"].join(""),a.parentNode.insertBefore(c,a))})(window,document,"script","smcx-sdk");';
  echo '</script>';
 }

?>

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

Любая помощь будет принята с благодарностью, я чувствую, что это что-то очень простое, и я просто усложняю ситуацию. Надеюсь, я предоставил достаточно информации для всех вас!


person Ember    schedule 15.01.2019    source источник
comment
Может быть, $_SERVER["SCRIPT_NAME"] возвращает значение null или undefined, попробуйте if ($_SERVER["SCRIPT_NAME"] == '/' OR $_SERVER["SCRIPT_NAME"] == '')   -  person Tim567    schedule 15.01.2019
comment
Зарегистрируйте вывод $_SERVER["SCRIPT_NAME"] и посмотрите, какое значение он имеет. Затем вы можете сравнить его с тем, что у вас есть, вместо того, чтобы гадать.   -  person Quentin    schedule 15.01.2019
comment
Кроме того, почему вы называете это с помощью PHP?   -  person Tim567    schedule 15.01.2019
comment
Я полагал, что PHP будет самым простым способом написать оператор, а затем выполнить скрипт, если условие правильное. Страница написана на PHP.   -  person Ember    schedule 15.01.2019
comment
Хорошо, вы пробовали другие решения выше?   -  person Tim567    schedule 15.01.2019
comment
Да. Ваше первое предложение просто сломало страницу :(   -  person Ember    schedule 15.01.2019
comment
@ Эмбер, это было без { в конце, может быть, в этом причина? и что было на выходе $_SERVER["SCRIPT_NAME"]?   -  person Tim567    schedule 15.01.2019
comment
Вывод был /index.php   -  person Ember    schedule 15.01.2019


Ответы (1)


Решение PHP:

$active_location = $_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; 
$host_name = $_SERVER['HTTP_HOST']; 
if ($active_location == $host_name || $active_location == $host_name.'/'){
//stuff you want to do
}

$active_location вернет текущий полный URL-адрес без ssl-сертификации, $host_name даст имя хоста без ssl. если они одинаковы, код будет работать.

Статус OR (||) связан с тем, что в некоторых случаях домашняя страница будет иметь /, но вы ее не увидите, если вы не поместите статус, в некоторых случаях код не будет работать.

person Tim567    schedule 15.01.2019
comment
При попытке использовать этот код (решение PHP) всплывающее окно появилось на всех страницах, а не только на главной странице. Эхо $_SERVER[SCRIPT_NAME]; имеет вывод /index.php - person Ember; 15.01.2019
comment
@Ember Так будет if ($_SERVER["SCRIPT_NAME"] == '/index.php') { - person Tim567; 15.01.2019
comment
Я так и думал, но он все еще отображается на каждой странице. - person Ember; 15.01.2019
comment
@Ember, а каков результат echo $_SERVER["SCRIPT_NAME"]; на других страницах? - person Tim567; 15.01.2019
comment
/index.php для всего, что бесполезно - person Ember; 15.01.2019
comment
Как вы перемещаетесь по страницам? - person Tim567; 15.01.2019
comment
Просто через панель навигации. Все страницы имеют уникальный URL - person Ember; 15.01.2019
comment
Попробуйте echo $_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"]; - person Tim567; 15.01.2019
comment
Это приводит к URL-адресу страницы выбора, поэтому домашняя страница — «site.com», а страница контактов — «site.com/contact», например. - person Ember; 15.01.2019
comment
Попробуйте: if ($_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"] == '$_SERVER['HTTP_HOST']') { - person Tim567; 15.01.2019
comment
Неожиданная T_String в этой строке - person Ember; 15.01.2019
comment
Упс, опечатка: if ($_SERVER['HTTP_HOST'].$_SERVER["REQUEST_URI"] == $_SERVER['HTTP_HOST']) { - person Tim567; 15.01.2019
comment
Это случается с лучшими из нас. Это просто останавливает появление всплывающего окна. Перенесу в чат, если можно :) - person Ember; 15.01.2019
comment
Давайте продолжим обсуждение в чате. - person Ember; 15.01.2019