Понимание разницы между PHP_SELF и SCRIPT_NAME в PHP

Термины «PHP_SELF» и «SCRIPT_NAME» относятся к двум разным переменным в PHP, которые предоставляют информацию о выполняющемся в данный момент скрипте. Вот разница между ними:

  1. PHP_SELF:

    • Переменная $_SERVER['PHP_SELF'] — это суперглобальная переменная, содержащая имя файла выполняющегося в данный момент скрипта. Это часть массива $_SERVER, который содержит различные переменные сервера и среды.
    • Он возвращает путь и имя файла PHP-скрипта, который выполняется, относительно корня документа. Например, если скрипт расположен по адресу « http://example.com/myscript.php », $_SERVER['PHP_SELF']будет содержать «/myscript.php».
    • Его можно использовать для ссылки на текущую страницу в HTML-формах или для создания самоссылающихся URL-адресов.

    Пример:

    <?php
    echo $_SERVER['PHP_SELF'];
    ?>
  2. SCRIPT_NAME:

    • Переменная $_SERVER['SCRIPT_NAME'] — это еще одна суперглобальная переменная, содержащая путь и имя файла выполняющегося в данный момент скрипта. Он похож на PHP_SELF, но всегда возвращает имя скрипта с косой чертой в начале.
    • В отличие от PHP_SELF, SCRIPT_NAMEне предоставляет дополнительную информацию об URL-адресе запроса, который мог быть переписан или изменен с использованием методов перезаписи URL-адресов.
    • Он обычно используется для создания самоссылающихся URL-адресов или для включения других скриптов относительно текущего местоположения скрипта.

    Пример:

    <?php
    echo $_SERVER['SCRIPT_NAME'];
    ?>

Иными словами, PHP_SELFвключает путь и имя файла текущего скрипта, а SCRIPT_NAMEвключает только имя файла с косой чертой в начале.