PHP: function fsize($path) { $fp = fopen($path, 'r'); $inf = stream_get_meta_data($fp); fclose($fp); foreach($inf['wrapper_data'] as $v) if(stristr($v, 'content-length')) { $v = explode(':',$v); return trim($v[1]); } }
Nightmarе, можно послать HTTP-запрос с методом HEAD. Типичный пример: Code: HEAD /lol.mp3 HTTP/1.0 Connection: Close User-Agent: Mozilla/4.05 (WinNT; 1) Host: site.ru В ответе от сервера анализировать Content-Length
PHP: <?php // объявление переменных $local_file = 'local.zip'; $server_file = 'server.zip'; // установка соединения $conn_id = ftp_connect($ftp_server); // вход с именем пользователя и паролем $login_result = ftp_login($conn_id, $ftp_user_name, $ftp_user_pass); // попытка скачать $server_file и сохранить в $local_file if (ftp_get($conn_id, $local_file, $server_file, FTP_BINARY)) { echo "Произведена запись в $local_file\n"; } else { echo "Не удалось завершить операцию\n"; } // закрытие соединения ftp_close($conn_id); ?> h_ttp://www.php.su/functions/?ftp-get Или нет пароля к фтп?
залил шелл на форум,стал выдавать ошибку Code: Fatal error: Out of memory (allocated 262144) (tried to allocate 77824 bytes) inадрес шелла так понимаю не хвотает оперативы,но раньше всё было ок.Как можно исправить?
Ошибка "Fatal error: Out of memory (allocated X)" возникает, если не ошибаюсь, когда самому интерпретатору php не хватает места в оперативке, а не твоему скрипту, и memory_limit к этому отношения не имеет. (При превышении memory_limit возникает ошибка вида "Fatal error: Allowed memory size of X bytes exhausted (tried to allocate Y bytes)") Но можно, все же попробывать, добавить в начало проблемного скрипта(шелла) - Code: ini_set('memory_limit', '128M');
Есть ли у кого-нибудь примеры скрипта, по загрузки файла с компа в нет. Ну к примеру как на форуме загрузка аватара в профиль. Даже не знаю как это можно осуществить.C помощью curl? Любая информация будет полезна.
h_ttp://www.php.su/phphttp/?uploads Да уже 100 раз обсуждалось на ачате h_ttp://forum.antichat.ru/thread77906-%F1%EA%F0%E8%EF%F2+%E7%E0%E3%F0%F3%E7%EA%E8.html
Вот функция, которая ещё и докачку поддерживает. Была выложена на ачате PHP: function downloadFile($filename, $mimetype='application/octet-stream') { $from=$to=0; $cr=NULL; if(isset($_SERVER['HTTP_RANGE'])) { $range=substr($_SERVER['HTTP_RANGE'],strpos($_SERVER['HTTP_RANGE'],'=')+1); $from=strtok($range,'-'); $to=strtok('/'); if($to>0) $to++; if($to) $to-=$from; header('HTTP/1.1 206 Partial Content'); $cr='Content-Range: bytes'.$from.'-'.(($to)?($to.'/'.$to+1):filesize($filename)); } else header('HTTP/1.1 200 Ok'); $etag=md5($filename); $etag=substr($etag, 0, 8).'-'.substr($etag, 8, 7).'-'.substr($etag, 15, 8); header('ETag: "'.$etag.'"'); header('Accept-Ranges: bytes'); header('Content-Length: '.(filesize($filename)-$to+$from)); if($cr) header($cr); header('Connection: close'); header('Content-Type: '.$mimetype); header('Last-Modified: '.gmdate('r',filemtime($filename))); $f=fopen($filename, 'r'); header('Content-Disposition: attachment; filename="' . basename($filename) . '";'); if($from)fseek($f,$from,SEEK_SET); if(!isset($to) or empty($to)) { $size=filesize($filename)-$from; } else { $size=$to; } $downloaded=0; while(!feof($f) and !connection_status() and ($downloaded<$size)) { echo fread($f,512000); $downloaded+=512000; flush(); } fclose($f); }
PHP: <?php $download = 'http://google.com/1.rar'; $save = '1.rar'; $str= ''; $d = fopen($download,'r'); $s = fopen($save,'w+'); while(!feof($d)) { $str = fread($d,512); fputs($s,$str); } fclose($d); fclose($s); ?> ----------------------------------------------------------------- Это на свой: PHP: <form action='' method='post' enctype='multipart/form-data'> <input type='file' name='uploadfile'> <input type='submit' value='Загрузить'></form> <?php // Каталог, в который мы будем принимать файл: $uploaddir = './files/'; $uploadfile = $uploaddir.basename($_FILES['uploadfile']['name']); // Копируем файл из каталога для временного хранения файлов: if (copy($_FILES['uploadfile']['tmp_name'], $uploadfile)) { echo "<h3>Файл успешно загружен на сервер</h3>"; } else { echo "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; } // Выводим информацию о загруженном файле: echo "<h3>Информация о загруженном на сервер файле: </h3>"; echo "<p><b>Оригинальное имя загруженного файла: ".$_FILES['uploadfile']['name']."</b></p>"; echo "<p><b>Mime-тип загруженного файла: ".$_FILES['uploadfile']['type']."</b></p>"; echo "<p><b>Размер загруженного файла в байтах: ".$_FILES['uploadfile']['size']."</b></p>"; echo "<p><b>Временное имя файла: ".$_FILES['uploadfile']['tmp_name']."</b></p>"; ?> А если на чужой PHP: <?php $upload = 'полный путь до файла на компе'; $postdata = array('имя поля на сайте для сохр. файла' => "@".$upload ); //в массиве передашь нужные поля 'имя'=>значение $ch = curl_init(); curl_setopt($ch, CURLOPT_URL, 'скрипт загрузки'); curl_setopt($ch, CURLOPT_RETURNTRANSFER, 0); curl_setopt($ch, CURLOPT_POST, 1); curl_setopt($ch, CURLOPT_POSTFIELDS, $postdata); curl_setopt($ch, CURLOPT_CONNECTTIMEOUT, 30); curl_exec($ch); curl_close($ch); ?>