Mikuláš je tu! Získaj 90 % extra kreditov ZADARMO s promo kódom CERTIK90 pri nákupe od 1 199 kreditov. Len do nedele 7. 12. 2025! Zisti viac:
NOVINKA: Najžiadanejšie rekvalifikačné kurzy teraz s 50% zľavou + kurz AI ZADARMO. Nečakaj, táto ponuka dlho nevydrží! Zisti viac:

Diskusia – 8. diel - Kontaktný emailový formulár v PHP

Späť

Upozorňujeme, že diskusie pod našimi online kurzami sú nemoderované a primárne slúžia na získavanie spätnej väzby pre budúce vylepšenie kurzov. Pre študentov našich rekvalifikačných kurzov ponúkame možnosť priameho kontaktu s lektormi a študijným referentom pre osobné konzultácie a podporu v rámci ich štúdia. Toto je exkluzívna služba, ktorá zaisťuje kvalitnú a cielenú pomoc v prípade akýchkoľvek otázok alebo projektov.

Komentáre
Posledné komentáre sú na spodnej časti poslednej stránky.
Avatar
Filip (animátor/programator):14.1.2017 16:59

..

Odpovedať
Nikdy sa nevzdávaj a choď si za svojim snom.......
Avatar
Mrtvej Králík:22.2.2017 12:47

Ani nevím jak jsem ten kontaktní formulář zprovoznil ale nezkonalé díky za tento článek :)

Editované
Avatar
Pavel Šrytr
Člen
Avatar
Pavel Šrytr:10.3.2017 19:59

Ahoj, nějak mi uniká význam tohohle
isset($_POST['e­mail']) && $_POST['email']
Můžete mi to prosím někdo vysvětlit?

P.S. Nevím jak vložit zdroják

Editované
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovedá na Pavel Šrytr
Jan Lupčík:10.3.2017 22:25

Ahoj, zdroják se vkládá tlačítkem </>. To je ale vedlejší.
isset() tam je na ověření, zda je v té proměnné nastavená jakákoliv hodnota - prostě že je definovaná. Bez toho by ti to házelo Notice, pokud bys neodeslal ten formulář (teda v případě, že máš zapnuté chybové hlášky). A to by nemuselo působit na uživatele dobře. :)

Odpovedať
TruckersMP vývojář
Avatar
Pavel Šrytr
Člen
Avatar
Odpovedá na Jan Lupčík
Pavel Šrytr:11.3.2017 8:59

Ano to chápu, ale proč je tam potom i

&& $_POST ['email']
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovedá na Pavel Šrytr
Jan Lupčík:11.3.2017 13:55

To zkontroluje, zda je tam nějaká hodnota - tedy že to není prázdný, false nebo null.

Odpovedať
TruckersMP vývojář
Avatar
Pavel Šrytr
Člen
Avatar
Odpovedá na Jan Lupčík
Pavel Šrytr:11.3.2017 17:05

Aha, děkuji za trpělivost. Myslel jsem že hodnotu kontroluje isset.

Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovedá na Pavel Šrytr
Jan Lupčík:11.3.2017 17:31

Mrkni se přímo na tu funkci do manuálu: http://php.net/…on.isset.php

Odpovedať
TruckersMP vývojář
Avatar
Jiří Fencl
Člen
Avatar
Jiří Fencl:11.3.2017 22:12

Hlavni rozdil mezi isset a pouzitim primo (napr $_POST ['email']) pri testovani existence promenne je ten, ze ti muze php bez testovani pres isset vyhodit hlaseni (notify) o neexistenci klice 'email' v poli $_POST primo na vystup zrovna tam, kde je konkretni kus kodu, coz je nekdy dost neprijemne. Zalezi na tom, jak je pro php nastaveno vypisovani chyb (viz error_reporting a ini_set - display errors]

Avatar
Peter Schoeller:13.3.2017 8:31

Ahojte, viete mi poradit?
Mam modifikovany mailform z tejto stranky a chcel by som aby uzivatel mohol prilozit aj obrazok ako prilohu k mailu. Podla mojho kodu to funguje, ale odosiela to akukolvek prilohu, nie len image.

    mb_internal_encoding("UTF-8");

    $hlaska = '';
    if (isset($_GET['uspech'])){
                        $hlaska = 'Email bol úspešne odoslaný, čo najskôr vám odpovieme.';
                        $zpravaclass = 'bg-success';
                        }

                                        // file properties

                if(!isset($_FILES['image']['tmp_name']) && $_FILES['image']['tmp_name']){
                        $hlaska = 'Please select an file (max. 2MB)';
                        $zpravaclass = 'bg-danger';
                        }
                        else {

                        if(!empty($_FILES['image']['tmp_name']) && file_exists($_FILES['image']['tmp_name'])) {
                                $image= addslashes(file_get_contents($_FILES['image']['tmp_name']));
                                }
                        if(!empty($_FILES['image']['name']) && file_exists($_FILES['image']['name'])) {
                                $image_name = addslashes($_FILES['image']['name']);
                                }
                        if(!empty($_FILES['image']['tmp_name']) && file_exists($_FILES['image']['tmp_name'])) {
                                $image_size = getimagesize($_FILES['image']['tmp_name']);
                                }

                        if (isset($_FILES['image']['tmp_name']) && $_FILES['image']['tmp_name']==FALSE) {
                                $hlaska = "That's not an Image. Only the following file types are supported: .jpg, .jpeg, .gif, .bmp";
                                $zpravaclass = 'bg-danger';
                                }

                        if (isset($_FILES['image']['size']) && $_FILES['image']['size'] > 2097152) {
                                $hlaska = 'Sorry, your file is too large. Max filesize 2MB';
                                $zpravaclass = 'bg-danger';
                                }
                        }}

        if ($_POST) // V poli _POST něco je, odeslal se formulář
    {
        if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
            isset($_POST['email']) && $_POST['email'] &&
            isset($_POST['zprava']) && $_POST['zprava'])

                {
            require_once '../phpmailer/PHPMailerAutoload.php';
                                $mail = new PHPMailer;
                                $mail->Host = 'smtp.gmail.com';
                                $mail->SMTPAuth = true;
                                $mail->Username = '[email protected]';
                                $mail->Password = 'xxxxxxxxxxxxxxx'; // nastavenie v Google -> heslo aplikacii
                                $mail->SMTPSecure = 'tls';
                                $mail->Port = 587;

                                $mail->From = '[email protected]';
                            $mail->FromName = 'Mailform';

                            $mail->addAddress('[email protected]', 'admin');

                                $mail->CharSet = 'utf-8';
                                $mail->Subject = 'Nová správa z Mailform - ' .$_POST['jmeno'];
                                $mail->isHTML(true);

                                $mail->Body = '<p>' .$_POST['jmeno'] . ' (' . $_POST['email'] .')<br />';
                                $mail->Body .= 'poslal správu z Mailform</p>';
                                $mail->Body .= '<p>Správa: <br />';
                                $mail->Body .= $_POST['zprava']. '</p>';
                                $mail->Body .= "<p>email: " .$_POST['email']. "</p>";
                                $mail->AltBody = 'This is the plain text version.';
                                $mail->AddAttachment($_FILES['image']['tmp_name'], $_FILES['image']['name']);

                        if($mail->Send())
            {
                $hlaska = 'Email bol úspešne odoslaný, čo najskôr vám odpovieme.';
                header('Location: mailform.php?uspech=ano');
                                $zpravaclass = 'bg-success';
                exit;
            }
            else
                $hlaska = 'Email se nepodarilo odoslať. Skontrolujte adresu, alebo priložený súbor.';
                                $zpravaclass = 'bg-danger';
                }

        else
            $hlaska = 'Formulár nie je správne vyplnený!';
                $zpravaclass = 'bg-danger';

        }
?>

Ak zmenim

if ($_POST)

za

else ($_POST)

tak dostanem hlasky, ze to nie je image, resp subor je vacsi ako 2MB, ale zas sa neodosle email.
Kde moze byt chyba?

Posledné komentáre sú na spodnej časti poslednej stránky.
Robíme čo je v našich silách, aby bola tunajšia diskusia čo najkvalitnejšia. Preto do nej tiež môžu prispievať len registrovaní členovia. Pre zapojenie sa do diskusie sa zaloguj. Ak ešte nemáš účet, zaregistruj sa, je to zadarmo.

Zobrazené 10 správy z 289.