NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
Hledáme nové posily do ITnetwork týmu. Podívej se na volné pozice a přidej se do nejagilnější firmy na trhu - Více informací.

Diskuze – Lekce 9 - Kontaktní e-mailový formulář v PHP

Zpět

Upozorňujeme, že diskuze pod našimi online kurzy jsou nemoderované a primárně slouží k získávání zpětné vazby pro budoucí vylepšení kurzů. Pro studenty našich rekvalifikačních kurzů nabízíme možnost přímého kontaktu s lektory a studijním referentem pro osobní konzultace a podporu v rámci jejich studia. Toto je exkluzivní služba, která zajišťuje kvalitní a cílenou pomoc v případě jakýchkoli dotazů nebo projektů.

Komentáře
Avatar
Filip (animátor/programator):14.1.2017 16:59

..

Odpovědět
14.1.2017 16:59
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 :)

Editováno 22.2.2017 12:48
 
Odpovědět
22.2.2017 12:47
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

Editováno 10.3.2017 20:00
 
Odpovědět
10.3.2017 19:59
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá 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. :)

Odpovědět
10.3.2017 22:25
TruckersMP vývojář
Avatar
Pavel Šrytr
Člen
Avatar
Odpovídá na Jan Lupčík
Pavel Šrytr:11.3.2017 8:59

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

&& $_POST ['email']
 
Odpovědět
11.3.2017 8:59
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá 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.

Odpovědět
11.3.2017 13:55
TruckersMP vývojář
Avatar
Pavel Šrytr
Člen
Avatar
Odpovídá na Jan Lupčík
Pavel Šrytr:11.3.2017 17:05

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

 
Odpovědět
11.3.2017 17:05
Avatar
Jan Lupčík
Tvůrce
Avatar
Odpovídá 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

Odpovědět
11.3.2017 17:31
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]

 
Odpovědět
11.3.2017 22:12
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?

 
Odpovědět
13.3.2017 8:31
Děláme co je v našich silách, aby byly zdejší diskuze co nejkvalitnější. Proto do nich také mohou přispívat pouze registrovaní členové. Pro zapojení do diskuze se přihlas. Pokud ještě nemáš účet, zaregistruj se, je to zdarma.

Zobrazeno 10 zpráv z 289.