Създаване на скрипт за изпращане на пощенска картичка
В този урок ще ви покажем как да създадете скрипт за проста виртуална пощенска картичка със собствените си снимки.
Създаване на скрипт за подателя на пощенска картичка
За да създадете скрипт със свойя собствена виртуална пощенска картичка не е толкова сложна задача, колкото си мислите. Ние ще създадем скрипт за изпращане на пощенска картичка, без да използваме всякакви база данни. Всичко, от което се нуждаем, е няколко хубави изображения и малко кодиране:)
1.Стъпка
Ако посетите някоя онлайн страница за изпращане на картичка , вие ще видите, че трябва да изберете изображение, след това да напишете съобщение, да попълните някои важни неща, като електронна поща и накрая да го изпратите. От другата страна на получателя получава имейл с URL. Ако той или тя посещава този URL,на страницата ще се покаже избраното изображение и вашето послание.
От какво имаме нужда :
1. Показване на изображенията в малък формат, за да се даде възможност за избор на посетителя
2. Създаване на формуляр, където съобщенията и електронната поща могат да се паставят.
3. Съхранява на данните във файл с уникално име.
4. Изпращане на електронна поща на получателя с URL.
5. Създаване на страница в, която се обработват URL и зарежда със съответния файл и имидж на съобщението.
2. Стъпка
Преди да започнете кодиране на някои хубави изображения и да преоразмерите формата. Вие се нуждаете от нормални изображения с размер 640x480 / 800x600 или по-малки, както например: 96x128. Създаване на две директории за изображения и миниатюри.
Копиране на изображенията на правилното място и името на файла да е същото за нормална и умалена. Нещо като това:
* images/pic1.jpg
* thumps/pic1.jpg
Сега можем да създадем PHP функция за показване на миниатюри за посетителите. За да може посетителя да избере от тези образи, трябва да ги покажем като форма елемент, използвайки radiobox за всяко изображение.
За да се направи това, ще трябва да се отворят директории за миниатюри, които да се четат със readdir функция. Тъй като readdir връща всички елементи от справочника, а се нуждаем само от файлове с изображения, то правим филтър за директориите. Ако всичко е наред, тогава създаваме нова клетка от таблицата с изображение и radiobox. Поставяме на всеки radiobox името на изображението, така че по-късно да разберем коя бе избрана.
Кодът е следният:
CODE
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 | <?php function displayPhotos(){ global $columns; $act = 0; // Open the actual directory if ($handle = opendir("thumbs")) { // Read all file from the actual directory while ($file = readdir($handle)) { if (!is_dir($file)) { if ($act == 0) echo "<tr>"; echo "<td align='center'> <img src='thumbs/$file' alt='postcard' /><br/> <input type='radio' name='selimg' value='$file' /> </td>"; $act++; if ($act == $columns){ $act = 0; echo "</tr>"; } } } echo "</tr>"; } } ?> |
Въпреки това, за да го завършите, трябва да използвате HTML формат. На този формуляр, ще се покаже полето за съобщения и имейл адреси. Така че завършващата част с HTML е следната:
CODE
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 | <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table align="center"> <?php displayPhotos(); ?> </table> <h2>Fill the form</h2> <table width="100%"> <tr> <td>Send to (email address):</td> <td><input type="text" name="email" size="30"/></td> </tr> <tr> <td>Message:</td> <td><textarea name="message" rows="10" cols="40"></textarea></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="Send card!" name="submit"/></td> </tr> </table> </form> |
Step 3.
Следващата задача е да обработим формуляра и да съхраним съобщението във файл. Освен това трябва да изпратите имейл на получателя с URL.
Първо- обработка на задачата. В тази стъпка, трябва да се провери входа и да се създаде уникално име на файла, като се използва действителната дата и време.
В този файл, ще се съхранява избраното име на изображението, имейл адреса и съобщението. Ако всичко е готово, ще го запишем в папка да кажем- съобщения. Можем да направим това със следния код:
CODE
| 1 2 3 4 5 6 7 8 | <?php $filename = date('YmdGis'); $f = fopen('messages/'.$filename.".txt","w+"); fwrite($f,$pic."n"); fwrite($f,$_POST['email']."n"); fwrite($f,htmlspecialchars($_POST['message'])."n"); fclose($f); ?> |
Стъпка 4.
Като последна стъпка в тази тема, трябва да изпратите имейл на получателя.
За да направите това, композирайте кратко съобщение и поставите уникален URL адрес . По-ъсно, ще обработвате URL GET данни. Как да изпратите имейл не е част от този урок, така че просто, ще ви покажа прост код, за да изпратите съобщението:
CODE
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 | <?php $postcardURL = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; $from = "From: $senderName <$senderEmail>rn"; $replay = "Reply-To: $senderEmailrn"; $params = "MIME-Version: 1.0rn"; $params .= "Content-type: text/plain; charset=iso-8859-1rn"; $mailtext = "You have just received a virtual postcard!rnrn" . "You can pick up your postcard at the following web address:rn" . "$postcardURL"."?show=$filenamernrn" . "We hope you enjoy your postcard, and if you do, " . "please take a moment to send a few yourself!rnrn" . "Regards,rn" . "Postcard Tutorialrn" . $postcardURL; // Send email @mail($_POST['email'],"You've received a postcard",$mailtext,$from.$replay.$params); ?> |
Ако всичко работи добре, тогава, ще се покаже кратко съобщение към посетителя, че картичката е изпрати успешно и ще го покаже, за да се провери.
Стъпка 5.
Последната задача е обработката на URL адреси, за да разберете каква е задача на скрипта. Както видяхте, поставихме уникален URL адрес в пощата, където използвахме показаните параметри в URL . Ако този параметър е настроен, тогава скриптът знае, че картичката трябва да бъде показана. Без този параметър нормалната форма за изпращане на пощенска картичка, не ще бъде показан.
В случая показвайки пощенската картичка, получавате исканата информация от URL. Тя се съхранява в масив $ _GET и намерите съобщението на съответния файл в директорията на съобщенията. След това ще прочете файла и процеса на неговото съдържание. Най-накрая показваме доста проста HTML страница с изображение и съобщение.
Кодът изглежда така:
CODE
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 | <?php $file = isset($_GET['show']) ? $_GET['show'] : '' ; $content = file('messages/'.$file.".txt"); $pic = $content['0']; unset ($content['0']); unset ($content['1']); $main = ""; foreach ($content as $value) { $main .= $value; } ?> <center>Your postcard!<br/><br/> <img src='images/<?php echo $pic; ?>' alt="postcard" /> <br/><br/><br/> <?php echo nl2br(htmlspecialchars($main)); ?> </center> |
Също можете да изтеглите малък скрипт на пощенска картичка на подателя.
На следващата страница ще намерите пълния код на скрипта
CODE
| 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 | <?php // CHANGE PARAMETERS HERE BEGIN $columns = 5; $senderName = 'Sender Name Here'; // Eg.: John's Postcards $senderEmail = 'Sender EMAIL here'; // Eg.: john@postcard.com // Change only if you have problems with urls $postcardURL = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; // CHANGE PARAMETERS HERE END // This function displays the available images function displayPhotos(){ global $columns; $act = 0; // Open the actual directory if ($handle = opendir("thumbs")) { // Read all file from the actual directory while ($file = readdir($handle)) { if (!is_dir($file)) { if ($act == 0) echo "<tr>"; echo "<td align='center'> <img src='thumbs/$file' alt='postcard' /><br/> <input type='radio' name='selimg' value='$file' /> </td>"; $act++; if ($act == $columns){ $act = 0; echo "</tr>"; } } } echo "</tr>"; } } ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd"> <html> <body> <?php if ( (!isset($_POST['submit'])) && (!isset($_GET['show'])) ) { ?> <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post"> <table align="center"> <?php displayPhotos(); ?> </table> <h2>Fill the form</h2> <table width="100%"> <tr> <td>Send to (email address):</td> <td><input type="text" name="email" size="30"/></td> </tr> <tr> <td>Message:</td> <td><textarea name="message" rows="10" cols="40"></textarea></td> </tr> <tr> <td colspan="2" align="center"> <input type="submit" value="Send card!" name="submit"/></td> </tr> </table> </form> <?php } else if ( (isset($_POST['submit'])) && (!isset($_GET['show'])) ) { $pic = isset ($_POST['selimg']) ? $_POST['selimg'] : ''; $filename = date('YmdGis'); $f = fopen('messages/'.$filename.".txt","w+"); fwrite($f,$pic."n"); fwrite($f,$_POST['email']."n"); fwrite($f,htmlspecialchars($_POST['message'])."n"); fclose($f); // Compose the mail $postcardURL = 'http://'.$_SERVER['HTTP_HOST'].$_SERVER['SCRIPT_NAME']; $from = "From: $senderName <$senderEmail>rn"; $replay = "Reply-To: $senderEmailrn"; $params = "MIME-Version: 1.0rn"; $params .= "Content-type: text/plain; charset=iso-8859-1rn"; $mailtext = "You have just received a virtual postcard!rnrn" . "You can pick up your postcard at the following web address:rn" . "$postcardURL"."?show=$filenamernrn" . "We hope you enjoy your postcard, and if you do, " . "please take a moment to send a few yourself!rnrn" . "Regards,rn" . "Postcard Tutorialrn" . $postcardURL; // Send email @mail($_POST['email'],"You've received a postcard",$mailtext,$from.$replay.$params); ?> <center> Your postcard was sended succesfuly!<br/><br/> <img src='images/<?php echo $pic; ?>' alt="postcard" /><br/><br/><br/> <?php echo nl2br(htmlspecialchars($_POST['message'])); ?></center> <?php } else if ( (!isset($_POST['submit'])) && (isset($_GET['show'])) ) { $file = isset($_GET['show']) ? $_GET['show'] : '' ; $content = file('messages/'.$file.".txt"); $pic = $content['0']; unset ($content['0']); unset ($content['1']); $main = ""; foreach ($content as $value) { $main .= $value; } ?> <center>Your postcard!<br/><br/> <img src='images/<?php echo $pic; ?>' alt="postcard" /> <br/><br/><br/> <?php echo nl2br(htmlspecialchars($main)); ?> </center> <?php } ?> </body> |





