Php начинающим



Php-web-дизайн > Php начинающим

Php - это язык сценариев. Зачем он нужен? Для того, чтобы Ваш сайт был более интересен. Используя Php, который работает на стороне сервера, мы добиваемся того, что текст html-странички меняется "на лету". Далее мы приведем несколько примеров для начинающих.

1. Надо разбить html текст на: верх страницы и низ страницы, то есть создать шаблоны. В этом случае, будет меняться только центр странички, что немаловажно.

Следующий файл "top.htm" - верх странички
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><HEAD><TITLE>%title%</TITLE></HEAD><body>

Этот файл "end.htm" - низ странички
</body></html>

Сам сценарий будет такой
<?
//вставляем верхний шаблон и изменяем в нем Title.
$title = "Php-web-дизайн";
$t_mha = @file ('top.htm');
for($mha = 0 ; $mha < count($t_mha); $mha++)
{ 
$t_mha[$mha] = str_replace("%title%",$title,$t_mha[$mha]);
echo "$t_mha[$mha]"; 
}
//здесь вставляем центр странички
include("zentr.htm");
//вставляем низ странички
include("end.htm");
?>

При обращении к этому сценарию сервер выдаст броузеру
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><HEAD><TITLE>Php-web-дизайн</TITLE></HEAD><body>
середина странички, которая будет меняться, то есть zentr.htm.
</body></html>

Мы добились того, что в верхней части меняем title, выводим саму меняющуюся информацию (zentr.htm) в центр html кода и добавляем низ. Теперь мы будем менять только центральную часть, не заботясь о шаблонах. В этом простом примере мы научились разбивать текст странички, менять его и вставлять файлы. Теперь один раз записав файл верх, по разным ссылкам мы спокойно изменим в нем title или что-нибудь еще, вставим центральную часть и закончим нижней. 

У нас на сайте переписывается в верху: title, статистика (левый нижний угол), затем мы вставляем сам текст в центр, а в нижней части переписывается время генерации странички сервером. В итоге, странички получаются всегда разные, хотя мы используем всего два html файла (верх и низ), центр странички разный. То же самое относится и к центральной части, в которой тоже можно создать шаблон, а сервер сам будет менять в нем данные, что придаст сайту больше интерактивности.

2. Как организовать php-ссылки. Очень просто, например, у нас весь скрипт записан в одном файле all.php. Ссылки в html коде выглядят так "all.php?act=omsk&fon=velikie". Все что стоит за знаком вопроса это и есть ссылка. Если нажать на эту ссылку, скрипту all.php автоматически методом Get будут переданы две переменные: "$act=omsk" и "$fon=velikie". Программа начнет движение по срипту сверху вниз и когда достигнет того места, где мы будем спрашивать о этих двух переменных срипт исполнится. 
<?
//если переменная $act равна "omsk" и $fon не пусто, то есть существует
//выводим одну страничку в броузер
//ссылка выглядит так: "all.php?act=omsk&fon=velikie"
if($act == "omsk" and $fon != "") { include("one.htm"); }
//если переменная $act равна "omsk" и $fon пусто, то есть не существует
//выводим другую страничку в броузер
//ссылка выглядит так: "all.php?act=omsk"
if($act == "omsk" and $fon == "") { include("too.htm"); }
?>
То есть, все очень просто.

3. Как работают формы? Из формы переменные передаются скрипту методом Get или Post, если мы в форме что-то пропишем и активизируем кнопку submit. Если будет использоваться метод Get, то все переменные, которые передаются скрипту будут прописаны в командной строке: all.php?1_переменная=значение&2_переменная=значение&3_переменная=значение. Если будет использован метод Post, то эти же переменные будут переданы скрипту скрыто вне командной строки. То есть, метод Get нельзя использовать, если переменная большого объема, то есть в ней много букв. Например, когда вы направляете нам письмо с сайта, скрипту будут преданы три переменные: имя, email пользователя и сам текст письма. Две первые переменные маленькие, а вот последняя большая, поэтому программа будет виснуть, если в форме отсылки применить метод Get. Формы Php передают скрипту переменные, только после активации, в этом отличие от Javascript, который исполняется при загрузке, самого текста html, в броузер.

4. Как организовать Администрирование? Создаем файл, например, administ.php. Он должен быть закрыт паролем.
<?
//функция форма пароля
function form()
{
echo "
<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN\">
<html><HEAD>
<title>Админ</title>
<meta http-equiv=\"Content-Type\" content=\"text/html; charset=windows-1251\">
</head><body>
<form action=administr.php method=post>
<table border=0 width=600 align=center cellspacing=1 cellpadding=1 bgcolor=#333399>
<tr><td align=center bgcolor=#D7DCF7>
<font face=verdana size=2 color=de0000>Введите пароль</font></td></tr>
<tr><td align=center bgcolor=#D7DCF7><input type=password name=p size=25></td></tr>
<tr><td align=center bgcolor=#D7DCF7><input type=submit value=Войти></td></tr></table>
</form>";
}
//если пароль правильный скрипт исполняется
if ($p == "$password")
{
//здесь текст нашего скрипта
echo "</body></html>";
exit;
} 
//если пароль неправильный скрипт не исполняется, записываем нарушителя в базу
if ($p != "$password") 
//определяем ip нарушителя, записываем в лог файл и выводим форму для пароля
{ if(empty($log_ip)){ if (getenv('HTTP_X_FORWARDED_FOR'))
{$log_ip=getenv('HTTP_X_FORWARDED_FOR'); } 
else {$log_ip=getenv('REMOTE_ADDR'); }}
else {$log_ip=getenv('REMOTE_ADDR'); }
$log_host=gethostbyaddr("$log_ip");
$log_date=date('d\.m\.Y, H:i:s');
$log_file = fopen("admin.log","a+");
$p = eregi_replace("<","&lt;","$p");
$p = eregi_replace(">","&gt;","$p");
if($p == "") { $p = "не вводил"; }
fputs ($log_file,"$log_ip<>$log_host<>$log_date<>$p\n");
fclose ($log_file);
form();
echo "</body></html>";
} 
?>
Мы всегда можем увидеть нарушителей и потом, если надо, закрыть им доступ, при условии определения ip нарушителя. Все ссылки в скрипте должны идти с паролем, который надо вручную прописать в отдельном текстовом файле, из которго скрипт и будет потом считывать пароль и сравнивать его с тем, который был послан из формы.

5. Что такое цикл и зачем он нужен?
функция for - цикл, очень важная для привязки баз данных, которые лежат в текстовых файлах. В нашем базовом файле данные лежат построчно и разделяются каким-то разделителем, в нашем случае разделитель - "::". То есть, база данных выглядит так:
1 строка - Иванов::директор::40 лет::в/о::
2 строка - Петров::зам.директора::35 лет::в/о::
3 строка - Сидоров::нач.отдела::45 лет::в/о::

Чтобы произвести манипуляции с этой базой (добавить, удалить, изменить данные), и, требуется цикл for. Сначала мы считаем всю базу в массив строк, причем каждая строка в этом массиве будет иметь свой номер, ф-ия file, затем мы посчитаем сколько строк в считанном массиве, откроем файл базу на запись, полностью стирая ее и запустим цикл, в котором, в данном случае будем удалять ненужные нам строки, при этом нужные записывая в ту же базу данных. Далее по тексту, $base - база данных, в которой лежат наши данные.
<?
// считываем всю базу в переменную $general
// Тогда $general - это массив строк из базы, выглядит так:
// $general[0] - все, что в 1 строке базы
// $general[1] - все, что во 2 строке базы
// $general[2] - все, что в 3 строке базы
// итд, до последней строки, то есть функция
// file дает нам возможность считать базу построчно
// в массив строк со своим номером по порядку
$general = file("$base");
// стираем всю базу и открываем ее на запись
// функция fopen, если "w", то вся база стирается,
// ну и пусть, ранее мы считали ее в переменную $general,
// а потом из $general перезапишем
$fp = fopen("$base","w");
// count($general) - количество строк в считанной базе,
// то есть в переменной $general. Назначаем цикл от
// нулевой строки, до последней в базе: $j = 0 до $j < forum'>count($general)
for ($j = 0; $j < count($general); $j++) {
// запускаем цикл, в первый проход цикла,
// $general[$j] - это все, что записано в 1 строке $general[0]
// во второй проход $general[$j] - все, что записано
// во 2 строке $general[1]. счет идет не с 1, а с 0.
// В последний проход, все что записано в поледней строке.
// Так продолжается пока $j < count($general), то есть
// счетчик - перменная $j не станет больше количества строк в базе,
// тогда цикл прекращается. С каждым проходом цикла $j++, то есть эта
// переменная увеличивается на один, а в самом начале она равна 0.
// Если номер строки и номер для стирания той строки, что хотим удалить
// совпадают игнорируем, то есть не записываем в базу,
// остальные строки пишем в файл-базу fputs($fp,$general[$j])
// то есть записываем по новому все строки $general[$j],
// в том же порядке, кроме той, которую хотим стереть
if ($j != ($del)){ $erg = fputs($fp,$general[$j]); }
}
// цикл будет крутиться пока $j < count($general), потом он закончится
// и программа придет к этой отметке. Здесь мы закрываем файл-базу
fclose($fp);
?>
В этом очень простом примере мы научились использовать file, count, for, fopen, fclose.



Александр Устюгов

Деонат дезодорант купить.


При перепечатке информации делайте, пожалуйста, ссылку на наш сайт (либо поделиться вконтакте, гугл+ или ретвит статьи). Спасибо!

Источник: www.wr-script.ru©, 2004-2020г.

Делитесь с друзьями в соцсетях. Активные комментаторы получают свежие скрипты и бесплатные доработки от WR-Script.ru!

Вернуться к статьям помощи WEB-мастеру

WR-Счётчик