IT rekvalifikace s garancí práce. Seniorní programátoři vydělávají až 160 000 Kč/měsíc a rekvalifikace je prvním krokem. Zjisti, jak na to!
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: Kontaktní formulář

V předchozím kvízu, Online test znalostí PHP, jsme si ověřili nabyté zkušenosti z kurzu.

Aktivity
Avatar
Jakub Klindera:25.8.2018 15:25

Zdravím,
mám problém s kontaktním formulářem

<?php
    mb_internal_encoding("UTF-8");
    $hlaska = '';
    if ($_POST)
    {
        if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
                        isset($_POST['email']) && $_POST['email'] &&
                        isset($_POST['zprava']) && $_POST['zprava'] &&
                        isset($_POST['rok']) && $_POST['rok'] == date('Y'))
        {
            $hlavicka = 'From:' . $_POST['email'];
            $hlavicka .= "\nMIME-Version: 1.0\n";
            $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
            $adresa = '[email protected]';
            $predmet = 'Nová zpráva z mailformu';
            $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
            if ($uspech)
            {
                $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
            }
            else
                $hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
        }
        else
            $hlaska = 'Formulář není správně vyplněný!';
    }

?>


<section>

    <h1>Kontaktujte nás</h1>

<?php
            if ($hlaska)
                echo('<p>' . $hlaska . '</p>');
        ?>

        <form method="POST">
            <table>
                <tr>
                        <td>Vaše jméno</td>
                        <td><input name="jmeno" type="text" /></td>
                </tr>
                <tr>
                        <td>Váš email</td>
                        <td><input name="email" type="email" /></td>
                </tr>
                                <tr>
                        <td>Aktuální rok</td>
                        <td><input name="rok" type="number" /></td>
                </tr>
                </table>
                <textarea name="zprava"></textarea><br />

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

Jakmile dám odeslat, tak mi to napíše:
Warning: mb_send_mail(): Failed to connect to mailserver at "localhost" port 25, verify your "SMTP" and "smtp_port" setting in php.ini or use ini_set() in C:\xampp\htdoc­s\profitaxi\con­tact.php on line 53

Děkuji

Zkusil jsem: Hledal jsem na google a nic nefungovalo.

 
Odpovědět
25.8.2018 15:25
Avatar
Jan Poláček
Tvůrce
Avatar
Odpovídá na Jakub Klindera
Jan Poláček:25.8.2018 17:59

Ahoj, není to tím, že nemáš nastavenej mailserver? Tím pádem PHP nevím, přes co to odeslat. Co jsem koukal, tak xampp má přímo sendmail, který stačí nastavit v php.ini
Koukal jsem tady: https://stackoverflow.com/…om-localhost

Nahoru Odpovědět
25.8.2018 17:59
Instrukce na adrese 0x77104f29 odkazovala na adresu paměti 0x00000014. S pamětí nelze provést operaci: written.
Avatar
Odpovídá na Jan Poláček
Jakub Klindera:25.8.2018 19:47

Každopádně, během tří dnů půjde web na hosting, tak bych pak nerad řešil, že to nefunguje, co jsem zjišťoval, tak google i seznam s tím může mít problém (otestováno na vlastní aplikaci ve WPF, která byla napsána v C#)

 
Nahoru Odpovědět
25.8.2018 19:47
Avatar
nekukej
Člen
Avatar
Odpovídá na Jakub Klindera
nekukej:25.8.2018 21:26

Myslím, že Google ani Seznam s tím nemá co dělat.
Pro odesílání mailů potřebuješ SMTP server, na který se nejdříve musíš připojit aby jsi mu mohl předst data k odeslání (mail).
V tvém případě ti aplikace vyhazuje warning, kvůli problému s přípojením na onen SMTP server. V nastavení php.ini máš nastaveno, aby se připojoval na localhost a port 25. Zkontroluj tedy jestli ti běží na localhostu a protu 25 SMTP server a tvoje aplikace se na něho může připojit.

Akceptované řešení
+20 Zkušeností
+2,50 Kč
Řešení problému
 
Nahoru Odpovědět
25.8.2018 21:26
Avatar
Ondřej Pech
Člen
Avatar
Ondřej Pech:26.8.2018 8:20

Doporučil bych nějaký Mailer (např. http://www.kutac.cz/…lani-emailu/) Řeší za tebe spoustu věcí :)

 
Nahoru Odpovědět
26.8.2018 8:20
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:26.8.2018 15:48

Viz nekukej.
Abys z php kodu vyrobil html stranku, musis jej spustit v php server.
Abys odeslal mail, musis ten text pustit pres mail server.
Php funkce mail zkusi poslat ten text na mail server, podle nastaveni. Default hleda smtp na portu 25. Pokud nenajde spusteny program na zasilani mailu vypise error.

Pokud to spoustis na localhostu (win), je pravdepodobne, ze mail server nemas spusteny, nebo nainstalovany.
Cili, bud je treba mail server spustit nebo doinstalovat a spustit. Nebo muzes vyuzit neci server, pokud vis, na jake adrese bezi, jaky port a mas prihlasovaci udaje, pokud prijima maily jen od registrovanych useru.
php.net/mail

ini_set ( "SMTP", "smtp-server.example.com" );
date_default_timezone_set('America/New_York');
mail($to, $subject, $message, $headers);
---
Changes required in sendmail.ini

smtp_server=smtp.gmail.com
smtp_port=587
error_logfile=error.log
debug_logfile=debug.log
[email protected]
auth_password=your-gmail-password
[email protected]

Changes required in php.ini

SMTP=smtp.gmail.com
smtp_port=587
sendmail_from = [email protected]
sendmail_path = "\"C:\xampp\sendmail\sendmail.exe\" -t"
;sendmail_path = "C:\xampp\mailtodisk\mailtodisk.exe"
 
Nahoru Odpovědět
26.8.2018 15:48
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 6 zpráv z 6.