Как получить URL-адрес в теле страницы PHP?

На сайте Drupal PHP-код включен для содержимого тела страницы. Как я могу получить аргумент и его значение в PHP-коде? Например, я хотел бы получить ref и 33002 :

 http://example.com/node/1?ref=33002 

В следующем коде:

 <?php print arg(0); print arg(1); print arg(2); print arg(3); ?> 

Я могу получить node и 1 , но ничего о ref или 33002 .

Благодаря!

Использовать это:

 <?php $a=$_REQUEST['ref']; echo "The value of the ref parameter is ".$a; ?> 

Вы можете использовать drupal_get_query_parameters () следующим образом:

 $params = drupal_get_query_parameters(); if (isset($params['ref']) && is_numeric($params['ref'])) { var_dump(check_plain($params['ref'])); } 

Решение, выполненное с помощью скопированных работ, но «путь Drupal» заключается в передаче значения ref в качестве аргумента url, то есть:

 http://example.com/node/1/33002 

Теперь вы можете получить доступ к значению ref с помощью функции arg ():

 $ref = arg(2); 

Конечно, такой подход может работать, только если значение ref всегда является третьим аргументом.

Несмотря на то, что приведенный выше код работает, не рекомендуется размещать скрипты php в корпусе узла. Это делает ваш сайт сложнее поддерживать и отлаживать. Настанет день, когда редактор удалит ваш php-узел случайно, тем самым сломав ваш сайт.

Если у вас есть скрипт php, который вы хотите запустить, лучший способ – добавить на свой сайт простой пользовательский модуль, который реализует hook_menu. Посмотрите модуль меню или этот модуль hello world, чтобы узнать больше о hook_menu.

Наконец, независимо от выбранного вами метода (php-узлы или настраиваемый модуль) всегда проверяйте ввод URL- адресов , например, с помощью check_plain () .