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

Форум PHP

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

 

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

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

тема: FTP
 
 автор: mistersmak   (14.10.2005 в 21:05)   письмо автору
 
 

Что значит: Warning: Supplied argument is not a valid File-Handle resource in ...addfile.php on line 13

   
 
 автор: Евгений Петров   (14.10.2005 в 21:32)   письмо автору
 
   для: mistersmak   (14.10.2005 в 21:05)
 

Файл-заголовок не валидный. Приведите строку 13 файла addfile.php

   
 
 автор: mistersmak   (15.10.2005 в 01:42)   письмо автору
 
   для: Евгений Петров   (14.10.2005 в 21:32)
 

Лучше весь файл:

<?
   $host 
"*";
   
$user "****";
   
$pass "********";
   
$conn_time set_time_limit(180);
   
$connect ftp_connect($host);
   if(!
$connect) { echo "Ламерские происки! Нет соединения!<br>"; }
   
$regi ftp_login($connect$user$pass);
   if(!
$regi) { echo "Ламерские происки! Пароль/логин неверен!<br>"; }
   
$urlfile="qwert.txt";
   
$download ftp_fput($connect$urlfile$localfile$type);
   if(!
$download)
    {
     echo 
"Ламерские происки! Не грузит!<br>";
    }
?>

Он немного изменен, но ошибка осталась. :(
$localfile и $type приходит из прошлой формы (input type=file name=localfile и $type- тип FTP_ASCII или FTP_BINARY)

   
 
 автор: cheops   (15.10.2005 в 03:34)   письмо автору
 
   для: mistersmak   (15.10.2005 в 01:42)
 

ftp_fput() хочет не имя файла "qwert.txt", а дескриптор открытого при помощи fopen() файла, т.е. пример можно переписать примерно следующим образом
<? 
   $host 
"*"
   
$user "****"
   
$pass "********"
   
$conn_time set_time_limit(180); 
   
$connect ftp_connect($host); 
   if(!
$connect) { echo "Ламерские происки! Нет соединения!<br>"; } 
   
$regi ftp_login($connect$user$pass); 
   if(!
$regi) { echo "Ламерские происки! Пароль/логин неверен!<br>"; } 
   
$urlfile=fopen("qwert.txt"'r'); 
   
$download ftp_fput($connect$urlfile$localfile$type); 
   if(!
$download
    { 
     echo 
"Ламерские происки! Не грузит!<br>"
    } 
  
fclose($urlfile);
?>

Или вместо ftp_fput() испльзуйте ftp_put() - она как раз имя файла принимает.

   
 
 автор: mistersmak   (15.10.2005 в 21:18)   письмо автору
 
   для: cheops   (15.10.2005 в 03:34)
 

Все равно, пишет тоже самое. :(
Ошибка в строке

$download = ftp_fput($connect, $urlfile, $localfile, $type); 

   
 
 автор: mistersmak   (15.10.2005 в 21:42)   письмо автору
 
   для: cheops   (15.10.2005 в 03:34)
 

Вот так загружает файл, правда ошибка все равно осталась (?)

<? 
   $host 
"*"
   
$user "****"
   
$pass "********"
   
$conn_time set_time_limit(180); 
   
$connect ftp_connect($host); 
   if(!
$connect) { echo "Ламерские происки! Нет соединения!<br>"; } 
   
$regi ftp_login($connect$user$pass); 
   if(!
$regi) { echo "Ламерские происки! Пароль/логин неверен!<br>"; } 
   
//$urlfile=fopen("qwert.txt", 'r');
   
$urlfile="qwert.txt";
   
$download ftp_put($connect$urlfile$localfile$type); 
   if(!
$download
    { 
     echo 
"Ламерские происки! Не грузит!<br>"
    } 
  
fclose($urlfile); 
?> 

Теперь осталось научить скрипт определять где тут имя файла.
(что если файл называется "1.rar.arhiv" или лежит в папке "site.files"(1 вариант просто ноебходим))

   
 
 автор: mistersmak   (15.10.2005 в 22:02)   письмо автору
 
   для: cheops   (15.10.2005 в 03:34)
 

И новый вопрос:
Меня один такой же ламер как я, запугал, мол если злобный зверек хакер чего-то там ломать, он могут тыбрить логин\пароль от сайт. Моя бояться! предложил мне вот ЭТО:

<?
if (isset($action))
{
  if (
$action == "upload")
  {
    if (
$error == "yes")
    {
echo 
"Проблема при посылке заявки:";

      switch(
$reason)
      {
        case 
'size' : echo "Размер файла больше 300 Кб или равен нулю."; break;
        case 
'null' : echo "Вы не ввели название файла."; break;
        case 
'copy' : echo "Не удалось послать заявку (проблемы на сервере)."; break;
        default : echo 
"Не надо умничать"; break; 
      }

    }

    echo 
"<form method=POST action=\"form.php\" enctype=\"multipart/form-data\">";
    echo 
"Список:";
    echo 
"<td width=230><input type=file name=file></td>";
    echo 
"<td><input type=submit name=upload value=\"Послать\"></td></tr></tbody></table></form>";
  }
}

elseif (
$upload == "Послать")
{
  if (
strlen($_FILES['file']['name']) == "0")
  {
    echo 
"<meta http-equiv=\"refresh\" content=\"0;url=form.php?action=upload&error=yes&reason=null\">";
    exit;
  }
  elseif ((
$_FILES['file']['size']>307200) || ($_FILES['file']['size'] == "0"))
  {
    echo 
"<meta http-equiv=\"refresh\" content=\"0;url=form.php?action=upload&error=yes&reason=size\">";
    exit;
  }

  
$copy = @copy($_FILES['file']['tmp_name'],"/www/wl/htdocs/files/form/".$_FILES['file']['name']);
  if (!@
$copy)
  {
    echo 
"<meta http-equiv=\"refresh\" content=\"0;url=form.php?action=upload&error=yes&reason=copy\">";
    exit;
  }

  echo 
"<table bgcolor=\"#EAEAEA\" cellspacing=1 cellpadding=4 width=\"90%\" align=center style=\"border:1px solid #6C93EC\"><tbody>";
  echo 
"<tr><td><u>Список успешно послан</u>";
  echo 
"</td></tr></tbody></table><br>";
  echo 
"<meta http-equiv=\"refresh\" content=\"3;url=form.php\">";
}
else
{}
?>

Конечно ограничение в 300Кб не тру, но вот злобный хакер совсем не тру!
Говорит, спрашивал на Софттайме. Врет, паскуда?

   
 
 автор: cheops   (16.10.2005 в 14:10)   письмо автору
 
   для: mistersmak   (15.10.2005 в 22:02)
 

Проверка $_FILES['file']['size']>307200 вас вряд ли спасёт - лучше проверьте нельзя ли при помощи этого скрипта загрузить на сервер PHP-скрипт, если можно (а судя по всему так и есть), злоумышленику даже не понадобится ваш пароль, он и так всё через эту дыру сломает и утащит.

   
 
 автор: mistersmak   (16.10.2005 в 02:47)   письмо автору
 
   для: cheops   (15.10.2005 в 03:34)
 

Чего, Хакеры своих секретов не раскрывают?

   
Rambler's Top100
вверх

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