Студопедия

Главная страница Случайная страница

КАТЕГОРИИ:

АвтомобилиАстрономияБиологияГеографияДом и садДругие языкиДругоеИнформатикаИсторияКультураЛитератураЛогикаМатематикаМедицинаМеталлургияМеханикаОбразованиеОхрана трудаПедагогикаПолитикаПравоПсихологияРелигияРиторикаСоциологияСпортСтроительствоТехнологияТуризмФизикаФилософияФинансыХимияЧерчениеЭкологияЭкономикаЭлектроника






Доступ к локальному диску




Будем называть локальным дискомжесткий диск чужого компьютера, на котором читается ваша Web-страница (если она читается на вашем же компьютере, то тогда локальный диск - это жесткий диск вашего компьютера). Доступом к локальному диску будем называть возможность при помощи сценария вашей Web-страницы читать, стирать или записывать информацию в файлы локального диска (примерно так, как мы это делали в 16.2 с файлами на диске нашего компьютера), а также осуществлять все другие операции с файлами и папками.

Спрашивается, хорошо это или плохо - при помощи вашей Web-страницы иметь доступ к диску чужого компьютера? Это примерно то же самое, что спросить, хорошо это или плохо - прийти к незнакомому человеку в гости и пользуясь его доверчивостью иметь доступ ко всем вещам и секретным документам в его квартире. Если вы честный человек, то ничего не украдете и подглядывать не будете. Зачем вам тогда доступ? Получается, что доступ - это плохо? Не всегда. Он часто бывает нужен в общении между знакомыми людьми, которые доверяют друг другу и которым было бы удобно считывать информацию с локальных дисков друг друга.. Или возьмите ситуацию сохранения в играх. Пользователь, играющий на вашей страничке в "Угадай число" и желающий после 20-й попытки сохраниться, должен иметь возможность это сделать. Сделать же это проще всего на локальном диске. Но для этого нужен доступ к нему со стороны сценария игры. Выходит, что без доступа все-таки не обойтись.

Создатели VBScript предоставили программистам доступ к локальным дискам, но они прекрасно понимали опасность такого доступа, поэтому вся работа с файловой системой в VBScript организована совсем по-другому, чем в Visual Basic. Вместо непосредственной работы с файлами, как мы это делали с файлами на диске нашего компьютера, организованы специальные объекты, представляющие файловую систему и обеспечивающие более безопасную работу.

Проиллюстрирую работу VBScript с локальным диском на одном-единственном примере. Пусть ваша страничка посвящена разведению слонов в Антарктиде и она настолько интересна, что побывавший на ней снова и снова туда возвращается. Вставим на страничку сценарий, единственная цель которого - напомнить пользователю, сколько раз он был на этой странице. Вот внешний вид странички после открытия (сведения об успехах разведения слонов будут приведены в следующем издании книги):

 

 

Идея сценария такова. При первом открытии страницы на данном компьютере сценарий выдает на страницу сообщение "Вы на этой страничке ни разу не были", создает на локальном диске в корне диска С: файл INFORMAT.TXT и записывает в него значение счетчика посещений - число 0.



При каждом открытии страницы сценарий ищет в корне диска С: файл INFORMAT.TXT и если находит, то считывает с него значение счетчика, увеличивает его на 1 и отображает на странице в виде "Вы здесь были 5 раз". Если же файл не найден, сценарий делает вывод, что на этом компьютере страница еще не открывалась, и делает то, что я описал в предыдущем абзаце.

Вот HTML-документ нашей страницы со включенным в него сценарием:

<html>

<h2>Кое-что о разведении слонов в Антарктиде</h2>

<script language="VBScript"><!--

 

Dim objFs 'Объект - Файловая система локального диска

Dim objFile 'Объект - Файл

Dim sAdres 'Переменная - Адрес файла на диске

Dim intSchetchik 'Переменная - счетчик посещений страницы

 

sAdres="c:\INFORMAT.TXT"

Set objFs = CreateObject ("Scripting.FileSystemObject")

If objFs.FileExists (sAdres) Then

Set objFile = objFs.OpenTextFile(sAdres, 1)

intSchetchik = objFile.ReadLine

intSchetchik = intSchetchik + 1

Document.Write "Вы здесь были " & intSchetchik & " раз"

Else

Document.Write "Вы на этой страничке ни разу не были"

intSchetchik = 0

Set objFile = objFs.CreateTextFile (sAdres)

End If

objFile.Close

Set objFile = objFs.OpenTextFile(sAdres, 2)

objFile.WriteLine (intSchetchik)

objFile.Close

Set ObjFs = Nothing

--></script>

</html>

Пояснения: Прочтите строки объявлений. Далее рассмотрим строку

sAdres = "c:\INFORMAT.TXT"



Она задает адрес и имя текстового файла на локальном диске, в котором сценарий будет хранить счетчик посещений. Строка

Set objFs = CreateObject ("Scripting.FileSystemObject")

создает экземпляр объекта Файловая система. С этого мгновения вступают в действие меры безопасности. На экране компьютера, читающего вашу Web-страницу, возникает сообщение:

 

 

которое предупреждает пользователя, что программы на этой страничке могут быть опасными и не рекомендует разрешать их выполнение. У пользователя еще есть возможность нажать на No. Мой совет прост: Если эта страничка не принадлежит вашему лучшему другу - жмите No. Теперь рассмотрим строку

If objFs.FileExists (sAdres) Then

Здесь используется метод FileExists объекта objFs, который определяет, существует ли файл по указанному адресу sAdres. Смысл строки такой: Если файл c:\INFORMAT.TXT существует, то …

 

Строка

Set objFile = objFs.OpenTextFile(sAdres, 1)

открывает объект - текстовый файл для чтения (потому что 1). Строка

intSchetchik = objFile.ReadLine

считывает из него строку и присваивает счетчику. Следующая строка увеличивает счетчик на 1, а строка

Document.Write "Вы здесь были " & intSchetchik & " раз"

записывает на страничку указанный текст.

Из дальнейших строк поясню следующие:

Set objFile = objFs.CreateTextFile (sAdres)

создает на диске файл по указанному адресу.

objFile.Close

закрывает файл, независимо от того, какая ветвь оператора If выполнялась - Then или Else.

Set objFile = objFs.OpenTextFile(sAdres, 2)

открывает файл для записи (потому что 2).

objFile.WriteLine (intSchetchik)

записывает в файл значение счетчика.

Set ObjFs = Nothing

освобождает память компьютера от объекта Файловая система.


mylektsii.ru - Мои Лекции - 2015-2018 год. (0.01 сек.)Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав Пожаловаться на материал