В настоящее время я изучаю PHP и, судя по тому, что я вижу, $_SERVER ['SCRIPT_NAME']; содержит путь к текущему сценарию. Однако любая страница, которую я пытаюсь идентифицировать, отображается как «/index.php».

Например, я запущу это на about.php, но результаты вернут "/index.php".

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

Очевидно, я чего-то упускаю, но не понимаю, что это такое.

php
0
Professor B 4 Апр 2014 в 22:37
Да, вы что-то упускаете, но я не могу сказать, что из вашей информации. Конечно, он всегда показывает вызываемый скрипт, то есть имя, указанное в URL-адресе.
 – 
Str.
4 Апр 2014 в 22:41
about.php является файлом шаблона?
 – 
ryanwinchester
4 Апр 2014 в 22:42
Да, это файл шаблона
 – 
Professor B
4 Апр 2014 в 22:55
Поэтому. он включается в index.php
 – 
ryanwinchester
5 Апр 2014 в 20:14

2 ответа

Лучший ответ

Поскольку ваш about.php является файлом шаблона, который в какой-то момент включается в index.php , в результате вы получаете /index.php.

Вам следует попробовать использовать __FILE__:

Полный путь и имя файла. Если используется внутри включения, возвращается имя включенного файла. Начиная с PHP 4.0.2, __FILE__ всегда содержит абсолютный путь с разрешенными символическими ссылками, тогда как в более старых версиях он содержал относительный путь при некоторых обстоятельствах.

1
PeeHaa 5 Апр 2014 в 20:24
Спасибо за ответ, Декер. Причина, по которой я использую, заключается в том, чтобы форма возвращалась прямо на страницу, на которой она была после завершения. <form action="$current_file" method="POST"> с $current_file = (__FILE__) возвращает URL-адрес полного пути. Есть ли другой способ вернуть пользователя на исходную страницу без использования фактического URL-адреса? ПРИМЕЧАНИЕ. Это для формы входа, поэтому я даю пользователям доступ для входа на любой странице.
 – 
Professor B
8 Апр 2014 в 06:52
Вы можете попробовать action="<?=($_SERVER['PHP_SELF'])?>" или action="?" для атрибута формы action. Кроме того, action="" работает, но я не думаю, что это допустимый HTML5.
 – 
ryanwinchester
8 Апр 2014 в 09:54
Спасибо, никаких действий не требуется (я этого не знал). Однако изначально это вызвало у меня проблему - без действия после входа в систему мне пришлось обновить страницу, чтобы избавиться от формы. Я просто перенаправил заголовок на страницу реферера после завершения и альт! Еще раз спасибо!
 – 
Professor B
8 Апр 2014 в 21:36

"SCRIPT_NAME" Содержит путь к текущему сценарию. Это полезно для страниц, которые должны указывать сами на себя. Константа __FILE__ содержит полный путь и имя текущего (т.е. включенного) файла.

Выдержка из http://www.php.net/manual/en/reserved .variables.server.php

Документация веб-сайта php.net очень многословна с отличными комментариями пользователей. Я бы посоветовал вам первым делом ответить практически на любой ваш вопрос о php.

0
PeeHaa 5 Апр 2014 в 20:25
Вам может понадобиться PHP_SELF 'PHP_SELF' The filename of the currently executing script, relative to the document root. For instance, $_SERVER['PHP_SELF'] in a script at the address http://example.com/foo/bar.php would be /foo/bar.php. The __FILE__ constant contains the full path and filename of the current (i.e. included) file. If PHP is running as a command-line processor this variable contains the script name since PHP 4.3.0. Previously it was not available.
 – 
James McDonnell
4 Апр 2014 в 22:45
Спасибо за ваш ответ. На самом деле это был ресурс, который я использовал. Я пробовал PHP_SELF, но все равно получаю те же результаты
 – 
Professor B
4 Апр 2014 в 22:58