Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод файла по запросу 
:(
    Опции темы
BlackRu
Дата 24.9.2009, 18:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Подскажите, плз. Нужно проверить, есть ли файл на сервере и вывести его содержимое.
Имя файла указывается в поле ввода.
Код

<?
echo "<form action=index.php?  method=GET>
<input type=text    name=name>
<input type=submit value='загрузить документ'>
</form>";
$name=$_GET['name'];

$allow = array('  .txt');

if (isset($_GET['name']) && in_array($_GET['name'], $allow)) {
 echo "$name<br>";
      readfile($_GET['name']);

        }

?>


Это сообщение отредактировал(а) BlackRu - 24.9.2009, 18:51


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
Strilo4ka
Дата 24.9.2009, 19:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



file_exists

Добавлено через 1 минуту и 4 секунды
Пример #1 Проверка существования файла

Код

<?php
$filename = '/path/to/foo.txt';

if (file_exists($filename)) {
    echo "The file $filename exists";
} else {
    echo "The file $filename does not exist";
}
?> 


Добавлено через 5 минут


Код

#...
if (isset($_GET['name']) && in_array($_GET['name'], $allow) && file_exists($_GET['name'])) {
      echo "$name<br>";
      readfile($_GET['name']);

        }
#...



PM ICQ   Вверх
BlackRu
Дата 24.9.2009, 19:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Спасибо, но я не понимаю, как мне вывести "не определенный" файл, а файл, ну хотя бы по формату .txt
То есть не конкретный, а любой существующий с таким форматом. 


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
bars80080
Дата 24.9.2009, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



Цитата(BlackRu @  24.9.2009,  18:51 Найти цитируемый пост)
Имя файла указывается в поле ввода.


Цитата(BlackRu @  24.9.2009,  19:13 Найти цитируемый пост)
как мне вывести "не определенный" файл, а файл, ну хотя бы по формату .txt

определитесь уж
PM MAIL WWW   Вверх
Strilo4ka
Дата 24.9.2009, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Код

#...
echo file _get_contents($_GET['name']);
#...

PM ICQ   Вверх
BlackRu
Дата 24.9.2009, 19:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Как всегда вопрос формирует ответ. Попробую переформулировать. Есть 10 файлов в формате .txt 
Пользователь вводит в поле имя файла.txt 
и получает вывод. Суть в том, что файлов может сколько угодно, могут меняться имена, то есть иными словами, я не хочу перечислять конкретные имена файлов скрипте.



--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
bars80080
Дата 24.9.2009, 19:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: 71
Всего: 315



и что? 
Цитата(BlackRu @  24.9.2009,  19:24 Найти цитируемый пост)
Пользователь вводит в поле имя файла.txt 

имя файла у вас уже есть. какая разница, сколько их там дальше? если есть, загружайте. причём здесь вывод имён файлов?
PM MAIL WWW   Вверх
Strilo4ka
Дата 24.9.2009, 20:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



Код

funcion showform()
{
echo
"<form action=index.php?  method=GET>
<input type=text    name=name value="$_GET['name']">
<input type=submit value='загрузить документ'>
</form>"
}

function viewfile()
{
global $f_name;
echo file _get_contents($f_name);
}

function validate_data()
{
global $errors,$f_name;
  
  if isset($_GET['name'])   $f_name="\files\{$_GET['name']}.txt"; else $errors[]="Вы не ввели имя файла!";
   
  if (!file_exists($f_name) 
  {
   $errors[]="Такого файла не существует!";
  }
  
  if (!is_readable($f_name) 
  {
   $errors[]="Файл не доступен для чтения";
  }
   
   if (preg_match('#^[.]$#',$name))
    {
     $errors[]="Запрещено вводить!";
    }
}

function show_errors()
{
global $errors;
echo "<br><b>Вы допустили ошыбки:</b><br>";
$i=0;
  foreach($errors as $err)
  {
  $i++;
  echo "<span style='color:red'><b>$i)".$err."</b></span>","<br>" ;
  }
}

if (isset($_POST['submit']))
{
  validate_data();
  if (count($errors)>0)  
   {
   show_errors();
   showform();
   }
    else
    {
    viewfile();
    }
}
 else
  {
  showform();
  }

?>




Это сообщение отредактировал(а) Strilo4ka - 24.9.2009, 20:09
PM ICQ   Вверх
BlackRu
Дата 24.9.2009, 20:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Получается, что скрипт выводит файл, который указан здесь (т.е. в самом скрипте), а я не хочу указывать имена файлов в скрипте, а лишь тип, но выводить по введенному имени из формы. Как мне сказать скрипту, что имя может быть любым? 
Код
$allow = array('1.txt');


Добавлено через 14 минут и 4 секунды
Спасибо огромное


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
Strilo4ka
Дата 24.9.2009, 20:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



извиняйте вот так работает проверил:

Код

<?
function showform()
{
echo
"<form METHOD='POST'>
<input type=text name=name value='{$_GET['name']}'>
<input type=submit value='загрузить документ' name='submit'>
</form>";
}

function viewfile()
{
$f_name="files/{$_POST['name']}.txt";

echo  file_get_contents($f_name);
}

function validate_data()
{
global $errors;

  $f_name="files/{$_POST['name']}.txt";
  if (!isset($f_name)) $errors[]="Вы не ввели имя файла!";

  if (!file_exists($f_name))
  {
   $errors[]="Такого файла не существует!";
  }

  if (!is_readable($f_name))
  {
   $errors[]="Файл не доступен для чтения";
  }

   // от листинга 
   if (preg_match ("#^[.]|(?:[.][.])$#",$_POST['name'])) $errors[]="Запрещено вводить!";
}

function show_errors()
{
global $errors;
echo "<br><b>Вы допустили ошыбки:</b><br>";
$i=0;
  foreach($errors as $err)
  {
  $i++;
  echo "<span style='color:red'><b>$i)".$err."</b></span>","<br>" ;
  }
}

if (isset($_POST['submit']))
{
  validate_data();
  if (count($errors)>0)
   {
   show_errors();
   showform();
   }
    else
    {
    viewfile();
    }
}
 else
  {
  showform();
  }

?>


Это сообщение отредактировал(а) Strilo4ka - 24.9.2009, 20:53
PM ICQ   Вверх
BlackRu
Дата 24.9.2009, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 431
Регистрация: 14.9.2009

Репутация: нет
Всего: 4



Гениально. я правда, думал это проще делается. 
Спасибо огромное. 


Это сообщение отредактировал(а) BlackRu - 24.9.2009, 21:34


--------------------
Удалена администрацией форума
PM MAIL WWW Skype   Вверх
youri
Дата 24.9.2009, 22:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



но такой код позволяет просматривать txt-файлы не только в папке files
basename ;)

Это сообщение отредактировал(а) youri - 24.9.2009, 22:22
PM   Вверх
Strilo4ka
Дата 24.9.2009, 22:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



как youri  smile 
PM ICQ   Вверх
youri
Дата 24.9.2009, 22:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 740
Регистрация: 17.4.2004

Репутация: 6
Всего: 16



человек может использовать .. в пути
а если написать $f_name="files/".basename($_POST['name']).".txt"; то не сможет
PM   Вверх
Strilo4ka
Дата 24.9.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 97
Регистрация: 27.2.2009

Репутация: нет
Всего: нет



точно круто

Добавлено через 6 минут и 23 секунды
можно было еще на кавычки запреть и другое что то... допустим только символы и числа вот так 
   
   // от листинга 
   if (preg_match ("#^[.]|(?:[.][.])|["]$#",$_POST['name'])) $errors[]="Запрещено вводить!";
   
PM ICQ   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0577 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.