Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

Помогите пожалуйста с PHP.

coder Мыслитель (5331), закрыт 5 лет назад
Короче скрипт простецкий, я неделю php изучаю, так что не бум бум...
Цель: скачать все логи из конкретной папки.

Я решил таким путём идти: отправлю строку запроса, скрипт составляет filelist папки, которой я его попросил, сохраняет его в .txt на сервере, потом сразу я его скачиваю, у меня на компе уже vbs-скрипт его читает, и скачивает попорядку все логи (у логов будут непредсказуемые названия (рандомные)). Вот...

Мучил, мучил я свой хост, вобщем получился вот такой набор строк:

<?php
$dir = $_GET['dir'];
$entries = scandir($dir);
foreach($entries as $entry) {
$filelist = $filelist . $entry
}
$fp = fopen("info.txt", "w");
fwrite($fp, $filelist);
fclose($fp);
?>

Запрашиваемая строка :
http://mysait.ru/Resource/scan.php?dir=/logs
Лучший ответ
Андрей Высший разум (427541) 5 лет назад
Зачем цикл? Запись содержимого указанной директории в указанный файл делается в одну строчку:

file_put_contents('info.txt', implode("\n", scandir($_GET['dir'])));

А implode здесь нужно для того, чтобы каждое имя файла было но отдельной строке. Фактически, ты своим циклом имитировал строчку кода:
$filelist = implode('', $entries);

Но зачем вообще файл, если ты можешь сделать запрос и сразу получить список в ответе сервера?

<?php
echo implode("\n", scandir($_GET['dir']));

А если твой VBS умеет работать с JSON (что сомнительно), то:

<?php
echo json_encode(scandir($_GET['dir']));
coderМыслитель (5331) 5 лет назад
Ха!
Спасиба...)
только ты скобочку ] забыл поставить, я сначала думал не пашет скрипт...
coderМыслитель (5331) 5 лет назад
а чё за точка, две точки первые две строки?
coder Мыслитель (5331) в смысле у меня в info.txt записались помимо файлов.
coderМыслитель (5331) 5 лет назад
"А если твой VBS умеет работать с JSON" - хз, боюсь для меня это пока слишком круто.

Вот мой vbs:

Sub Download(InetFile, LocalFile)
Dim oXMLHTTP, oADOStream
Set oXMLHTTP = CreateObject("MSXML2.XMLHTTP")
Set oADOStream = CreateObject("ADODB.Stream")
oXMLHTTP.Open "GET", InetFile, 0
oXMLHTTP.Send
oADOStream.Mode = 3
oADOStream.Type = 1
oADOStream.Open
oADOStream.Write oXMLHTTP.responseBody
oADOStream.SaveToFile LocalFile, 2
Set oADOStream = Nothing
Set oXMLHTTP = Nothing
End Sub
Остальные ответы
Άηϑρέΰ ҂ Искусственный Интеллект (179807) 5 лет назад
а почему не хочешь сразу получать данные с хоста через VBS, что бы не городить этот огород?
coderМыслитель (5331) 5 лет назад
я хотел бы, но не знаю как
coderМыслитель (5331) 5 лет назад
Ну так ты не знаешь как слить всё vbs'ом? Я бы тебе спасибо большое сказал бы)).
Похожие вопросы