NOVINKA: Získej 40 hodin praktických dovedností s AI – ZDARMA ke každému akreditovanému kurzu!
S účinností od 26. 3. jsme aktualizovali Zásady zpracování osobních údajů – doplnili jsme informace o monitorování telefonických hovorů se zájemci o studium. Ostatní části zůstávají beze změn.

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
Milan Turyna
Tvůrce
Avatar
Milan Turyna:2.11.2019 15:00

To ale znamená, že když to dáš bez portu tak server funguje, 404 není error který značí nefunkčnost serveru.

Error 404 je způsoben když nebyla nalezená žádná stránka. Nevím jakou má XAMPP strukturu adresářů ale asi /www (nevím to jistě) je hlavní adresář kde se dávají soubory které potom chcete zobrazit. Základně to načítá index.html nebo index.php pokud se to nezmění buď v configu a nebo v .htaccess tudíž aby se něco stalo tak musí být na /www vytvořen soubor index.php a nebo v .htaccess změněný hlavní soubor.

Odpovědět
2.11.2019 15:00
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Jaroslav Smrž
Tvůrce
Avatar
Odpovídá na Daniel Kalvoda
Jaroslav Smrž:2.11.2019 21:08

Jestli máš defaultně nastavený XAMPP, tak cesta je c:\xampp\htdocs. Pokud v tomto adresáři nemáš index nebo .htaccess, ale pouze další složku např. web, pak musíš napsat do adresy: localhost/web . Čísla portu za adresou si nevšímej, ten se dosazuje automaticky.

Odpovědět
2.11.2019 21:08
/* Life runs on code */
Avatar
Matouš
Člen
Avatar
Matouš:6.1.2020 13:20

Lekci jsem nyní jakžtakž absolvoval, ale nemám v některých věcech jasno:

1. proč je nad vším proměnná

$hlaska=´´;

2. proč ve složené podmínce s funkcí isset je vždy vlastně zopakována ta proměnná z $_POST:

isset($_POST['jmeno']) && $_POST['jmeno'] &&

... jak lze ten řádek přečíst?

Děkuji za odpověď.

 
Odpovědět
6.1.2020 13:20
Avatar
Jaromír Mayer:9.1.2020 6:19

Malá změna pro použití na webhostingu, který jinak webové formuláře hází do spamu. Změna spočívá v tom, že jsem z funkce mb_send_mail() vyjmul $_POST['email']) a nahradil proměnnou $message. A od té doby formulář funguje i na webhostingu, který používám.

<?php
    mb_internal_encoding("UTF-8");
    $hlaska = '';
    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'] &&
                        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";
            $message = 'Text zprávy:<br /><br />' . $_POST['zprava'];
            $adresa = 'jaromirm67@gmail.com';
            $predmet = 'Nová zpráva ze stránek Spolupromimoň.eu';
            $uspech = mb_send_mail($adresa, $predmet, $message, $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ý!';
    }
?>
 
Odpovědět
9.1.2020 6:19
Avatar
Milan Turyna
Tvůrce
Avatar
Milan Turyna:9.1.2020 12:57

A jaký používáš?

Odpovědět
9.1.2020 12:57
Řeš pouze to, co dokážeš ovlivnit.
Avatar
Patrik Pastor:23.8.2020 21:05

Hezky den, je nejaka moznost overeni ze funkce 'mb_send_mail' funguje zpravne?
Vypsal sem tedy uspesny slogan (Email byl úspěšně odeslán, brzy vám odpovíme.), ale v na mailu nic nevidim. Muj kod

<!DOCTYPE html>
<html>

<head>
    <meta charset="utf-8">
    <title>Kontaktní formulář</title>
</head>

<?php
mb_internal_encoding("utf-8");

if ($_POST) { //length of $_POST > 0
    if (
        isset($_POST['jmeno']) &&
        isset($_POST['email']) &&
        isset($_POST['zprava']) &&
        isset($_POST['rok']) && $_POST['rok'] == date('Y')
    ) {
        $header = 'From:' . $_POST['email'];
        $header .= "\nMIME-Version: 1.0\n";
        $header .= "Content-Type: text/html;";
        $header .= "charset=\"utf-8\"\n";
        $address = 'odeslaloseto@seznam.cz';
        $subject = 'Nová zpráva z mailformu';
        $isSent = mb_send_mail($address, $subject, $_POST['zprava'], $header);
        if ($isSent) {
            $output = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
        } else {
            $output = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
        }
    } else
        $output = 'Formulář není správně vyplněný!<br>';
}
?>

<body>
    <p>Můžete mě kontaktovat pomocí formuláře níže.</p>
    <?php
    if ($output)
        echo '<p>' . $output . '</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>
</body>

</html>

Nikde by nemela bych chyba protoze - jak sem napsal - se mi vypsal uspesny slogan (takze to proslo if podminkou), takze jak overit zda funkce "mb_send_mail" funguje, kdyz jsem nedostal testovy mail ani po 15 minutach?

 
Odpovědět
23.8.2020 21:05
Avatar
Odpovídá na Milan Turyna
Patrik Pastor:24.8.2020 22:38

Nevim proc v clanku nepadla ani zminka, ze pro posilani mailu v php (o cemz je cely tento clanek) je zapotrebi nakonfigurovany mail server. Musel jsem cely den googlit (viz muj predchozi komentar, kde mam spravny kod, dokonce vypise uspesnou hlasku, ale mail nikdy nedostanu), jak si nastavit postfix, nakofigurovat php.ini a umozit z mailu, z nehoz se odesila mail ("From:" v hlavicce) aby mohl byt pouzit aplikacemi tretich stran (php) (plati pro ucty od gmailu). Tohle ale moc neni pro zacatecniky a zabralo mi to celkem dost casu to vyhledat, tak bych pozdejsim ctenarum chtel jen upozornit na to, proc se vam nic neodesila -> nemate nakonfigurovany mail server. Pokud jste na linux (a pouzivate LAMP, potom -> https://stackoverflow.com/…ost/45125490#… , zde je dobre vysvetleni pro nastaveni postfixu), pokud jste na windows a pouzivate XAMPP, to nevim, windows nemam. Ale znova zduraznuju, ze to autor mohl prinejmensim zminit, ze je to nutne pro posilani php mailu funkci mail() nebo jinymi funkcemi.

Editováno 24.8.2020 22:41
 
Odpovědět
24.8.2020 22:38
Avatar
ed ita
Člen
Avatar
Odpovídá na Patrik Pastor
ed ita:3.10.2020 21:27

Ahoj, pro ty, co pouzivaji LAMP a chteji zprovoznit posilani mailu z vyse popsaneho v php-ku vytvoreneho formulare: me pomohl hodne tento navod: https://askubuntu.com/…8046/1132936 - pouziti ssmtp a gmail smtp server.

 
Odpovědět
3.10.2020 21:27
Avatar
Jaroslav Hušek:13.10.2020 20:55

Nevalí mi ani vlastní kód, ani stažený odsud, končím na chybě "Email se nepodařilo odeslat. Zkontrolujte adresu". Žádnou další chybovou hlášku nedostanu, jak mohu debugovat problém prosím?

 
Odpovědět
13.10.2020 20:55
Avatar
Outsider
Člen
Avatar
Outsider:17.10.2020 18:33

PROC MI PISE "FAILED TO CONNECT IN... ON LINE"?? Prvne mi to hlasilo ze nefunguje MB_INTERNAL_EN­CODING, to jsem si musel najit jinde ted ze nelze se pripojit nebo co a kdyz najedu na cislo LINE tak ze mb_send_mail nefunguje??

 
Odpovědět
17.10.2020 18:33
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.