Студопедия

КАТЕГОРИИ:

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


Тақырып 9.




РНР скрипттері арқылыҚонақ кітабын ұйымдастыру жобасы. (1-сағат)

Жоспар:

1. Қонақ серверлер мағынасы

2. Қонақ кітабын құрастыру кезунде шарттарды ұйымдастыру

3. РНР скриптін құру

 

Дәрістің мақсаты- РНРпрограммалаутілі арқылы Қонақ кітабын құрастыру

 

Сонымен, бiз әлдеқандай маңызға жеттiк.Ертерек егер бiз шеттетiлген iстермен көбiрек шұғылдансақ, онда бүгiн бiз кез келген вебмастер қақтығысып қалатын нақты есептi шешемiз,- меншікті қонақ кітабын жазу.

Екiбастан, мысалы, http://guestbook.land.ru/, қандай болмасын мамандандырылған "қонақ" серверлер қолдануға және олардың Баннерлерiн әрдайым көзбен көруге болады; немесе дайын скрипттердi алсақ, мүмкiн деймiз, CGI.ruмен, бұл да қызық, өйткенi скрипттi автор емес қонақ кiтабын жазды, сiздiң сайтыңыз үшiн емес, "гостевуха" мұндай сiздiң жақсы көретiн балаңыздың ортақ тұжырымдамасын бұзады.

Жарайды, сiздi мен көндірдім деп ойлаймын, "Өз жейдесi денеге жақын", дегенмен бастаймыз.Сонымен, кез келген бағдарламаны не бастайды ма? Дұрыс, есептiң қойылуларымен. Осылай, бiз ең алдымен қонақ кiтабына келесi шарттарды орындауымыз керек:

  1. Қосылған қатынасты сақтау.
  2. Сақтау алдында толықтырылатын хабарламаны тексеруiн өндiрiп алу(қауiпсiздiк мақсаттарындағы).
  3. Барлық қатынасты экранға шығару.

Бұл есептердiң ортақ тұжырымдары, кодтың жазылуы кезінде жаңалады.

Енді бізге не керек? Сіз түсінгендей, маңызды заттар бір файлда жазылмайды. Сондықтан келесi файлдарды бiр папкада жазамыз:

  1. config.php - бұл жерде қонақ кiтабының ортақ күйге келтiрулерi сақталады.
  2. base.txt - барлық қатынас, бiздiң өзiндiк деректер қорларымыз сақталатын файл.
  3. guest.php - бұл жерде тiкелей бiздiң скрипт болады.

Осымен барлық даярлаулар бiтті және мән-жайға өтуге мезгiл.

guest.php файлды жаза бастаймыз.Бiз түгелдей дерлiк әсерлерді 4-ші сабақта талқыланған функцияларда жазамыз деп айтқым келедi.Сенiңiз, бұл өте ыңғайлы.

Бiз қандай әсерлердi жасайтынымызды ең алдымен HTML тымақта(басы) жасаймыз.

<HTML>

<HEAD>

<TITLE>Қонақ кітабы</TITLE>

<meta http-equiv="Content-Type" content="text/html; charset=windows-1251">

<META HTTP-EQUIV="Pragma" CONTENT="no-cache">

</HEAD>

<BODY>

<?

require("config.php");

 

Бұдан әрi қарай хабарламаны қосу үшiн форманы шығаратын функцияны жазамыз. Ол HTML-ға негiзделген. Код "Арбаң-тарбаң" ұсақтайды, сондықтан ары қарай кестелерді қолданып оны бейне үшiн көрсету мүмкiн емес, сондықтан <TextArea > -ға өтемін.

function show_form() { ?> <form method="post" action=""> Имя<br> <input type="text" name="name" maxlength="22"> <br> E-mail<br> <input type="text" name="email" maxlength="21"> <br> Сообщение<br> <textarea cols="70" rows="20" name="mess"></textarea><br> <input type="submit" value="Послать"> <input type="reset" value="Очистить"> </form> <? }

 

Жарайды, мен ойлаймын, бұл жерде барлығы түсiнiктi деп: бұл бөлiк функцияға бұрынғыша жататындығымен, бiз код PHP-ді бөлемiз және HTML-ды жазамыз.Аction тега Form қасиеті бос жолға тең, яғни форманың өңдеушiсiфайлда болады. Бiз ендi формалар жазуда скрипттi қорғау туралы ойлаймыз және maxlength қасиетiнiң ендiрiлетiн символдар санына шек қоямыз.

Сонымен, қолданушы хабарлама жазып «Жіберу» батырмасын басты. Әрі қарай не болады? Түсінікті, енді бізге хабарламаны сақтау керек, қазір сонымен тікелей айналысамыз.

config.php файлында келесі жолдарды жазамыз:

 

<?
$base = "base.txt";

 

Сiз base.txtтар орынына кез келген басқа файл қолдана аласыз, бiрақ мен бұл файл тап осылай деп атаймын.

Егер бiз басқа файлды қолдануға тiлесек - база болса файлдың атауы ендi өмiрдi бiзге едәуiр жеңiлдеткен айнымалы енгiзiлген.

Енді өмірімізді едәуір жеңілдететін файл-база айнымалыға енгізілген, қаласақ басқа файл-база қолдансақ болады.Бiздiң негiзгi файлға оралып, онда келесiні жазамыз:

function save_mess() { global $name, $email, $mess, $base; $date = date("d.m.y - H:i:s"); $text = $name."^^".$email."^^".$date."^^".$mess."\n"; $fp = fopen($base,"a"); fputs($fp, $text); fclose($fp); }

 

Жарайды, мүмкiн, бұл да оңай.Демек, бiз айнымалымызды глобалдi деп жариялаймыз , яғни олар формадан қолданушының жiбергені.Бiз бұдан әрi күн түрде ағымдағы датаны $date айнымалысына тағайындаймыз.ай.жыл - сағаттар:минуттар:(() () - PHPға дата және уақытының қорытындысы) dateның функциясын бапта оқып отырыңыз) dateның функциясы туралы) секундтер. Содан кейін хабарлама жіберушінің атын, мекен-жайын және хабарламаның өзін $text айнымалысына меншіктейміз, бұнымен қоса оларды ^^ белгісімен бөлеміз және де кері процесс үшін қолданамыз - жолдан атын, мекенжайын хабарламаны аламыз.Ол үшiн хаттарда қолданылмайтын символдардың кез келген символын немесе тiркесiн қолдануға болады, бiрақ мен осы символды ^^ таңдадым.

Бұдан әрi жазуларға дейін файл-базаны ашып, файлдың соңына барлық мәлiметтерден алынған жолды қосамыз.

Сонымен, бiзде не бар? Хабарлама енгізетін форма және оны сақтау үшін функция бар. Енді хабарлама шығаратын функцияны жазамыз.

Хабарламалар бiзде дата және олардың жазылуының уақыттары кему ретiнде болатынына келісейік. Одан басқа, шығарылатын хабарламалардың санын нақты бір санмен шектейміз, ол config.php файлда көрcетiлген, онда мына жолды жазамыз:

$MessOnScreen = 10;

 

Сiз бұл жерде кез келген сан орната аласыз.

Guest.php-ге оралып, ауқымды функция жазамыз:

function show_mess() { global $base, $MessOnScreen; $file = file($base); $file = array_reverse($file); echo "<table>"; if(sizeof($file) < $MessOnScreen) $MessOnScreen = sizeof($file); for ($i = 0; $i < $MessOnScreen; $i++) { $mess = explode("^^",$file[$i]); ?> <tr> <td> <p>Написал: <? echo "<a href='mailto:".$mess[1]."'>".$mess[0]."</a>"; echo "<br>"; echo $mess[2]; ?> </td> <td> <p><?=$mess[3];?></td> </tr> <? } echo "</table></td>"; }

 

Бiз file() функциясы арқылы әрбiр элементінде бiр "Блокпен" болатын жолды массивті аламыз - сәйкесiнше атымен, мекенжайымен және оның хабарламасын аламыз. Сонан соң біз алған массивті"аударамыз", элементтердiң ретiн керiге өзгертемiз: ең соңғы жазуы массивтің бірінші элементі болып қалыптасады. Кейін $MessOnScreenге лимитпен көрсетілген$file-да (демек хабарламалардың саны) массив элементтерін теңестiремiз - егербұл мән одан аз болатын болса, онда $MessOnScreen $file-дың элементтер санына орнатады. Содан кейін хабарламаларды шығару циклы орындалады.Циклда әрбiр өтумен циклдағы айнымалы мәнi бiрлiкке өседі.Өзi (барлығында соңында келген және файл-базаның астында болатын) жаңа хабарламалар сайып келгенде бiрiншi шығарылады, ескiлеу - соңғы.

Осыдан кейiн $mess айнымалысына элементтерi бар массивты тағайындаймыз:

0-шi элемент – аты

1-шi элемент - электрондық почтаның мекенжайы

2-шi элемент – хабарламаның келген уақыты

3-шi элемент - хабарламаның өзi

Бұл символдар бойынша жолды бөлетін ^^( есініңзде болса, жоғарыда айтылған) explode() функциясы арқылы жасалады.

Бiз содан соң барлық алған мәндердi кестеде шығарамыз. Егер кездеспесе, онда ?[2 ] =$mess;?> баламалы ма(эквивалентті)? [2 ] echo $mess;?>

 


Поделиться:

Дата добавления: 2014-12-03; просмотров: 85; Мы поможем в написании вашей работы!; Нарушение авторских прав





lektsii.com - Лекции.Ком - 2014-2024 год. (0.007 сек.) Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав
Главная страница Случайная страница Контакты