Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Текущая директория
 
 автор: Eugene77   (13.02.2008 в 09:51)   письмо автору
 
 

Как правильно определятьтекущую директорию?:
dirname($_SERVER['PHP_SELF'])
или
dirname(__FILE__)

В каких случаях будут накладки, если я перепутаю одно с другим?

   
 
 автор: mechanic   (13.02.2008 в 10:06)   письмо автору
 
   для: Eugene77   (13.02.2008 в 09:51)
 

ну вообще да, PHP_SELF и __FILE__ разные вещи..
попробуй такой пример

1.php
<?php
echo dirname($_SERVER['PHP_SELF']);
include 'inc/2.php';
?>


inc/2.php
<?php
echo dirname(__FILE__);
?>


т.е. __FILE__ указывает реально на тот файл, где выполняется текущая строка кода
а PHP_SELF - на скрипт, который ты видишь в адресной строке браузера

   
 
 автор: Freddie_X   (13.02.2008 в 10:13)   письмо автору
 
   для: mechanic   (13.02.2008 в 10:06)
 

А если dirname($_SERVER['PHP_SELF']) это директория, в которой находится файл, то какой функцией узнать имя файла?

   
 
 автор: mihdan   (13.02.2008 в 10:23)   письмо автору
 
   для: Freddie_X   (13.02.2008 в 10:13)
 


<?
// имя файла
echo basename(__FILE__);
?>

   
 
 автор: mechanic   (13.02.2008 в 12:09)   письмо автору
 
   для: Freddie_X   (13.02.2008 в 10:13)
 

имя исполняющегося скрипта в твоем случае - аргумент для dirname ))
т.е. $_SERVER['PHP_SELF']

   
 
 автор: Freddie_X   (13.02.2008 в 13:05)   письмо автору
 
   для: mechanic   (13.02.2008 в 12:09)
 

mihdan, не подходит, потому что функция возвращает имя именно того файла, в котором она написана. А у меня она будет написана в одном файле, который будет инклудится во все остальные. Вот мне и надо узнать имена этих файлов.
Сделал так, но думаю, есть способ проще... или я не прав?
<?php $phpself $_SERVER['PHP_SELF'];
$phpself explode("/",$phpself);
$pagename $phpself[count($phpself)-1]; ?>


mechanic, $_SERVER['PHP_SELF'] возвращает имена/папок/имя_файла, а мне нужно именно имя_файла.

   
 
 автор: mihdan   (13.02.2008 в 15:31)   письмо автору
 
   для: Freddie_X   (13.02.2008 в 13:05)
 


<?
// имя файла
echo basename($_SERVER['PHP_SELF']);
?> 

   
 
 автор: Eugene77   (13.02.2008 в 20:27)   письмо автору
 
   для: mechanic   (13.02.2008 в 10:06)
 

>
>т.е. __FILE__ указывает реально на тот файл, где выполняется текущая строка кода
>а PHP_SELF - на скрипт, который ты видишь в адресной строке браузера

Ясно.
Но хочу всё же уточнить.
Если ничего не инклудить, то оба определения дадут всегда в точности одинаковый результат или возможны всё-таки в некоторых случаях расхождения?

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования