Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > JavaScript: Общие вопросы > Удалить файл...


Автор: Veche 25.5.2007, 15:00
Всем доброго времени суток. 

Прежде чем задать вопрос, хотел бы отметить, что я вижу в глаза исходники на java первый раз в жизни, поэтому не судите строго)

Разместил я тут на сайт чат Blab! Lite.  Т.к. это лайт версия в нем нет регистрации пользователей, поэтому я решил её дописать собственноручно. Все, конечно, хорошо, то среди множества php файлов попался один js файл, в котором находится функция, которую надо изменить. Собственно говоря вот она:

/* logout */
function log_out(){
n=parent.c.document.fms.name.value
parent.location='index.php?name='+n
return false}


Мне нужно изменить её так, чтобы в виде строки ей можно было передать имя файла и эта функция бы этот файл удаляла (или покрайней мере дописывала один символ в начало файла). Повозился на форуме, нашел код, где реализуется обращение к файлу, но ничего не понял). Помогите...)

Автор: batigoal 25.5.2007, 15:14
Veche, это JavaScript.

Автор: Veche 25.5.2007, 15:18
Цитата(batigoal @ 25.5.2007,  15:14)
Veche, это JavaScript.

Извиняюсь...) По неопытности перепутал раздел)

Автор: Mymik 25.5.2007, 17:18
Veche, а где тебе файл то нужно удалять ??? JS на клиенте ничего не может удалить, собственно как и на сервере...
А что за файл ??? как генерировать его имя ??? где оно храниться... а то мы как-то тоже не яснослышащие не знаем откуда брать имя файла...

Автор: Veche 26.5.2007, 06:32
Цитата(Mymik @ 25.5.2007,  17:18)
Veche, а где тебе файл то нужно удалять ??? JS на клиенте ничего не может удалить, собственно как и на сервере...
А что за файл ??? как генерировать его имя ??? где оно храниться... а то мы как-то тоже не яснослышащие не знаем откуда брать имя файла...

JS вызывается из файла php, в котором и расположена переменная с именем, а сам этот файл php расположен в папке с файлом, который нужно удалить. Всё это находится на серваке. Часть кода php:

</td><td align="right" width="70%"><a href="info.php?why=link" onclick="return log_out()" title="<?php print $lang[18];?>"><?php show_pic($pics[6],0); ?></a></td>
</tr></table></form><script type="text/javascript">ldd=1;</script></body></html>

Имя файла можно передать в качестве параметра... От сюда вопрос по синтаксису - как правильно объявить в заголовке, что передаётся строка?

Насколько я понимаю, если возможно через JS удалить файл, то программа будет выглядеть как-то так:

obj = WScript.CreateObject("Scripting.FileSystemObject");
obj.DeleteFile(str);

где str это и есть строка, которая содержит имя файла. Скажите, это правильно?

З.Ы.: буду очень благодарен, если кто-нибудь даст ссылку на ХОРОШИЙ и понятный учебник по JS.

Автор: Veche 26.5.2007, 06:48
Виноват - плохо юзал поиск. Нашел ссылку на майрософт:

Код

function ManipFiles()

{

   var fso, f1, f2, s;

   fso = new ActiveXObject("Scripting.FileSystemObject");

   f1 = fso.CreateTextFile("c:\\testfile.txt", true);

   Response.Write("Writing file <br>");

   // Write a line.

   f1.Write("This is a test.");

   // Close the file to writing.

   f1.Close();

   Response.Write("Moving file to c:\\tmp <br>");

   // Get a handle to the file in root of C:\.

   f2 = fso.GetFile("c:\\testfile.txt");

   // Move the file to \tmp directory.

   f2.Move ("c:\\tmp\\testfile.txt");

   Response.Write("Copying file to c:\\temp <br>");

   // Copy the file to \temp.

   f2.Copy ("c:\\temp\\testfile.txt");

   Response.Write("Deleting files <br>");

   // Get handles to files' current location.

   f2 = fso.GetFile("c:\\tmp\\testfile.txt");

   f3 = fso.GetFile("c:\\temp\\testfile.txt");

   // Delete the files.

   f2.Delete();

   f3.Delete();

   Response.Write("All done!");

}


Будет ли он пахать на сервере и на браузерах Opera и FireFox? Первый вопрос (как объявить что функции передаётся строка) пока открыт...

Автор: Mymik 26.5.2007, 08:19
Veche, $_REQUEST это глобальный хеш массив (или как он у PHP'истов называется, кажись переменная окружения) который хранит ключ -> значение. Все значения что приходят из $_REQUEST являются строками...
Просто обратись к параметру и забери его значение. И все.
Я вот только так и не понял -- тебе нужно узнать как вытащить из REQUEST значение или тебе нужно что-то по JS ???

Тот код что ты привел, это WHS код, он будет пытаться удалить файл на стороне клиента, но на 99% я уверен, что пользователи запретят исполнять такой скрипт у себя на компьютере. Тем более по умолчанию там работает VB скрипт... а вот JS у меня не получилось туда всунуть... что-то матюкался на код...

Автор: Veche 26.5.2007, 12:02
Я думал, что если вызвать JS (который находится на сервере)

f2 = fso.GetFile("testfile.txt");
f2.Delete();

то он будет пытаться удалить файл на сервере. Это не так?

Автор: batigoal 26.5.2007, 12:50
Veche, JavaScript исполняется на клиенте. Хочешь удалять на сервере - делай это из PHP.

Автор: Veche 26.5.2007, 14:15
Цитата(batigoal @ 26.5.2007,  12:50)
Veche, JavaScript исполняется на клиенте. Хочешь удалять на сервере - делай это из PHP.

Хм... не знал. Спасибо!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)