WWW.DISSERS.RU

БЕСПЛАТНАЯ ЭЛЕКТРОННАЯ БИБЛИОТЕКА

   Добро пожаловать!


Pages:     | 1 | 2 ||

$fruits2[1] = "mango";

// выводим значения ячеек массива echo $fruits2[0]."
"; // выведет "apple" echo $fruits2[1]; // выведет "mango" > В PHP входит множество стандартных функций. В частности, для написания сценария голосования нам понадобятся функции работы с файлами, а именно:

fopen, flock, fread, fwrite, fclose. Рассмотрим пример их использования:

// блокируем доступ к файлу на чтение // (об этом "говорит" параметр LOCK_SH;

// если надо заблокировать файл на запись, // то надо указать LOCK_EX) всем, кроме // нашего сценария flock($fp,LOCK_SH);

// считываем данные из файла в переменную $contents $contents=fread($fp, filesize("filename"));

// как видим, функции fread // нужно передавать указатель на открытый файл // и размер считываемых данных // для определения размера файла можно воспользоваться // функцией filesize, // которой в качестве параметра передается имя файла, // размер которого нужно узнать // для того чтобы получить доступ к прочитанным данным // в виде строк, нужно // разбить содержимое переменной $contents на строки // это можно сделать с помощью функции explode, // которая разбивает строку // на массив строк. Ей необходимо передать строку // и символ или символы, // которые служат признаком начала новой строки, // в нашем случае этим символом // будет символ перевода строки ("\n") $data=explode("\n",$contents); // разбиваем $contents // на строки массива $data fclose($fp); // закрываем файл (и соответственно // снимаем блокировку) // а вот как писать в файл:

$fp=fopen("filename","w");

// блокируем доступ к файлу на запись всем, // кроме нашего сценария flock($fp,LOCK_EX);

$data="Пример записи в файл"; // формируем строку данных fwrite($fp,$data); // записываем данные в файл fclose($fp); > В качестве параметров открытия файла функции fopen можно указать также:

- открыть на чтение и запись; - открыть на запись и чтение (если файл не существует, то он будет создан); - открыть на запись в конец файла; - то же, что и , но с принудительным созданием нового файла в случае, если его не существует.

4.8. Пример реализации простейшего счетчика посещений В следующем примере приведена реализация простейшего текстового счетчика посещений.

flock($fp,LOCK_SH);

$count=fread($fp, filesize("count.txt"));

fclose($fp);

$count=$count+1;

$fp=fopen("count.txt","w");

flock($fp,LOCK_EX);

fwrite($fp,$count);

fclose($fp);

echo "Количество посещений = ", $count;

> 4.9. Пример реализации гостевой книги В данной гостевой книге есть всего два файла - это сам сценарий и место, куда будут помещаться сообщения.

3 Санкт-Петербургский государственный институт точной механики и оптики (технический университет) Кафедра компьютерных образовательных технологий С.В. Ковальчук, А.В. Лямин

Имя:
E-Mail:
ICQ:
Текст сообщения:




// выставляем дату ($date) и время ($time) $date=date("d, M y");

$time=date("h:i:s");

// записываем введенные в форму данные в файл $fp = fopen("$archive","a+");

fputs($fp, "$name
$message
$icq | $email \\ $date, $time


\n");

fclose($fp);

// выводим из файла записи, чтобы вставить их в страницу $filename = "$archive";

$fd = fopen( $filename, "r" );

$current = fread( $fd, filesize( $filename ) );

fclose( $fd );

// вставляем записи из файла в страницу print("$current");

// закрываем скрипт > Осталось только создать файл guestbook.txt и поместить его в ту же директорию, что и сам сценарий. Непосредственно сценарий надо сохранить с именем guestbook.php.

4.10. Пример авторизации пользователей Пример будет состоять из трёх файлов: index.php, authorize.php и secretplace.php. Файл index.php содержит форму, где пользователь вводит свое имя и пароль.

3 Санкт-Петербургский государственный институт точной механики и оптики (технический университет) Кафедра компьютерных образовательных технологий С.В. Ковальчук, А.В. Лямин

Имя:
Пароль:
Эта форма передаст данные файлу authorize.php, который в случае успешной авторизации допустит пользователя к файлу secretplace.php, а в противном случае выдаст сообщение об ошибке.

// данные были отправлены формой if($Submit){ // проверяем данные на правильность...

// и при совпадении дать доступ пользователю...

if(($user_name=="admin")&&($user_pass=="kpss")){ $logged_user = $user_name;

// запоминаем имя пользователя session_register("logged_user");

// и переправляем его на <секретную> страницу...

header("Location: secretplace.php");

exit;

} } // если что-то было не так, то пользователь // получит сообщение об ошибке.

> Вы ввели неверный пароль! Файл secretplace.php содержит сценарий, который предоставляет секретную информацию только зарегистрированным пользователям, а всех остальных пользователей перенаправляет на страницу для ввода имени и пароля.

/* если пользователь не зарегистрирован, то ему будет дана возможность повторить ввод имени и пароля...

*/ if(!isset($logged_user)){ header("Location: index.php");

exit;

} > Приветствуем Вас , вы на секретной странице !!! 4.11. Пример использования сценариев для построения шаблонов HTMLстраниц Рассмотрим такую ситуацию, при которой требуется создать несколько похожих друг на друга HTML-страниц, которые содержат разные заголовки и изображения.

Без использования PHP потребовалось бы создавать все эти страницы с нуля, каждый раз используя практически одинаковые фрагменты HTML-кода. А вот как можно решить эту задачу с использованием PHP: создать файлы-шаблоны повторяющихся частей страниц, а затем - несколько сценариев, содержащих несколько строк кода. Рассмотрим пример. Создадим файл-шаблон «верхний колонтитул» страницы header.tpl следующего содержания:

3 Санкт-Петербургский государственный институт точной механики и оптики (технический университет) Кафедра компьютерных образовательных технологий С.В. Ковальчук, А.В. Лямин А вот содержимое файла-шаблона «нижний колонтитул» страницы footer.tpl:

Теперь напишем сценарии, использующие шаблоны. Создадим файл page1.php:

include("header.tpl");

$image = "img/1.gif";

echo "Заголовок 1";

include("footer.tpl");

> и файл page2.php:

include("header.tpl");

$image = "img/2.gif";

echo "Заголовок 2";

include("footer.tpl");

> В этих сценариях полезной функцией является include(). Эта функция подставляет в тело сценария (в той позиции, где она вызывается) содержимое файла, который передается ей в качестве параметра, то есть в нашем случае header.tpl и footer.tpl. Она же может оказаться полезной для включения в текст сценария других фрагментов программного кода. Следует также отметить, что если файл, который нужно включить в сценарий, находится в директории, отличной от той, где находится сценарий, то нужно также указать полный путь к файлу, например include("dir1/dir2/somefile.ext");.

4.12. Создание сценария для голосования Создадим сценарий подсчета голосов на основе HTML-формы. Попробуем собрать статистику того, сколько людей предпочитает определенный вид сока.

Вначале создадим форму для получения голосов:

3 Санкт-Петербургский государственный институт точной механики и оптики (технический университет) Кафедра компьютерных образовательных технологий С.В. Ковальчук, А.В. Лямин

Какой сок Вы предпочитаете
апельсиновый
сок манго
яблочный


// определяем остальные константы define("ORANGE","1");

define("MANGO","2");

define("APPLE","3");

/* Следует отметить, что перед первым запуском сценария, который мы создаем, необходимо будет создать в той же директории, что и сценарий, файл data.txt, содержащий три строки: 0,0,0. Таким образом мы "обнуляем" счетчик голосов. Далее в ходе выполнения сценария нам нужно: считать данные из нашего файла данных, определить, вызван ли сценарий непосредственно или с помощью формы, и в зависимости от этого либо вывести статистику голосования, либо сначала обновить файл данных, а потом вывести статистику. Приведем вариант решения данной задачи:

*/ // открываем файл на чтение $fp=fopen(DATA_FILE,"r");

// блокируем доступ к файлу на чтение всем, // кроме нашего сценария flock($fp,LOCK_SH);

// считываем данные из файла $contents=fread($fp, filesize(DATA_FILE));

// закрываем файл (и соответственно, снимаем блокировку) fclose($fp);

$data=explode("\n",$contents); // преобразуем прочитанные // данные в массив строк // в качестве разделителя // служит символ перевода // строки // сюда попадаем, если была нажата кнопка "Проголосовать" if($polling=="Проголосовать") { // определяем, за "кого" был отдан голос, // и увеличиваем на единицу соответствующую // переменную switch($poll) { case ORANGE:

$data[0]=$data[0]+1;

break;

case MANGO:

$data[1]=$data[1]+1;

break;

case APPLE:

$data[2]=$data[2]+1;

break;

default:

break;

} // записываем обновленные данные в файл $fp=fopen(DATA_FILE,"w");

// блокируем доступ к файлу на запись всем, // кроме нашего скрипта flock($fp,LOCK_EX);

// формируем три строки данных $newdata=$data[0]."\n".$data[1]."\n".$data[2];

fwrite($fp,$newdata);

fclose($fp);

} // выводим статистику голосования echo "за апельсиновый сок проголосовало ".

$data[0]." человек";

echo "за сок манго проголосовало ".

$data[1]." человек";

echo "за яблочный сок проголосовало ".

$data[2]." человек";

> В качестве action данной формы указано . Этот код сценария возвратит ту строку, которую вы набираете в Web-обозревателе, чтобы запустить данный сценарий. Это значение хранится в стандартной (встроенной в PHP) переменной $PHP_SELF. То есть алгоритм работы сценария будет такой: при запуске сценария набором в Web-обозревателе пути к нему (например, http://127.0.0.1/poll.php) он считает данные из файла и выведет статистику, разместив ее под формой голосования. Если же мы нажмем в форме кнопку «Проголосовать», то тем самым заново запустим сценарий (теперь ему будут переданы значения всех полей ввода формы), и отображение статистики произойдет после обработки полученных сведений из формы и сохранения изменений в файле данных.

4.13. Пример обращения к базе данных из PHP

'; 

// Создаем соединение с БД $conn = OCILogon('scott', 'tiger','dbname');

// Создаем таблицу $stmt = OCIParse($conn,"create table t(id number(30), a varchar2(10))");

$mess = @OCIExecute($stmt);

// Обрабатываем исключительные ситуации if(!$mess) { $error = OCIError($stmt);

print 'Произошла ошибка при создании таблицы ('.$error['message'].')';

} // Заносим в таблицу данные for($i=0; $i<10; $i++) { $id = time();

$stmt = OCIParse($conn,"insert into t(id,a) values($id,'Стр.

$i!')");

@OCIExecute($stmt);

} $mess = @OCICommit($conn);

// Обрабатываем исключительные ситуации if(!$mess) { $error = OCIError($conn);

print 'Произошла ошибка при занесении данных ('.$error['message'].')';

} // Выбираем из таблицы данные $stmt = OCIParse($conn, "select * from t");

$mess = @OCIExecute($stmt);

// Обрабатываем исключительные ситуации if(!$mess) { $error = OCIError($stmt);

print 'Произошла ошибка при выборке данных ('.$error['message'].')';

} // Выводим данные на экран while (OCIFetch($stmt)){ $id = OCIResult($stmt,'ID');

$a = OCIResult($stmt,'A');

print "$id -> $a \n";

} // Удаляем таблицу $stmt = OCIParse($conn,"drop table t");

$mess = @OCIExecute($stmt);

// Обрабатываем исключительные ситуации if(!$mess) { $error = OCIError($stmt);

print 'Произошла ошибка при удалении таблицы ('.$error['message'].')';

} // Разрываем соединение с БД OCILogoff($conn);

print '

';

>

Pages:     | 1 | 2 ||










© 2011 www.dissers.ru - «Бесплатная электронная библиотека»

Материалы этого сайта размещены для ознакомления, все права принадлежат их авторам.
Если Вы не согласны с тем, что Ваш материал размещён на этом сайте, пожалуйста, напишите нам, мы в течении 1-2 рабочих дней удалим его.