Использование PHP для создания внутренних ссылок

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

//add shortcode that displays current site name
function GR_site_name(){
$currentDomain = $_SERVER['HTTP_HOST'];
return $currentDomain.'/wordpress';
}

add_shortcode('GR_site_name', 'GR_site_name');
?>

Я протестировал это, добавив код на действующие сайты, и он отлично работает.

Я прочитал сообщение на странице насколько безопасен $ _SERVER [HTTP_HOST]?, однако он описывает его как «в целом небезопасный» из-за выполняемого им сценария.

$ _SERVER ['SERVER_NAME'] безопаснее, чем $ _SERVER ['HTTP_HOST']? Или оба считаются плохой практикой?


person G Ritchie    schedule 09.04.2018    source источник
comment
Возможный дубликат насколько безопасен $ _SERVER [HTTP_HOST]?   -  person MackProgramsAlot    schedule 09.04.2018


Ответы (2)


Создайте файл конфигурации с помощью define ('host', 'https://example.com') и используйте хост, где бы вы ни находились. хотите, и когда вы загружаете скрипт на сервер, просто измените URL-адрес в файле конфигурации, и все готово

person Community    schedule 09.04.2018
comment
Мы не можем доверять всему, что исходит от клиента! Надеюсь, это решит вашу проблему, и если проблема не исчезнет, ​​не стесняйтесь спрашивать - person ; 09.04.2018
comment
Я добавил define ('host', 'example.com'); в мой файл конфигурации, но шорткод по-прежнему возвращает то же значение, что означает, что он по-прежнему будет использовать значение, определенное клиентом. Как я могу это исправить? - person G Ritchie; 09.04.2018
comment
Удалось разобраться, определение было слишком рано. Я добавил $ _SERVER ['HTTP_HOST'] = 'example.com'; ниже define ('WP_SITEURL', 'http: //'. $ _SERVER ['HTTP_HOST']. '/ wordpress'); define ('WP_HOME', 'http: //'. $ _SERVER ['HTTP_HOST']. '/ wordpress'); и теперь он работает. - person G Ritchie; 09.04.2018

Используйте комбинацию стандартных констант WP_HOME & WP_SITEURL вместе с функцией site_url().

Я бы рекомендовал использовать одну локальную копию wp-config.php и другую для действующего сайта, а затем добавить к ним следующее:

define('WP_SITEURL', 'http://www.example.com/wordpress');   // Or 'http://localhost/wordpress' for the local copy
define('WP_HOME', 'http://www.example.com');

Таким образом, вам не потребуется настраиваемая функция или шорткод - вы можете просто вызвать site_url() в любом месте, чтобы получить URL-адрес вашего сайта WP.

В качестве альтернативы, если вам нужно сохранить переменную URL-адреса сайта и принять все, что на нее указывает:

define('WP_SITEURL', 'http://' . $_SERVER['HTTP_HOST'] . '/wordpress');
define('WP_HOME', 'http://' . $_SERVER['HTTP_HOST'] . '/wordpress');

Если вам нужно сохранить шорткод для использования в контексте сообщения, вы можете изменить его на:

function GR_site_name(){
    return site_url();
}

Обратите внимание, что настройки WP_HOME и WP_SITEURL переопределяют любые настройки базы данных для URL-адреса сайта, и если вы посетите страницу Settings->General, вы увидите, что эти два поля затенены.

person indextwo    schedule 09.04.2018