Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Серверные технологии и Flash

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 15.12.2005, 18:35
Илья К вне форума Посмотреть профиль Отправить личное сообщение для Илья К Найти все сообщения от Илья К
  № 1  
Ответить с цитированием
Илья К

Регистрация: Dec 2002
Адрес: Berlin
Сообщений: 444
По умолчанию каскадный include

Всем добрый день!
Проблема с каскадным инклюдированием.
Пример 1: вставляю друг в дружку через include() -- работет.
Пример 1: пишу ф-цию, просматривающую папку с именем и $dirname позволяющую инклюдировать все ее файлы.
PHP код:
function include_dir($dirname)
{
    
$ECHO_include_dir "";
    
$handle = @opendir($dirname);
    while(
$current_file=readdir($handle))
    {
        if(
$current_file!=="." && $current_file!==".." && is_file($dirname."/".$current_file))
        {
            include (
$dirname."/".$current_file);
            
$ECHO_include_dir $ECHO_include_dir.$current_file."<br>\n";
        }
    }
    echo 
$ECHO_include_dir;

И вот тут скритп престает работать...
Оба примера в аттаче.
В чем тут может быть дело?
Спасибо.
Вложения
Тип файла: zip 01_dir_a.zip (780 байт, 87 просмотров)
Тип файла: zip 02_dir_a.zip (941 байт, 99 просмотров)


Последний раз редактировалось Илья К; 16.12.2005 в 02:04.
Старый 16.12.2005, 02:55
Илья К вне форума Посмотреть профиль Отправить личное сообщение для Илья К Найти все сообщения от Илья К
  № 2  
Ответить с цитированием
Илья К

Регистрация: Dec 2002
Адрес: Berlin
Сообщений: 444
PHP код:
<?php
function include_dir($dirname)
{
    
$ECHO_include_dir "";
    
$handle opendir($dirname);
    while(
$current_file=readdir($handle))
    {
        if(
$current_file!=="." && $current_file!==".." && is_file($dirname."/".$current_file))
        {
            include (
$dirname."/".$current_file);
            
$ECHO_include_dir $ECHO_include_dir.$current_file."<br>\n";
        }
    }
    echo 
$ECHO_include_dir;
}
include_dir ("dir_c");
?>
Ошибки при вызове файла через a.php (не при обращнии к b.php напрямую):
Warning: opendir(dir_c): failed to open dir: Invalid argument in z:\home\centrimax\www\adminpanel\test\02_dir_a\dir_b\b.php on line 5

Warning: readdir(): supplied argument is not a valid Directory resource in z:\home\centrimax\www\adminpanel\test\02_dir_a\dir_b\b.php on line 6


Последний раз редактировалось Илья К; 16.12.2005 в 02:57.
Старый 16.12.2005, 02:59
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 3  
Ответить с цитированием
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
PHP FAQ: Ничего не работает! Что делать???
__________________
а мы летим орбитами путями не избитыми...

Старый 16.12.2005, 03:00
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 4  
Ответить с цитированием
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
а так же советую попытаться перевести ошибки и вообще впредь думать перед тем как писать на форум подобный бред
__________________
а мы летим орбитами путями не избитыми...

Старый 16.12.2005, 13:30
Илья К вне форума Посмотреть профиль Отправить личное сообщение для Илья К Найти все сообщения от Илья К
  № 5  
Ответить с цитированием
Илья К

Регистрация: Dec 2002
Адрес: Berlin
Сообщений: 444
2 Nirva
Не стоит горячиться. Понятно, что ошибка в opendir -- точнее, конечно, не в самой ф-ции, а в параматре. Но почему она возникает, тогда ведь и иклюд (в первом примере) не должен был бы работать!
Насколько я понимаю, opendir пытается открыть папку dir_c, беря за точку отщета местонахождение a.php, т.е. сначала b.php встраивается в a.php, и только потом срабатывает opendir(), точнее моя include_dir(), в которой находится opendir().
С инклюд (пример 01) все наоборот -- b.php инклюдится в a.php только после того, как его собственный include(c.php) выполнен... Или я не понимаю чего...


Последний раз редактировалось Илья К; 16.12.2005 в 14:44.
Старый 20.12.2005, 02:56
Nirva вне форума Посмотреть профиль Отправить личное сообщение для Nirva Посетить домашнюю страницу Nirva Найти все сообщения от Nirva
  № 6  
Ответить с цитированием
Nirva
"Вождь"
 
Аватар для Nirva

Регистрация: Jun 2002
Адрес: New Zealand
Сообщений: 4,600
Отправить сообщение для Nirva с помощью ICQ
PHP FAQ: Ничего не работает! Что делать???

интересно, со второго раза дойдет?
__________________
а мы летим орбитами путями не избитыми...

Старый 20.12.2005, 09:03
kompadre вне форума Посмотреть профиль Отправить личное сообщение для kompadre Найти все сообщения от kompadre
  № 7  
Ответить с цитированием
kompadre
 
Аватар для kompadre

Регистрация: Aug 2001
Адрес: Barcelona
Сообщений: 1,277
Отправить сообщение для kompadre с помощью ICQ
Рабочая папка в "вставленном" коде не меняется. Попробуй следующие

file1.php :
<?
include 'dir2/file2.php';
?>

dir/file2.php :
<?
echo (getcwd() . '<br>');
echo __FILE__;
?>

Рассказывать как зделать так что-бы заработал твой код не буду потому что концепция совсем не правильная. Динамически "вставлять" код - извращение. Максимум хитрости в инклюдном деле на которую может себе позволить пойти программист -- условное "вставление" (в одном случае вставляем одно, в другом - другое). Просто откажись от идеи, подумай как зделать другим путём.


Последний раз редактировалось kompadre; 20.12.2005 в 09:05.
Создать новую тему Ответ Часовой пояс GMT +4, время: 18:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 18:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2024, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.