Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Нужна подсказка

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (2): [1] 2 »   

> Без описания
fullzero
Отправлено: 09 Марта, 2011 - 16:04:26
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Доброго всем времени суток. Нашёл способ вывода *.txt файлов из каталогов в таблицу. Именно этот способ мне и нужен. Другие способы не предлагать. Но вот незадача! Столкнулся с другой проблемой. Нажав по ссылке на файл браузер открывает его для просмотра.
Вот сам вопрос: Как сделать так чтоб файл открывался например в моём index.php? Ниже скрипт таблицы с файлами.


PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP include ('../engine/header.php');?>
  3. <?PHP
  4. $file_arr = glob("*.txt");
  5. echo '<table align="center" border="1" cellpadding="1" cellspacing="0" width="100%">';
  6. echo '<tr><td><p align="center">Название книги</p></td><td><p align="center">Тип</p></td></tr>';
  7.         foreach ($file_arr as $file)
  8.         {
  9. echo "<tr><td><p align='center'><a href='$file'>$file<a></p></td><td><p align='center'>Книга</p></td></tr>";
  10.         }
  11. echo '</table>';
  12. ?>
  13. <?PHP include ('../engine/footer.php');?>
  14.  



P.S. Прозьба не глумиться, не флудить, я только начинаю разбираться в PHP. И на самоучители не отправлять!
 
 Top
EuGen Администратор
Отправлено: 09 Марта, 2011 - 16:12:44
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




echo(file_get_contents($file));

?


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
Viper
Отправлено: 09 Марта, 2011 - 16:13:35
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




Для начала не перемешивать двойные и одинарные кавычки. Не забывать закрывать теги.

fullzero пишет:
Как сделать так чтоб файл открывался например в моём index.php?

грубо говоря вам нужно выдать не саму ссылку на файл, а к примеру через show_file.php?file=filename - где filename имя файла которое вы передадите скрипту для выдачи.

в show_file.php вы открываете файл, имя которого получили из $_GET['file'] + обратите внимание на пост EuGen

(Отредактировано автором: 09 Марта, 2011 - 16:14:45)



-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
fullzero
Отправлено: 09 Марта, 2011 - 16:22:20
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Viper чёт я запутался. Можешь написать пример или сам скрипт. Мне пока тяжело разбираться. Столько всего нового сразу и не разберёшь
 
 Top
fullzero
Отправлено: 10 Марта, 2011 - 06:51:56
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Создал show_file.php. Но он у меня работает некорректно. Он конечно выводит на страницу нужный мне файл. Но почему то когда сделал проверку на наличие файла он выводит по несколько раз файл не найден. Вроде 3 раза Не понял Исправьте меня пожалуйста и объясните, что я не так сделал.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $file_arr = glob("*.txt");
  4. foreach ($file_arr as $file)
  5. if($_GET[file]==$file)
  6. {
  7. print(file_get_contents($file));
  8. }
  9. else echo "Файл не найден!!!";
  10. ;?>
  11.  
 
 Top
Viper
Отправлено: 10 Марта, 2011 - 08:13:11
Post Id



Активный участник


Покинул форум
Сообщений всего: 4555
Дата рег-ции: Февр. 2007  
Откуда: Симферополь


Помог: 98 раз(а)




fullzero ух... полезли вы в дебри...
Вы несколько неверно реализовали.

Нам не нужно получать список всех файлов в show_file.php, т.к. мы передаем туда имя файла и просто его выводим.

PHP:
скопировать код в буфер обмена
  1. $filename = trim($_GET['file']).'.txt';
  2.  
  3. if (isset($filename) && !empty($filename) && file_exists($filename)) {
  4.         $file_content = file_get_contents($filename);
  5.         echo $file_content;
  6. } else {
  7.         echo 'Файл не найден!';
  8. }


Обратите внимание на то, что $filename содержит лишь имя файла, а не полный путь. Полный путь можно к примеру задать так
PHP:
скопировать код в буфер обмена
  1. $full_path = 'C:/www/htdocs/files/'.$filename.'.txt';


-----
Список фильмов с описанием, блекджеком и... для Joomla? -> https://киноархив[dot]com
Демо нового движка для сайта php.su -> php[dot]su, проект на гитхабе
 
 Top
fullzero
Отправлено: 10 Марта, 2011 - 09:57:48
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Viper не помогает. пишет файл не найден.
PHP:
скопировать код в буфер обмена
  1. else {echo 'Файл не найден!';}


В папке в которой он смотрит всего 3 файла *.txt (1.txt ,2.txt ,3.txt ), index.php и show_file.php

Вот мой index.php
PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $file_arr = glob("*.txt");
  4. echo '<table align="center" border="1" cellpadding="1" cellspacing="0" width="100%">';
  5. echo '<tr><td><p align="center">Название книги</p></td><td><p align="center">Тип</p></td></tr>';
  6.         foreach ($file_arr as $file)
  7.         {
  8. echo "<tr><td><p align='center'><a href='show_file.php?file=$file'>$file<a></p></td><td><p align='center'>Текстовый файл</p></td></tr>";
  9.         }
  10. echo '</table>';
  11. ?>
  12.  


а вот сам show_file.php. Может я в index.php что то намутил?

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $filename = trim($_GET['file']).'.txt';
  4.  
  5. if (isset($filename) && !empty($filename) && file_exists($filename)) {
  6.         $file_content = file_get_contents($filename);
  7.         echo $file_content;
  8. } else {
  9.         echo 'Файл не найден!';
  10. }
  11. ;?>
  12.  
 
 Top
Мелкий Супермодератор
Отправлено: 10 Марта, 2011 - 11:18:13
Post Id



Активный участник


Покинул форум
Сообщений всего: 11926
Дата рег-ции: Июль 2009  
Откуда: Россия, Санкт-Петербург


Помог: 618 раз(а)




Намутили при соединении.
glob возвращает имена файлов с расширением и у вас ссылка получается show_file.php?file=1.txt
А при попытке посмотреть файл вы пытаетесь найти 1.txt.txt, т.к. добавляете ещё .txt к имени. Понятное дело, что такого уже нету.


-----
PostgreSQL DBA
 
 Top
fullzero
Отправлено: 10 Марта, 2011 - 12:54:14
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Исправил. Теперь работает.

PHP:
скопировать код в буфер обмена
  1.  
  2. <?PHP
  3. $filename = trim($_GET['file']);
  4.  
  5. if (isset($filename) && !empty($filename) && file_exists($filename)) {
  6.         $file_content = file_get_contents($filename);
  7.         echo $file_content;
  8. } else {
  9.         echo 'Файл не найден!';
  10. }
  11. ;?>
  12.  


EuGen, Viper, Мелкий большое вам спасибо Улыбка
Пойду дальше пробовать и учиться. Теперь мне надо с этих скриптов делать каталог книг из *.txt Радость
Если что ещё что нибудь спрошу Улыбка
 
 Top
fullzero
Отправлено: 10 Марта, 2011 - 15:05:00
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Ещё вопрос: Как вывести имя файла в таблицу так чтоб не было расширения *.txt? Просто чтоб оно в таблицу не попадало (расширение).
 
 Top
mrprometei
Отправлено: 10 Марта, 2011 - 16:14:41
Post Id


Новичок


Покинул форум
Сообщений всего: 1
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




 
 Top
fullzero
Отправлено: 11 Марта, 2011 - 07:10:05
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




mrprometei пишет:


mrprometei если я правильно понял то код который ты мне дал убирает последние 4 симбола =) Пойду попробую. Надеюсь ничего не напутаю. Улыбка
 
 Top
fullzero
Отправлено: 11 Марта, 2011 - 09:19:37
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




Снова вопрос. Если я хочу сохранить файл *.txt открывается сам файл в браузере для просмотра. Тогда в файле .htaccess добавил строчку AddType text/plain .txt но он по прежнему открывает в браузере для просмотра. Кто нить знает что эта за проблема?
 
 Top
EuGen Администратор
Отправлено: 11 Марта, 2011 - 09:29:07
Post Id


Профессионал


Покинул форум
Сообщений всего: 9095
Дата рег-ции: Июнь 2007  
Откуда: Berlin


Помог: 707 раз(а)




Нужно добавить это:
PHP:
скопировать код в буфер обмена
  1.  
  2. header("Content-Disposition: attachment; filename=file.txt;");
  3.  


-----
Есть в мире две бесконечные вещи - это Вселенная и человеческая глупость. Но насчет первой .. я не уверен.
 
 Top
fullzero
Отправлено: 11 Марта, 2011 - 09:36:14
Post Id



Гость


Покинул форум
Сообщений всего: 120
Дата рег-ции: Март 2011  


Помог: 0 раз(а)




EuGen спасибо. Направление понял Улыбка
 
 Top
Страниц (2): [1] 2 »
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Напишите за меня, пожалуйста »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB