Poslanie mailu

V tejto sekcii (semestri) sme si preberali najmä možnosti využitia jazyka PHP vo webstránkach. V nasledujúcich dvoch semestroch sa naučíme spolu spraviť jednoduchú webstránku so všetkým, čo k tomu patrí. Od programovania v jazyku HTML, CSS a PHP až po rozbehanie webstránky na serveri a zverejení na interente. To bude taký náš základ pre tento stupeň štúdia. Po jeho absolvovaní budeme mať základné vedomosti o webstránkach a veciach, čo s ňou súvisia. Pomocou troch základných jazykov budeme vedieť spraviť jednoduchú, ale praktickú stránku so základnou funkcionalitou. Aby mala všetko čo má štandardná stránka mať, ostáva nám prebrať ešte jednu šikovnú a praktickú vec.

 

Určite poznáte klasicky poslednú sekciu (podstránku) väčšiny stránok na internete – sekciu kontakt, v ktorej sa vo väčšine nachádzajú kontaktné informácie na vlastníka stránky a iné užitočné informácie, ktoré potrebuje návštevník stránky rýchlo nájsť. Okrem toho sa tam nachádza tzv. kontaktný formulár, ktorý slúži na kontaktovanie prevádzkovateľa stránky. Kontaktovaním sa po technickej stránke myslí odoslanie emailu. Vo formulári sa nachádzajú položky ako meno, email odosielateľa, predmet a text správy/požiadavky. Po stlačení tlačidla sa naša požiadavka odošle. Čo sa ale v skutočnosti deje po stlačení tlačítka odoslať?

 

Zrejme už tušíte, že odoslaním formulára sa len štandardne naše údaje odošlú a v kóde na serveri – v kóde jazyka PHP sa dané údaje – parametre zachytia, tak ako sme to robili doteraz aj my. Následne však kód – program stránky nejakým spôsobom zabezpečí, že sa mail aj s našimi údajmi odošle. Teórie okolo emailov je dosť, ale podrobne sa budeme tomu venovať neskôr, momentálne si vysvetlíme iba nateraz pre nás dôležité informácie. Ako sa vlastne ten mail odošle? Laicky, mail je len nejaká špeciálna forma dát (kód/text), ktorá sa štandardne odosiela zo servera na server. Keď si my prezeráme svoju mailovú schránku cez webové rozhranie, v skutočnosti si len načítavame dáta zo servera, kde sú naše maily uložené. Pri odosielaní mailu sa dáta tak, ako sme si ich preposielali doteraz, pošlú na náš server, odkiaľ sa podľa mialovej adresy pošlú na cieľový server.

 

Keďže jazyk PHP a v podstate naša samotná stránka beží na serveri – na našom lokálnom cez program Wamp/Mamp, nemalo by nám nič brániť v tom, aby aj naša jednoduchá webstránka bola schopná odoslať email. A presne tak to je. Aj keď sa vám v skutočnosti odosielanie mailov môže zdať z technického hľadiska nejakým spôsobom náročné, je to úplne jednoduché a nie je to žiadna veda. Keďže spolu postupne začíname viac a viac chápať počítačom, svete webstránok a internetu, postupne zistíme, že veci, ktoré sa nám zdali doteraz zložité a nepochopiteľné, sú v skutočnosti jednoduché:) Postupne budeme zisťovať ako všetko so sebou súvisí a prečo sú veci tak ako sú.

 

Na odosielanie mailov existuje v jazyku PHP funkcia s jednoduchým názvom – mail(). Pomocou parametrov určíme základné vlastnosti pre odoslanie mailu, sú to parameter to (komu, adresát), subject (predmet emailu) a message (správa – obsah mailu). Chcem len upozorniť na dve veci. Aby ste pri skúšaní kódu na poslanie mailu zbytočne neodosielali mail veľakrát, hltí to server aj váš, aj cieľový. A za druhé je možné, že vaša cieľová mailová schránka zaradí tento mail do zložky SPAM, (prečo to tak je, si vysvetlíme neskôr...). Tažke ak nenájdete mail v zložke prijatých správ, pozrite si aj adresár SPAM vo vašom maile.


Poďme teda na našej stránke page2.php umiestniť jednoduchý formulár s týmito tromi položkami a po správnom (vyplnené všetky tri položky) odoslaní metódou GET si pošleme mail na nami zadanú adresu – len poprosím, zadávajte svoju adresu a nie hocijakú. Ak teda vyplníte správne údaje a kliknete na odoslať, mail by vám mal skutočne prísť:

 

page2.php:

<h1>Vitajte na stranke 2!</h1>
<?php include "menu.html";?>


<h2>Formular</h2>
<form action="page2.php" method="get">
    <label for="to">Adresát</label>
    <input type="text" name="to" id="to" value="<?php echo $_GET['to'];?>"><br><br>

    <label for="subject">Predmet</label>
    <input type="text" name="subject" id="subject" value="<?php echo $_GET['subject'];?>"><br><br>

    <label for="message">Správa</label>
    <textarea name="message" id="message"><?php echo $_GET['message'];?></textarea><br><br>

    <input type="submit" value="Odoslat">
</form>

<?php

if($_GET['to'] && $_GET['subject'] && $_GET['message']){
    echo 'Mail sa odosle s udajmi, ktore su viditelne v URL:)';
    // mail($_GET['to'], $_GET['subject'], $_GET['message']);
}else{
    echo 'Zadajte vsetky povinne udaje!';
}
?>

 

Ak vám mail prišiel, určite ste sa potešili, že ste spravili stránku, ktorá sama odošle mail:) Milé nie? Ešte upozorním, že ak zadáme zle cieľovú mailovú adresu, napríklad bez zavináča - mail sa neodošle, vo vnútri funkcie sa vyskytne chyba. Túto situáciu by sme mali ošetriť, aby sa skontrolovala mailová adresa a ostatné zadané údaje, to si však preberieme neskôr - okolo toho je viac teórie... Všimnite si ešte odosielateľa v maile, ktorý vám prišiel. Mala by to byť čudne vyzerajúca mailová adresa, zrejme zložená z názvu vášho domovského adresára na vašom počítači a názvu vášho počítača zakončená slovom local. Táto adresa reprezentuje náš lokálny server na našom počítači, z ktorého bol email odoslaný.

 

Pri odoslaní mailu funckiou mail() je možné nastaviť viac vlastností pomocou ďalších parametrov funkcie. Štvrtý parameter, ktorý nie je povinný (povinné sú len prvé tri, ktoré sme si vyskúšali) má názov headers (hlavičky) a slúži na zadefinovanie viacerých nastavení, ktoré sú súčasťou hlavičky mailu. Pomocou tohto parametra je možné nastaviť parametre Cc (adresát/-i pre kópiu) a Bcc (skrytá kópia), my si však vyskúšame iné nastavenia to je From (od). Možno tušíte, že tento parameter bude slúžiť na zadanie adresy, od koho je mail poslaný. Upravte si teda funkciu mail nasledovne:

 

mail($_GET['to'], $_GET['subject'], $_GET['message'], "From: moj_mail@mail.sk");

 

Ak vám mail prišiel, pri položke from/odosielateľ/od by mal svietiť nami zadaný email. Je dobrým zvykom zadávať tento parameter, aby bolo na daný mail možné odpovedať. To by malo nateraz na tento semester stačiť, naučili sme sa základné využitie jazyka PHP a v nasledujúcich dvoch semestroch bakalárskeho štúdia si vyskúšame všetko čo vieme pospájať a vytvoriť skutočnú a pekne vyzerajúcu stránku:)

Máte nejakú otázku alebo Vám niečo nie je jasné? Napíšte nám na info@zacni-programovat.sk a poradíme!

Obsah súborov projektu po tejto prednáške

1 - global.css

.pretty{
color: black;
text-decoration: none;
border: 3px solid green;
background-color: white;
text-align: center;
padding: 10px 50px;
}

.pretty:hover{
background-color: green;
color: white;
border: 3px solid blue;
}

.pretty:active{
background-color: yellow;
color: blue;
border: 3px solid blue;
}

2 - index.php

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>
<h1>Vitajte na domovskej stranke!</h1>
<?php include "menu.html";?>

<h2>Formular</h2>
<form action="index.php" method="get">
<label for="user_name">Meno:</label>
<input type="text" name="user_name" id="user_name" value="<?php echo $_GET['user_name'];?>"><br><br>

<label>Pohlavie:</label><br>
<label for="user_gender_male">Muz</label>
<input type="radio" name="gender" id="user_gender_male" value="male"
<?php if($_GET['gender'] == 'male'){ echo 'checked';} ?>
><br>

<label for="user_gender_female">Zena</label>
<input type="radio" name="gender" id="user_gender_female" value="female"
<?php if($_GET['gender'] == 'female'){ echo 'checked';} ?>
><br><br>

<label>Oblubeny jazyk:</label><br>
<label for="fav_lang_php">PHP</label>
<input type="radio" name="fav_lang" id="fav_lang_php" value="php"
<?php if($_GET['fav_lang'] == 'php'){ echo 'checked';} ?>
><br>

<label for="fav_lang_css">CSS</label>
<input type="radio" name="fav_lang" id="fav_lang_css" value="css"
<?php if($_GET['fav_lang'] == 'css'){ echo 'checked';} ?>
><br><br>

<label for="fav_browser">Pouzivany prehliadac</label>
<select name="fav_browser" id="fav_browser">
<option value="firefox"
<?php if($_GET['fav_browser'] == 'firefox'){ echo 'selected';} ?>
>Firefox</option>

<option value="chrome"
<?php if($_GET['fav_browser'] == 'chrome'){ echo 'selected';} ?>
>Chrome</option>
<option value="ie"
<?php if($_GET['fav_browser'] == 'ie'){ echo 'selected';} ?>
>IE</option>
</select><br><br>

<input type="checkbox" name="like" id="like" value="yes"
<?php if($_GET['like'] == 'yes'){ echo 'checked';} ?>
>
<label for="like">Paci sa vam tento portal?</label><br><br>

<input type="submit" value="Odoslat">
</form>

<?php

if($_GET['user_name'] || $_GET['user_surname']){
echo 'Meno pouzivatela je : <b>'.$_GET['user_name']. '</b> a priezvisko : <b>'.$_GET['user_surname'].'</b>.';
}


?>
</body>
</html>

3 - menu.html

<a href="index.php" class="pretty">Domov</a>
<a href="page2.php" class="pretty">Stranka 2</a>

4 - page2.php

<!DOCTYPE html>
<html>
<head>
<link rel="stylesheet" type="text/css" href="global.css">
</head>

<body>

<h1>Vitajte na stranke 2!</h1>
<?php include "menu.html";?>


<h2>Formular</h2>
<form action="page2.php" method="get">
<label for="to">Adresát</label>
<input type="text" name="to" id="to" value="<?php echo $_GET['to'];?>"><br><br>

<label for="subject">Predmet</label>
<input type="text" name="subject" id="subject" value="<?php echo $_GET['subject'];?>"><br><br>

<label for="message">Správa</label>
<textarea name="message" id="message"><?php echo $_GET['message'];?></textarea><br><br>

<input type="submit" value="Odoslat">
</form>

<?php

if($_GET['to'] && $_GET['subject'] && $_GET['message']){
echo 'Mail sa odosle s udajmi, ktore su viditelne v URL:)';
// mail($_GET['to'], $_GET['subject'], $_GET['message'], "From: moj_mail@mail.sk");
}else{
echo 'Zadajte vsetky povinne udaje!';
}
?>

</body>
</html>

Ťažko sa vám učí samému?

Máte problémy s niektorými časťami alebo sa neviete učiť sám? Využite našu možnosť individuálnej asistencie:

  • samostatný prístup
  • vysvetlenie nejasností prebraného učiva
  • úlohy a cvičenia navyše
  • všetko z pohodlia domova cez mail a skype

Pre viac info kliknite tu

Kľúčové slová prednášky

mail()php mailposlanie mailuwebstranka mailposlanie mailu z webstrankyposlanie mailu php poslanie mailu funkciou mail()funkcia mail()

IT ftip

Zomrie programátor a dostane sa do pekla. Po týždni Lucifer volá Bohovi: - Čo za blázna si mi sem poslal? Zničil mi všetky kotly, poškrtil všetkých čertov a už tri dni bezhlavo behá po všetkých chodbách pekla a reve "Kde je prechod do druhého levelu?"