Front-end Front-end
Probíhá výprodej HTML, JavaScript a Bootstrap. Slevy až 80 %
Vyšlehej si extra vědomosti! Až 100% bodů na prémiový obsah zdarma! Více zde

Lekce 8 - Kontaktní emailový formulář v PHP

Unicorn College Tento obsah je dostupný zdarma v rámci projektu IT lidem.
Vydávání, hosting a aktualizace umožňují jeho sponzoři.

V minulé lekci, Podmínky v PHP podruhé - přetypování, skládání a switch, jsme dokončili podmínky. Na dnešní PHP tutoriál máme slíbený kontaktní formulář, do kterého návštěvníci našich stránek napíší vzkaz a ten se nám odešle emailem. Jedná se o velmi užitečný webový doplněk, díky kterému nás mohou uživatelé našich stránek lépe kontaktovat.

HTML část

Jako vždy bude aplikace rozdělena na 2 části. V tomto případě ovšem budou obě v jednom souboru mailform.php. Je to z toho důvodu, abychom měli při zpracování dat z formuláře přístupný i formulář. Pokud uživatel zadá něco špatně, vypíšeme nad formulář chybovou hlášku.

HTML část bude tedy obsahovat formulář, který bude mít následující prvky:

  • Jméno - Jméno návštěvníka (abychom věděli kdo nám píše)
  • Emailová adresa - Emailová adresa návštěvníka (abychom mu mohli odpovědět)
  • Zpráva - Zpráva od uživatele
  • Antispam - Ochrana proti spamu

Kromě ochrany proti spamu asi není co vysvětlovat. Řekněme si tedy o spamu více.

Spam

Jakmile vložíte na internet nějakou stránku s formulářem, objeví se časem roboti, kteří do formuláře začnou psát reklamu. Důvod je prostý, formulář někam něco odesílá a když do něj vloží odkaz na nějaké služby (často půjčky nebo pornografii), část lidí na tu reklamu klikne a služby si koupí.

Proti spamu se dá velmi účinně bránit. K zabezpečení formulářů se používá tzv. Turingův test, známý spíše pod pojmem Captcha. Účelem testu je položit takovou otázku, na kterou zná odpověď jen člověk. První captchy často zobrazovaly text na obrázku a předpokládalo se, že obrázek umí přečíst jen člověk. Postupem času však spameři vyvinuli poměrně sofistikované OCR čtečky, které umí obrázky číst lépe, než lidé. Není ovšem nic jednoduššího, než položit nějakou otázku (nejlépe česky), kterou spamboti neumějí. Bohatě nám bude stačit např. "Zadejte aktuální rok".

Formulář

Založte si tedy nový projekt a můžeme začít. HTML kód stránky s formulářem by mohl vypadat např. takto:

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Kontaktní formulář</title>
    </head>
    <body>
        <p>Můžete mě kontaktovat pomocí formuláře níže.</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>

A výsledek:

Kontaktní formulář
localhost/mail­form.php

Formulář jsme vložili do tabulky, aby byly prvky hezky zarovnané. Dělá se to tak často, pokud chceme formulář rychle nastylovat. Všimněte si, že ve formuláři není vyplněný parametr action. Data se tedy odešlou na ten samý soubor, ve kterém je formulář.

PHP část

Na úplný začátek souboru vložíme PHP direktivu a pustíme se do programování:

<?php

?>

Validace

Každý formulář bychom měli zvalidovat. Validace je ověření, zda je správně vyplněný. Sice ještě neumíme ověřit, zda jsou v polích správné hodnoty, ale umíme zjistit, zda nejsou prázdná.

Kromě toho, že pole přišlo prázdné, je ještě jedna možnost - formulář se nemusel vůbec odeslat. S touto možností musíme počítat, jelikož máme zpracování i zobrazení ve stejném skriptu - uživatel mohl zatím jen zobrazit formulář a nic neodeslat. Z minulé lekce víme, že pokud napíšeme:

if ($_POST)

Provede se podmínka v případě, když pole není prázdné.

Dále bychom měli počítat i s tím, že se formulář neodeslal celý, ale jen jeho část. Potřebujeme tedy zjistit, zda v $_POST existují jednotlivé proměnné. K tomu v PHP slouží funkce isset().

POZOR! Mnoho začátečníků používá k ověření toho, zda se něco odeslalo, následující kód:

if ($_POST['jmeno'])
{
        // ...
}

To je ovšem špatně a pokud se formulář neodeslal, PHP vypíše ošklivou chybu, jelikož čteme z neexistující proměnné. Tito začátečníci si místo toho, aby kód opravili, vypnou výpis chyb v PHP. Později sem chodí a diví se, že jim něco nefunguje a nemohou chyby najít.

Když už jsme u nastavení chyb, tak musí být vždy takové, že jsou na lokálním serveru (na vašem počítači při testování) zapnuté a na produkci (na internetu) vždy vypnuté. Jen tak odhalíte při testování většinu problémů a na produkci vám nikdo díky viditelné chybové hlášce nebude napadat aplikaci. Chyby lze zapínat a vypínat v php.ini, někdy ovšem na produkci nemusíme mít k tomuto nastavení přístup a existuje k tomu nějaký přepínač v administrátorském rozhraní daného webhostingu.

Validace formuláře by mohla vypadat asi takto:

$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'))
        {
                // Sem přijde odeslání emailu
        }
        else
                $hlaska = 'Formulář není správně vyplněný!';
}

Celý kód je v podmínce, která kontroluje, zda je něco v poli $_POST. Pokud se nic neodeslalo, není co zpracovávat. Další složená podmínka kontroluje, zda byla odeslána jednotlivá pole a zda v nich je nějaký text. U roku samozřejmě kontrolujeme, zda je aktuální. Ve skriptu používáme proměnnou $hlaska, kam vložíme hlášku pro uživatele v případě, že se validace nepovedla. Tu později vypíšeme v HTML části skriptu.

Zpracování

Samotné odeslání emailu není složité. Slouží k tomu funkce mb_send_mail(), která narozdíl od starší funkce mail() podporuje UTF-8 kódování. K funkcím s prefixem mb_ se ještě dostaneme, nyní nám musí stačit, že pokud je chceme používat, často musíme na úplném začátku souboru nastavit kódování:

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

Přejděme dovnitř naší podmínky s validací a umístěme tam odeslání emailu a nastavení zprávy pro uživatele:

$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.';

Do několika proměnných si připravíme hlavičku, adresu, kam se má email odeslat (tu si samozřejmě nastavte na svou) a předmět. Jak vypadá hlavička je dané a nemusíte nad tím přemýšlet, podstatná je jen proměnná v prvním řádku, která určuje odesílatele emailu. Email potom vypadá jako že přišel z této adresy, i když ho odeslalo PHP z vašich stránek. Funkce mb_send_mail() vrací true pokud se odeslání podařilo a false pokud selhalo. Tuto hodnotu si uložíme do proměnné $uspech a nastavíme podle ní hlášku.

Úprava formuláře

Vraťme se k našemu formuláři a vložme těsně nad tag form další PHP sekvenci, ve které vypíšeme proměnnou $hlaska, pokud v ní něco je:

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

Hotovo. Váš formulář by měl nyní odesílat emaily a zobrazovat chybové hlášky. Musíte to ale vyzkoušet spíše tak, že si ho nahrajete někam na webhosting. V XAMPPu ve výchozím nastavení není odesílání emailů funkční, i když jde nastavit v konfiguračním souboru. Pokud máte s nastavením problémy, nevadí, prostě si formulář někam nahrajte (třeba na webhosting OneBit) a vyzkoušejte ho online.

Kontaktní formulář
localhost/mail­form.php

V příští lekci, Vylepšení kontaktního formuláře v PHP, formulář dokončíme. Pokud jste měli s nějakou částí problém, níže jsou zdrojové kódy ke stažení.


 

Stáhnout

Staženo 4691x (1.2 kB)
Aplikace je včetně zdrojových kódů v jazyce php

 

 

Článek pro vás napsal David Čápka
Avatar
Jak se ti líbí článek?
39 hlasů
Autor pracuje jako softwarový architekt a pedagog na projektu ITnetwork.cz (a jeho zahraničních verzích). Velmi si váží svobody podnikání v naší zemi a věří, že když se člověk neštítí práce, tak dokáže úplně cokoli.
Unicorn College Autor sítě se informační technologie naučil na Unicorn College - prestižní soukromé vysoké škole IT a ekonomie.
Předchozí článek
Podmínky v PHP podruhé - přetypování, skládání a switch
Všechny články v sekci
Základní konstrukce jazyka PHP
Miniatura
Následující článek
Vylepšení kontaktního formuláře v PHP
Aktivity (7)

 

 

Komentáře

Avatar
g1ml1
Člen
Avatar
g1ml1:5.10.2013 22:12

Na ten smtp server od upc neni potreba autentifikace?

 
Odpovědět 5.10.2013 22:12
Avatar
mariaanko
Člen
Avatar
mariaanko:5.10.2013 22:27

no ja mam UPC tuto v BA, ale take veci som nastavovat nemusel.
proste mam SMTP server na linuxe, na routri nastavene routovanie na internety a idem.
akurat je skoda, ze UPC ma staticku IP..v buducnosti rozmyslam nad Orange.

 
Odpovědět 5.10.2013 22:27
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na g1ml1
David Čápka:12.10.2013 11:40

Autentifikace by k ničemu nebyla, přeci vědí, kdo email posílá, když od nich máš přípojku.

Odpovědět 12.10.2013 11:40
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Juraj Mlich
Redaktor
Avatar
Juraj Mlich:13.10.2013 9:54

Keby užívateľ zadal do formulára 0 tak by sa podmienka (if($_POST['jme­no'])) vyhodnotila ako false a tým pádom by sa formulár ukázal ako nesprávne vyplnený, aj keď môže byť vyplnený správne. Nieje to chybné chovanie?

 
Odpovědět 13.10.2013 9:54
Avatar
Kit
Redaktor
Avatar
Odpovídá na Juraj Mlich
Kit:13.10.2013 9:56

Ty se snad jmenuješ "0"?

Odpovědět 13.10.2013 9:56
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Juraj Mlich
Redaktor
Avatar
Odpovídá na Kit
Juraj Mlich:13.10.2013 10:00

nie :)

 
Odpovědět 13.10.2013 10:00
Avatar
g1ml1
Člen
Avatar
Odpovídá na David Čápka
g1ml1:13.10.2013 19:07

Pravda, ale stejne mi to nefunguje (v .NETu).

 
Odpovědět 13.10.2013 19:07
Avatar
Salieri
Člen
Avatar
Salieri:15.10.2013 16:56

Ahoj,

Sorry na to co se zeptám, asi je to blbost ale přes to.

Dá se toto implementovat na svůj web a přes to do kolonky email odesílavat emaily?

Pač, do kodu psát všechny emaily kam to chci je nesmysl ne?

Odpovědět 15.10.2013 16:56
Hlavní zlo? **Školství a Matematika**!
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Salieri
David Čápka:18.10.2013 12:10

Nesmysl je nechávat si posílat vzkazy na více adres.

Odpovědět  +1 18.10.2013 12:10
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
tkola
Člen
Avatar
tkola:1.11.2013 18:59

Ahoj není oboje to samé principiálně ?
isset($_POST['jme­no']) && $_POST['jmeno']

 
Odpovědět 1.11.2013 18:59
Avatar
VelkyBubak
Člen
Avatar
VelkyBubak:2.11.2013 18:59

Principiálně až na tu jednu podmínku navíc...
Pokud to budu brát podle textu v článku, jde o rozdíl mezi cituji:
zda byla odeslána jednotlivá pole a zda v nich je nějaký text.

 
Odpovědět 2.11.2013 18:59
Avatar
relycanx
Člen
Avatar
relycanx:17.11.2013 2:33

V minulosti jsem tu někde četl, že by se dva jazyky neměly v jednom souboru sejít, ale tyto mini PHP skripty mezi HTML jsou vyjímky?

 
Odpovědět 17.11.2013 2:33
Avatar
Odpovídá na relycanx
Neaktivní uživatel:17.11.2013 7:15

Rozhodně ne. Nikdy to nekombinuj, je to cesta do pekla.

Odpovědět  +1 17.11.2013 7:15
Neaktivní uživatelský účet
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:17.11.2013 7:34

Nikdy neříkej nikdy :)

Když píšu viewer, tak běžně mám v PHP Heredoc s HTML.

Odpovědět 17.11.2013 7:34
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:17.11.2013 8:40

Však ty víš, jak to myslím. :)

Odpovědět 17.11.2013 8:40
Neaktivní uživatelský účet
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:17.11.2013 8:54

Já jen, že variant je spousta. Například verzi z článku
<?php
if ($hlaska)
echo('<p>' . $hlaska . '</p>');
?>
se docela vyhýbám, místo ní obvykle použiji
<?php
if ($hlaska)
echo("<p>$hlas­ka</p>");
?>
nebo v OOP, pokud je $hlaska objektem, rovnou
<?php
echo $hlaska;
?>

Odpovědět 17.11.2013 8:54
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:17.11.2013 9:04

Já se obvykle vyhýbám celého echa. Logiku a prezentační část se snažím co nejvíc oddělit.

Odpovědět 17.11.2013 9:04
Neaktivní uživatelský účet
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na relycanx
David Čápka:17.11.2013 9:13

Opravdu očekáváš v prvních dílech seriálu architekturu? Dále je velmi detailně popsáno jak se to odděluje a i proč se to odděluje a kdy.

Odpovědět  +1 17.11.2013 9:13
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:17.11.2013 9:26

Však v tom posledním příkladu mám logiku a prezentační část úplně oddělenou. Ideální stav.

Odpovědět 17.11.2013 9:26
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:17.11.2013 9:28

V tom posledním ano. Echo ale používám VĚTŠINOU jenom jako jednoduchý test.

Odpovědět 17.11.2013 9:28
Neaktivní uživatelský účet
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:17.11.2013 9:42

Někdy přece musíš vypsat text i na výstup. Stačí sice jedno echo na celou aplikaci, ale alespoň jedno tam být musí.

Odpovědět 17.11.2013 9:42
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:17.11.2013 10:03

Však jsem ještě zdůraznil většinou. :)

Odpovědět 17.11.2013 10:03
Neaktivní uživatelský účet
Avatar
Kit
Redaktor
Avatar
Odpovídá na Neaktivní uživatel
Kit:17.11.2013 10:06

Jasně, do tříd echo nedávám a mimo třídy nemívám víc než 30 řádek.

Odpovědět 17.11.2013 10:06
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Odpovídá na Kit
Neaktivní uživatel:17.11.2013 10:08

No právě.

Odpovědět 17.11.2013 10:08
Neaktivní uživatelský účet
Avatar
relycanx
Člen
Avatar
Odpovídá na David Čápka
relycanx:17.11.2013 14:16

Šak jsem se jen ptal, klid. Jinak ty články máš moc pěkný a čtu si je celý, akorát jsem ještě tak daleko zatím nedošel.

 
Odpovědět 17.11.2013 14:16
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:29.12.2013 23:48

jenom takový dotaz nestačilo by ?

isset($_POST["jmeno"])

místo

isset($_POST["jmeno"]) && $_POST["jmeno"]
Editováno 29.12.2013 23:48
 
Odpovědět 29.12.2013 23:48
Avatar
studnicka.ji
Člen
Avatar
studnicka.ji:30.12.2013 11:27

a ještě jedna vec kdy se zobrazí tato hláška : $hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';

 
Odpovědět 30.12.2013 11:27
Avatar
Kit
Redaktor
Avatar
Odpovídá na studnicka.ji
Kit:30.12.2013 11:31

Nejlépe bude, když si ji uložíš do session, zobrazíš po přesměrování a tam zase smažeš.

Odpovědět 30.12.2013 11:31
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na studnicka.ji
David Čápka:30.12.2013 11:33

Nestačilo, to by tam mohl někdo zadat prázdné jméno.

Odpovědět 30.12.2013 11:33
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
mapak
Člen
Avatar
mapak:9.1.2014 12:33

Ahoj! Předně díky za výborný seriál! Příklady zapisuji v NetBeans IDE 7.4 a tomu vadí přímé přistupování k superglobálním proměnným (v tomto případě $_POST). Použil jsem tedy funkci filter_input(), ale nikde jsem nenašel nějaký přehledný souhrn na téma ošetřování vstupních polí. Jestli jsem to správně pochopil, můžu třeba formulářové pole "email" ošetřit už na úrovni HTML parametrem "required", pak pomocí filter_input() při přístupu k superglobální proměnné a nakonec ještě nějakou vlastní podmínkou v php. Jaká metoda je nejúčinnější? Má smysl vícenásobná kontrola? Budu rád za všechny rady nebo odkazy, kde takové rady najdu. Díky!

 
Odpovědět 9.1.2014 12:33
Avatar
Kit
Redaktor
Avatar
Odpovídá na mapak
Kit:9.1.2014 12:45

Kontrola vstupních dat se (nepovinně) dělá na úrovni formuláře Javascriptem a potom až v modelu (povinně) při ukládání dat do databáze.

Odpovědět  +2 9.1.2014 12:45
Vlastnosti objektů by neměly být veřejné. A to ani prostřednictvím getterů/setterů.
Avatar
Dominik Čoupek:26.1.2014 15:37

Ahoj, kdybych html část a php část chtěl oddělit, jak by to bylo s proměnými?
Díky za odpověď. :-)

 
Odpovědět  ±0 26.1.2014 15:37
Avatar
vfsdfsdfdsf
Člen
Avatar
vfsdfsdfdsf:6.2.2014 19:23

Ahoj, mám malý dotaz, ikdyž na něj asi znám odpověď, raději se zeptám zkušenějších:

Platí v PHP že && a || je zkrácené vyhodnocování AND a OR?
V článku jsem o tom nenašel zmínku... ale asi to tak bude, protože když máme

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

tak kdyby to nebylo zkrácené vyhodnocování, tak pravá strana by hodila chybu v případě, že by ta proměnná nebyla definovaná...

Při zkráceném vyhodnocení by se zjistilo, že levá neplatí a tím pádem už nemusí vyhodnocovat pravou. To v PHP funguje. Říkám to správně?

 
Odpovědět 6.2.2014 19:23
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Dominik Čoupek
David Čápka:28.2.2014 12:37

Použil bys funkci require pro vložení šablony, proměnné by v ní byly normálně přístupné.

Odpovědět 28.2.2014 12:37
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na vfsdfsdfdsf
David Čápka:28.2.2014 12:37

Jo, mělo by to fungovat jak říkáš.

Odpovědět 28.2.2014 12:37
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Martin Píštěk (Denir):13.3.2014 23:21

Ahoj, rád bych se zeptal na validaci formuláře, na začátku je uvedená proměnná $hlaska = ''; tato je použita až na konci skriptu. Chápu to dobře, že na začátku je bez hodnoty? jaký to má důvod? Díky moc

 
Odpovědět 13.3.2014 23:21
Avatar
Odpovídá na Martin Píštěk (Denir)
Martin Konečný (pavelco1998):13.3.2014 23:29

Ona hodnotu jakože má, ale je to prázdný řetězec. Na začátku se deklaruje, aby pak PHP neházelo chybu, že proměnná neexistuje.

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

Právě kvůli této podmínce je potřeba, aby ta proměnná existovala.
V ifu se hodnota převede na datový typ boolean (pravdivostní hodnota), kde se prázdný řetězec převede na FALSE.

Odpovědět  +1 13.3.2014 23:29
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
csr123
Člen
Avatar
csr123:31.5.2014 12:10

Prosím vás neviete prečo keď to hodím na hosting a potom to tam hodím cez <iframe tak mi zmizne tlačítko Odoslať?

 
Odpovědět 31.5.2014 12:10
Avatar
csr123
Člen
Avatar
csr123:1.6.2014 10:24

Moje chyba mel sem nastavenej zlej height :)

 
Odpovědět 1.6.2014 10:24
Avatar
zacm
Člen
Avatar
zacm:24.7.2014 20:52

ptám se možná blbě ale na co je tam to jméno když se na mail nepošle.
jinak formulář funguje ale vadí mi že se nepošle to jméno neboť se uživatel který použije mailform a klade nějaký dotaz nebo mi píše zprávu v domnění že už zadal jméno nepodepíše

Editováno 24.7.2014 20:57
 
Odpovědět 24.7.2014 20:52
Avatar
xxluky
Člen
Avatar
xxluky:31.8.2014 9:45

Zdravím, za boha nemohu přijít na to, jak tento formulář rozdělit na dva soubory html a php aby stále fungovala stejná kontrola, validita údajů. Může mi někdo pomoct?

 
Odpovědět 31.8.2014 9:45
Avatar
jadana
Člen
Avatar
jadana:31.8.2014 10:08

Já teda nevím, ale všichni tu řešíte jak si poslat mail z localu.
See www.toolheap.com/…oolSetup.exe
Je to velice šikovná utilitka pro Widle, která zachytává odesílané maily do txt. souboru na disk.
Třeba se to někomu hodí, používám to už dlouho

 
Odpovědět  +1 31.8.2014 10:08
Avatar
Pavel Junek
Redaktor
Avatar
Odpovídá na jadana
Pavel Junek:31.8.2014 11:24

Sorry, ja nechtel dat i--; ja chtel kliknoutna ten odkaz :(

 
Odpovědět 31.8.2014 11:24
Avatar
Michal Kuba
Redaktor
Avatar
Michal Kuba:2.9.2014 20:48

Když jsem si to zkusil nahrát na web jako soubor php a naodkazoval jsem na něj v menu, že jsem místo kontakt.html to změnil na kontakt2.php a ten soubor jsem vložil do kořenového adresáře, vyskočilo mi okno abych zvolil, kam chci soubor kontakt2.php uložit. Co s tím?

 
Odpovědět 2.9.2014 20:48
Avatar
jadana
Člen
Avatar
Odpovídá na Michal Kuba
jadana:3.9.2014 22:16

to se nenahrává na web, ale jen na tvúj lokál (widle). Když to spustíš, tak se tě zeptá, kam ukládat zachycené zprávy. Je to běžnej txt soubor, kde vidíš co se odeslalo... See manuál
IMHO, na widle je to super, bo na *NIXu si ty maily vždy nějak ošidím :)

 
Odpovědět 3.9.2014 22:16
Avatar
jadana
Člen
Avatar
Odpovídá na Pavel Junek
jadana:3.9.2014 22:17

njn, stane se, alespo%n mám nějaký ten negativní bod :-)

 
Odpovědět 3.9.2014 22:17
Avatar
Michal Kuba
Redaktor
Avatar
Odpovídá na jadana
Michal Kuba:4.9.2014 8:09

Takže jak to mám uvést do chodu? Nahrát to kam, aby se to zobrazilo?

 
Odpovědět 4.9.2014 8:09
Avatar
jadana
Člen
Avatar
Odpovídá na Michal Kuba
jadana:5.9.2014 11:28

normálně nainstaluješ na widle jako jiný programy, pak spustíš, a nastavíš si v option, kam ti bude zachytávat a ukládat maily.

 
Odpovědět 5.9.2014 11:28
Avatar
danhill
Člen
Avatar
Odpovídá na studnicka.ji
danhill:3.11.2014 18:30

Kdy se zobrazí : "Email se nepodařilo odeslat. Zkontrolujte adresu." ???
Tak by mě taky zajímalo :)

Editováno 3.11.2014 18:31
Odpovědět 3.11.2014 18:30
Nikdy není tak zle, aby nemohlo být ještě hůře.
Avatar
kopecky.alesh:2.12.2014 14:48

Pokouším se odstranit chybu, kdy mi do emailu z formuláře chodí místo znaků s diakritikou otazníky. Mám kódování windows-1250. Když do upravím funkc následovně: mb_internal_en­coding (win-1250);
tak php zahlásí chybu:
Warning: mb_internal_en­coding(): Unknown encoding "WIN-1250"
Znamená to, že ve funkci mb_internal_en­coding() nemohu použít kódování windows-1250, nebo mám chybu jinde?
Jak tedy češtinu jinak opravit?
Díky

 
Odpovědět 2.12.2014 14:48
Avatar
kopecky.alesh:2.12.2014 14:54

Vyřešeno.

 
Odpovědět 2.12.2014 14:54
Avatar
filip.skrivanek:29.12.2014 12:45

Zdravim, mám problem, když vyplnim formulář tak ma napíše error Email se nepodařilo odeslat. Zkontrolujte adresu. Na řádku : $uspech = mb_send_mail($a­dresa, $predmet, $_POST['zprava'], $hlavicka); Mohl mě mě někdo prosím poradit. Zkoušel jsem prvně z lokálního serveru později i webhostiny - moxo.cz nebo hostinger.cz, předem děkuji za jakoukoliv odpověd.
PS: do $adresa mam vstup svojí emailovou adresu.

 
Odpovědět 29.12.2014 12:45
Avatar
Odpovídá na filip.skrivanek
filip.skrivanek:29.12.2014 12:50

Warning: mb_send_mail() has been disabled for security reasons in /home/u15602339­9/public_html/ma­ilform.php on line 35. Mě napsalo jako reason proč to nejde. není to chyba webhostingu ? nemusí se tato funkce nějak zapnout ?

 
Odpovědět 29.12.2014 12:50
Avatar
Daniel Vítek
Tým ITnetwork
Avatar
Odpovídá na filip.skrivanek
Daniel Vítek:29.12.2014 12:59

Vždyť to tam máš napsaný .. Funkce mb_send_mail byla zakázána z bezpečnostních důvodů ...

Odpovědět  +1 29.12.2014 12:59
Na síti působím už pěknou řádku let. Pokud budeš něco potřebovat, písni mi, pokusím se ti poradit :)
Avatar
Ori
Člen
Avatar
Odpovídá na filip.skrivanek
Ori:29.12.2014 15:46

skús ju prepísať len na mail()

 
Odpovědět 29.12.2014 15:46
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na filip.skrivanek
David Čápka:29.12.2014 15:50

Na freehostingu většinou posílat emaily nemůžeš, stejně jako nemůžeš používat spoustu dalších věcí...

Odpovědět  +2 29.12.2014 15:50
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na filip.skrivanek
Josef Kuchař - Pepa489:29.12.2014 21:36

Zkus webzdarma, tam ti to fungovat bude, ale mají tam starší verzi php

Odpovědět  -2 29.12.2014 21:36
2x piš, jednou debuguj
Avatar
filip.skrivanek:30.12.2014 8:10

Aha, moc děkuji všem za odpovědi.

 
Odpovědět 30.12.2014 8:10
Avatar
media
Člen
Avatar
media:15.1.2015 1:21

Zdravím, můžete mi poradit. Všechno jsem udelal jak ma byt. Dokonce po nahraní formulare na hosting a vyplneni vse probehlo v pohode. Akorat mam dvě věci. Za prve mi nic na email nepříde :-( i když ho mam v kodu napsany spravne a za druhe kdyz dam odeslat ve formulari tak me to vystreli na strance uplne nahoru a pokazde musim rolovat dolu na stranku abych se podival co probehlo. Jak to vyřešit. Diky

 
Odpovědět 15.1.2015 1:21
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na media
tomasmanhal:15.1.2015 1:34

Některé free hostingy blokují odchozí maily ze stránek umístěných na jejich serverech. Takže ten první problém může být v tom. Jinak se bez tvého zdrojového kódu neobejdeme.

Odpovědět 15.1.2015 1:34
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
media
Člen
Avatar
media:15.1.2015 1:37

První věc jsem již vyrešil, je divné že to odesíla a doručuje hned na emaily tipu seznam.cz, yahoo.com a nedoručí to vubec na email soukromé domény zaregistrovane na wedos. Co se druhe věci týče kde můžu nahrat zdrojový kod.

 
Odpovědět 15.1.2015 1:37
Avatar
silhavymiroslav:24.2.2015 8:20

Nějak si nevím rady s přidáním informací v přijímaném emailu. Potřeboval bych přidat informace jmeno, mesto a vyber. Vubec nevim kam to zapsat aby se mi zobrazili všechny tři informace vyplněné ve formuláři. Prosím o radu. Email mi chodí ale vždy jen s jednou informací.

<?php
mb_internal_en­coding("UTF-8");
$hlaska = '';
if ($_POST) // V poli _POST něco je, odeslal se formulář
{
if (isset($_POST['jme­no']) && $_POST['jmeno'] &&
($_POST['email']) && $_POST['email'] &&
($_POST['mesto']) && $_POST['mesto'] &&
($_POST['vyber']) && $_POST['vyber'] )
{
$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 webu';
$uspech = @mail($adresa, $predmet, $_POST['vyber'], $hlavicka);
}
}
?>

<div id="pravy_down">
<h4 style="padding-top: 4px;">Máte zájem o naše služby?
Zavoláme Vám</h4>
<form method="POST" action="<?echo $_SERVER["PHP_SEL­F"]?>">
<input name="jmeno" type="text" value="Jméno a příjmení" class="text_form" />
<input name="email" type="email" value="Email" class="text_form" /></td>
<input name="mesto" type="text" class="text_form" value="Město nebo obec" />
<select class="text_form" name="vyber" size="1">
<optgroup label="vyber službu">
<option value="internet" selected>Internet
<option value="televi­ze">Televize
<option value="telefon">Te­lefon
<option value="servis_pc">Ser­vis a oprava počítačů
<option value="ostatní">Os­tatní
</optgroup>
</select>
<input name="odeslat" type="submit" class="botom_form" value="Kontaktujte nás" />
</form>
</div>
díky za radu.

 
Odpovědět 24.2.2015 8:20
Avatar
IT Man
Redaktor
Avatar
Odpovídá na silhavymiroslav
IT Man:24.2.2015 13:16

Příště, prosím, použij tlačítko pro přidání kódu. :)

Dá se to udělat nějak takto:

$prijateInformace = "<b>Jméno a příjmení:</b> " . $_POST['name'] . "<br />" .
"<b>Email:</b> " . $_POST['email'] . "<br />" .
"<b>Město:</b> " . $_POST['mesto'] . "<br />" .
"<b>Služba:</b> " . $_POST['vyber'];

Nějak takto se to dá udělat, pokud budeš chtít si to upravit, uprav a přidání informací je na tobě. Doufám, že to z toho poznáš. :)

P.S. Nezapomeň si upravit odesílání E-mailu.

$uspech = @mail($adresa, $predmet, $prijateInformace, $hlavicka);
Odpovědět 24.2.2015 13:16
Cokoliv a kdokoliv může jednou uspět.
Avatar
Odpovídá na IT Man
silhavymiroslav:24.2.2015 13:24

Děkuji moc, funguje.:)
A omlouvám se za ten kod.;)

 
Odpovědět  +1 24.2.2015 13:24
Avatar
Martin
Člen
Avatar
Martin:1.3.2015 0:42

Mám internet od O2 a píše mi to že potřebuji nějaké oprávnění

Warning: mb_send_mail(): SMTP server response: 530 Authentication required in F:\Programy\wamp\www\web\formularOdeslat.php on line 18

Co s tím ?

Editováno 1.3.2015 0:43
 
Odpovědět 1.3.2015 0:42
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na Martin
tomasmanhal:1.3.2015 1:24

Na localhostu si tuhle funkci nevyzkoušíš, pokud nemáš rozjetý vlastní emailový server. Proto Tě to směřuje na vytvoření SMTP u O2. Mám pocit, že XAMPP obsahuje něco jako simulátor odesílání emailů, "fake sendmail". Lze instalovat i samostatně. ale nikdy jsem to nezkoušel.

Případně najdi freehosting, kde si tyhle srandy budeš moci testovat a kde bude funkce send_mail povolena.

Odpovědět 1.3.2015 1:24
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
OZman
Člen
Avatar
Odpovídá na IT Man
OZman:1.4.2015 19:30

Mám dotaz jak mám napasovat do toho formuláře validací jednotlivých nebo vybraných polí?
třeba ve stylu

if(empty($_jmeno)){
                $error_messages['jmeno'] = 'Pole Jméno je povinné.';
        }

        if(!preg_match('/^[a-zA-Z0-9_.+-][email protected][a-zA-Z0-9-]+\.[a-zA-Z0-9-.]+$/', $_email)){
                $error_messages['email'] = 'Pole E-mail má chybný formát.';
        }
 
Odpovědět 1.4.2015 19:30
Avatar
Odpovídá na OZman
Martin Konečný (pavelco1998):1.4.2015 19:51

Popisuji to v seriálu pro začátečníky v PHP v části "Příliš velké větvení", viz

http://www.itnetwork.cz/php/tipy-dil1

Odpovědět 1.4.2015 19:51
Aktuálně připravuji browser RPG, FB stránka - https://www.facebook.com/AlteiraCZ
Avatar
OZman
Člen
Avatar
OZman:2.4.2015 11:37

OK dík velmi helpfull, ale potřebuji ještě odeslat formulář na více adres

$adresa1 = '[email protected]';
$adresa2 = '[email protected]';
Editováno 2.4.2015 11:38
 
Odpovědět 2.4.2015 11:37
Avatar
Odpovídá na OZman
Michal Šmahel:2.4.2015 11:42

Odděl je čárkou.

Odpovědět 2.4.2015 11:42
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
OZman
Člen
Avatar
Odpovídá na Michal Šmahel
OZman:2.4.2015 13:47

Děkuji moc ještě mám dotaz na poslání tohodle v tabulce, půjde to nějak spolehlivě?

$prijateInformace = "<b>Jméno a příjmení:</b> " . $_POST['name'] . "<br />" .
 "<b>Email:</b> " . $_POST['email'] . "<br />" .
 "<b>Město:</b> " . $_POST['mesto'] . "<br />" .
 "<b>Služba:</b> " . $_POST['vyber'];
 
Odpovědět 2.4.2015 13:47
Avatar
Odpovídá na OZman
Michal Šmahel:2.4.2015 15:09
$prijateinformace = "
    <table>
        <tr>
            <td><strong>Jméno a příjmení:</strong></td><td>" . $_POST['name'] . "</td>
        </tr>
        <tr>
            <td><strong>E-mail:</strong></td><td>" . $_POST['email'] . "</td>
        </tr>
        <tr>
            <td><strong>Město:</strong></td><td>" . $_POST['mesto'] . "</td>
        </tr>
        <tr>
            <td><strong>Služba:</strong></td><td>" . $_POST['vyber'] . "</td>
        </tr>
    </table>"

Nevím proč to nenecháš takhle, ale takhle by to bylo s tabulkou.

Odpovědět 2.4.2015 15:09
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Odpovídá na Michal Šmahel
Michal Šmahel:2.4.2015 15:14

Na konci mi chybí středník, takže takto:

$prijateinformace = "
    <table>
        <tr>
            <td><strong>Jméno a příjmení:</strong></td><td>" . $_POST['name'] . "</td>
        </tr>
        <tr>
            <td><strong>E-mail:</strong></td><td>" . $_POST['email'] . "</td>
        </tr>
        <tr>
            <td><strong>Město:</strong></td><td>" . $_POST['mesto'] . "</td>
        </tr>
        <tr>
            <td><strong>Služba:</strong></td><td>" . $_POST['vyber'] . "</td>
        </tr>
    </table>";
Odpovědět 2.4.2015 15:14
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
OZman
Člen
Avatar
Odpovídá na Michal Šmahel
OZman:2.4.2015 22:29

Dík, ale tohle mě v tom scriptu moc nejde, to už jsme zkoušel...

 
Odpovědět 2.4.2015 22:29
Avatar
Odpovídá na OZman
Michal Šmahel:2.4.2015 22:48

Tak tu tabulku nepoužívej. To snad raději udělej pomocí marginu.

Odpovědět 2.4.2015 22:48
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
martin.pscolka:22.5.2015 0:17

Caute, mam dotaz ohledne PHP posilani e-mailů...níže uvedený html kod, obsahuje vyse uvedeny kod pro odesilani e-mailu a nefunguje. Mám ho uložený na PHP.cz, kde by fungovat mel. Vás stazeny kod mi tam funguje. Prosím zkuste se na to podívat a poradit, proč mi to nefuguje. Díky moc
PS: e-mail prijemce je schvalne vymazan.
<?php
mb_internal_en­coding("UTF-8");

$hlaska = '';
if ($_POST) // V poli _POST něco je, odeslal se formulář
{
if (isset($_POST['jme­no']) && $_POST['jmeno'] &&
isset($_POST['e­mail']) && $_POST['email'] &&
isset($_POST['zpra­va']) && $_POST['zprava'] )
{
$hlavicka = 'From:' . $_POST['email'];
$hlavicka .= "\nMIME-Version: 1.0\n";
$hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
$adresa = '[email protected]';
$predmet = 'Zpráva z testovacího webu';
$uspech = mb_send_mail($a­dresa, $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ý!';
}

?>
<!DOCTYPE html>
<html lang="cs-cz">

<head>
<meta charset="utf-8" />
<link rel="stylesheet" href="styl.css" type="text/css" />
</head>

<body>
<header>
<nav>
<ul>
<li>Domů</li>
<li class="aktivni">Kon­takt</li>
<li>Dovednosti</li>
</ul>
</nav>
</header>

<article>
<div id="centrovac">
<section>
<p>Můžete mě kontaktovat pomocí formuláře níže.</p>

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

<form method="POST">
<table>
<tr>
<td>Vaše jméno</td>
<td><input name="jmeno" type="text" /></td>
</tr>
<tr>
<td>Vaše e-mailová adresa</td>
<td><input name="email" type="email" /></td>
</tr>
</table>
<textarea name="zprava"></tex­tarea>

<input type="submit" value="Odeslat" />
</form>
</section>
<div class="cistic"></div>
</div>
</article>
<footer>
</footer>
</body>
</html>

Editováno 22.5.2015 0:21
 
Odpovědět 22.5.2015 0:17
Avatar
Danny
Člen
Avatar
Odpovídá na martin.pscolka
Danny:22.5.2015 0:43

ahoj, jsou tam tři chyby:

mb_internal_encoding("UTF-8");

ve slově encoding máš pomlčku
pak jak voláš hlášku, tak tam nemají být tečky
<?php
if ($hlaska)
echo($hlaska);
?>

a pak další překlep v ukončení tagu </textarea>

Editováno 22.5.2015 0:44
 
Odpovědět 22.5.2015 0:43
Avatar
Danny
Člen
Avatar
Odpovídá na martin.pscolka
Danny:22.5.2015 0:52

koukám že těch překlepů je tam víc...projdi si to, máš tam hodně ve slovech pomlčky uprostřed, pak už by to mělo být v pořádku

PS: nechápu jednu věc a to tu, že když sem ten kus kódu vložím,a bych ti ukázal kde máš chyby, tak to tady ty pomlčky vymaže a nejsou ty chyby vidět, ale když jsem to zkopíroval do editoru, tak mi tam ty pomlčky vyskočili :)

Editováno 22.5.2015 0:54
 
Odpovědět 22.5.2015 0:52
Avatar
Jan Vargovský
Redaktor
Avatar
Odpovídá na Danny
Jan Vargovský:22.5.2015 1:08

Bilé znaky, to už tu je dlouho :)

 
Odpovědět  +1 22.5.2015 1:08
Avatar
Danny
Člen
Avatar
Odpovídá na Jan Vargovský
Danny:22.5.2015 1:12

Aha, tak to jsem nevěděl, zase tak dlouho tu nejsem :) díky

 
Odpovědět 22.5.2015 1:12
Avatar
Odpovídá na Danny
martin.pscolka:22.5.2015 16:17

@ Danny - Díky za reakci, pořád jsem hledal ty pomlčky, které jsi zminoval, ale nikde nenašel. Ale jakmile jsem muj text zkopiroval do editoru, tak se tam objevily. Asi chyba znakové sady, kazdopadne je v kodu normalne nemam...Jinak odstranil jsem ty tečky a porad to nefunguje. Vsiml jsem si jednoho problemu, kdyz zanechám ten původní kod níže:

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

Ať odstraním tečky nebo ne, pořád to nefunguje. Ale když nechám ve výše uvedeném kodu '<p>' '</p>', tak se mi zobrazuje pulka te hlasky jako text v prohlizeci. Nemůže to mít naváznost ve stylu? Zasílám ještě kod k náhledu:
body {
background: url('obrazky/a­.png') #1c2228;
margin: 73px 0px 0px 0px;
font: 14px Verdana;
min-width: 960px;
}

h2, h3, h4, h5, h6 {
text-align: center;
color: black;
font-family: Arial;
text-shadow: 3px 3px 7px #666666;
}

p {
text-align: center;
}

h2 {
font-size: 1.7em;
}

h1 {
font-size: 2em;
font-weight: normal;
color: white;
text-align: center;
text-shadow: 2px 2px 1px #0a294b;
}

nav ul {
margin: 0px;
list-style-type: none;
}

nav ul li {
float: left;
padding: 0px 25px;
margin: 0 5px;
font-size: 17px;
height: 73px;
line-height: 4.3em;
}

nav ul li:hover, .aktivni {
background: url('obrazky/g­.png');
box-shadow: 0px 0px 5px black;
}

nav a {
color: white;
text-decoration: none;
}

.centrovany {
text-align: center;
}

#centrovac {
margin: 0px auto;
width: 960px;
}

header {
height: 73px;
position: fixed;
top: 0px;
background: url('obrazky/a­.png') #1c2228;
width: 100%;
}

article {
background: url('obrazky/f­.png') #009aca;
padding: 30px 0px;
}

article header {
width: 250px;
float: left;
position: static;
background: none;
}

article section {
width: 666px;
float: left;
background: white;
border: 2px solid #006797;
box-shadow: 2px 2px 7px #1c2228;
padding: 20px;
}

footer {
height: 40px;
color: white;
margin: 20px 0 0 30px;
}

footer a {
color: #ffbb00;
text-decoration: none;
}

.cistic {
clear: both;
}

.vlevo {
float: left;
}

#dovednosti td {
width: 33%;
padding: 10px;
vertical-align: top;
border: 1px solid gray;
}

#dovednosti {
border-collapse: collapse;
}

#reference img {
border: 1px solid gray;
padding: 6px;
box-shadow: 3px 3px 6px #999999;
margin-right: 6px;
}
#panel, #flip {
padding: 5px;
text-align: center;
background-color: #D0DCDD;
border: solid 1px #c3c3c3;
}

#panel {
padding: 50px;
display: none;
}

Jinak kdyz zmacknu tlacitko odeslat, tak se mi ani nespusti vypis hlasek, ze se neco stalo, pouze se aktualizuje stranka.

Díky moc všem za rady.

 
Odpovědět 22.5.2015 16:17
Avatar
Danny
Člen
Avatar
Odpovídá na martin.pscolka
Danny:22.5.2015 18:08

Pokud tam máš ty značky tak tečky mít musíš, ale když tam budeš vypisovat jenom proměnou tak tam být nesmí...mě to fungovalo naprosto v pohodě...všude oprav pomlčky které tam jsou navíc a měl o by to být v pohodě.

 
Odpovědět 22.5.2015 18:08
Avatar
Tomáš123
Člen
Avatar
Odpovídá na martin.pscolka
Tomáš123:22.5.2015 21:09

Na treťom riadku použi zápis:

echo("<p>$hlaska</p>");

A žiadne bodky nemusíš riešiť.

Odpovědět  +2 22.5.2015 21:09
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
martin.pscolka:22.5.2015 23:00

Danny: A tobe fungoval ten mnou vložený kod? V tom, případě, nechápu proč mi nefunguje...

 
Odpovědět 22.5.2015 23:00
Avatar
Odpovídá na martin.pscolka
Michal Šmahel:22.5.2015 23:43

Tobě nefunguje výpis informační zprávý (hlášky)??

Odpovědět 22.5.2015 23:43
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
martin.pscolka:23.5.2015 0:04

Myslis na serveru kde to mam ulozene nebo v editoru?

 
Odpovědět 23.5.2015 0:04
Avatar
Odpovídá na martin.pscolka
Michal Šmahel:23.5.2015 0:15

Popiš mi prosím tvůj problém a zkusíme to vyřešit.

Odpovědět 23.5.2015 0:15
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
martin.pscolka:23.5.2015 0:30

Problém je uvedený v příspěvku výše. Jde o to, že výše uvedený kod neodesílá e-maily. Stránky mám uložené na serveru PHP5.cz a je tam povoleno odesíláni e-mailů. Kod, který je ke stazeni na techto strankach mi tam funguje normalne. Ten kod je pouze vlozeny a upraveny v mem kode uvedenm vyse.

 
Odpovědět 23.5.2015 0:30
Avatar
Odpovídá na martin.pscolka
Michal Šmahel:23.5.2015 1:47

V této podobě mi to funguje.

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

$hlaska = "";
// V poli _POST něco je, odeslal se formulář
if ($_POST) {
    if (isset($_POST['jmeno']) && $_POST['jmeno'] &&
        isset($_POST['email']) && $_POST['email'] &&
        isset($_POST['zprava']) && $_POST['zprava']
    ) {
        $hlavicka = 'From:' . $_POST['email'];
        $hlavicka .= '\nMIME-Version: 1.0\n';
        $hlavicka .= 'Content-Type: text/html; charset="utf-8"\n';
        $adresa = '[email protected]';
        $predmet = 'Zpráva z testovacího webu';
        $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);

        if ($uspech == true) {
            $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ý!';
    }
}
?>



<!DOCTYPE html>


<html lang="cs-cz">


<head>
    <meta charset="utf-8" />
    <link rel="stylesheet" href="styl.css" type="text/css" />
</head>

 
<body>
    <header>
        <nav>
            <ul>
                <li>Domů</li>
                <li class="aktivni">Kontakt</li>
                <li>Dovednosti</li>
            </ul>
        </nav>
    </header>

    <article>
        <div id="centrovac">
            <section>
                <p>Můžete mě kontaktovat pomocí formuláře níže.</p>
                <?php if (!empty($hlaska)): ?>
                    <p><?= $hlaska ?></p>
                <?php endif; ?>

                <form method="POST">
                    <table>
                        <tr>
                            <td>Vaše jméno</td>
                            <td><input name="jmeno" type="text" /></td>
                        </tr>
                        <tr>
                            <td>Vaše e-mailová adresa</td>
                            <td><input name="email" type="email" /></td>
                        </tr>
                    </table>
                    <textarea name="zprava"></textarea>
                    <input type="submit" value="Odeslat" />
                </form>
            </section>
            <div class="cistic"></div>
        </div>
    </article>

    <footer>
    </footer>
</body>


</html>

 
Odpovědět 23.5.2015 1:47
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Tomáš123
Člen
Avatar
Odpovídá na martin.pscolka
Tomáš123:24.5.2015 19:02

Iba pre úplnosť, ak sa iba učíš, prečítaj si nasledujúcu správu a spomeň si na ňu až to budeš potrebovať.

Predtým než komukoľvek dovolíš posielať e-maily mal by si sa zamyslieť nad zabezpečením. Používaj funkciu htmlspecialchars na zaentitovanie nežiadúcich znakov a pracuj so $_SESSION na zamedzenie odoslania toho istého e-amilu viackrát za použitia F5 (refresh stránky).

Podrobnejšie informácie o funkciách a práci s nimi nájdeš v manuáli PHP http://php.net.

Odpovědět  +1 24.5.2015 19:02
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
vojtanosek
Člen
Avatar
vojtanosek:14.6.2015 23:01

Trošku mám v tom zmatek :D. Někdy se ztrácím v tom kam se co píše. Co do PHP a co do html.

 
Odpovědět 14.6.2015 23:01
Avatar
vojtanosek
Člen
Avatar
vojtanosek:15.6.2015 14:49

Tak jsem se v tom vyznal :D. Ze začátku mi to vše připadá těžké :). charset=\"utf-8\"\n . Musí tam být tolik lomítek?

 
Odpovědět 15.6.2015 14:49
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na vojtanosek
tomasmanhal:15.6.2015 14:54

musí, protože musíš PHP jasně říct, který znak patří k HTML (respektive řetězci, který chceš vypsat) :-)

Říká se tomu "Escaping" mám pocit.

Editováno 15.6.2015 14:56
Odpovědět  +2 15.6.2015 14:54
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Odpovídá na mariaanko
Ondřej Máca:19.6.2015 17:53

Taky mi na linuxu (open suse) funguje odesilani mailu bez nastavovani. Ale posle se mi jen zprava. Jmeno ktery zadam do formulare se neodesle a email taky ne. Napise to, ze to prislo z daemon@nazevPC.site. A kdyz jsem si to zkusil poslat na gmail, tak ten to hodil do spamu

 
Odpovědět 19.6.2015 17:53
Avatar
Tomík
Člen
Avatar
Tomík:3.7.2015 18:19

Zdravím, rád bych se zeptal k čemu slouží?

$hlavicka .= "\nMIME-Version: 1.0\n";
$hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";

nejsou tam zbytečné? A jak to funguje?

 
Odpovědět 3.7.2015 18:19
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na Tomík
tomasmanhal:3.7.2015 18:22

nMIME je mailový standard, který umožňuje posílat zprávy s diakritikou, přílohy a další.

charset ti určuje podporované kódování.

Takže ne, nejsou ani náhodou zbytečně, ale povinné.

Editováno 3.7.2015 18:23
Odpovědět  +1 3.7.2015 18:22
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Tomík
Člen
Avatar
Odpovídá na tomasmanhal
Tomík:3.7.2015 18:25

Stále nechápu charset. Co je podporované kódování?

 
Odpovědět 3.7.2015 18:25
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na Tomík
tomasmanhal:3.7.2015 18:28

znaková sada, kterou chceš využít. Pokud chceš mít ve zprávě diakritiku, tak potřebuješ kódování, které ji podporuje. Pogoogli...tohle jsou naprosté základy tvorby webů a podobně.

Odpovědět  +1 3.7.2015 18:28
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Tomík
Člen
Avatar
Odpovídá na tomasmanhal
Tomík:3.7.2015 23:35

No na to že se učím programovat cca. týden a ve škole nám o tom skoro nic neříkali tak myslím, že to že to neumím vůbec nevadí. A taky proč googlit když na tomto serveru je tolik zkušených programátorů, kteří mi to zodpoví lépe než bych si zjistil sám.

 
Odpovědět  -3 3.7.2015 23:35
Avatar
Odpovídá na Tomík
Dominik Gavrecký:3.7.2015 23:39

To display an HTML page correctly, a web browser must know the character set (character encoding) to use.

What is Character Encoding?

ASCII was the first character encoding standard (also called character set). It defines 127 different alphanumeric characters that could be used on the internet.

ASCII supported numbers (0-9), English letters (A-Z), and some special characters like ! $ + - ( ) @ < > .

ANSI (Windows-1252) was the original Windows character set. It supported 256 different character codes.

ISO-8859-1 was the default character set for HTML 4. It also supported 256 different character codes.

Because ANSI and ISO was limited, the default character encoding was changed to UTF-8 in HTML5.

UTF-8 (Unicode) covers almost all of the characters and symbols in the world.

More: http://www.w3schools.com/…_charset.asp

Poviem ti to takto. Ak sa chceš naučiť programovať potrebuješ 3 veci. Mozog, Angličtinu, a vedieť používať google. Viem že je jednoduchšie tu napísať ale myslíš si že aj týto programátori nemajú svoje problémy a nemajú nič lepšie na práci ako vysvetľovať čo je kódovanie ?

Odpovědět  +1 3.7.2015 23:39
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na Tomík
tomasmanhal:4.7.2015 1:25

Však já Tě tady nekamenuji za to, že se to učíš...učit se to budeš celý život, jako my, pokud se tím budeš někdy živit ;-) Jde o to, že je mnohem rychlejší napsat do google "charset" než napsat požadavek do fóra a čekat na odpověď :-)

Do fóra se choď ptát, až budeš mít nějaký kód, nebude ti fungovat a i po mnoha pokusech hledání podobného problému a řešení na internetu budeš prostě bezradný. Potom jsme tu my, kteří ti rádi pomůžeme :-)

PS: Je tu mnoho tutoriálů, obrovská část zdarma, pro začátečníky :-)

Odpovědět  +2 4.7.2015 1:25
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
mkub
Redaktor
Avatar
Odpovídá na Tomík
mkub:9.7.2015 22:48

nikto uceny este nespadol z neba, tak je potrebne aby si sa naucil vyhladavat na nete a myslim, ze vysvetlenie, na co sluzi charset najdes na prvej stranke Google... tak si myslim, ze v tom pripade je to trosku hlupa otazka, pri ktorej sa stretnes s takymi vecami, ako UTFG... takze to su zakladne informacie, bez ktorych sa pri vyvoji webstranok nezaobides

 
Odpovědět  +1 9.7.2015 22:48
Avatar
Horrigan
Člen
Avatar
Horrigan:26.7.2015 13:26

Zdravím,
chtěl bych se zeptat, s PHP nejsem moc kamarád a snažím se mu pokud možno vyhýbat, ale jsem nucený si vytvořit právě kontaktní formulář. Už jsem něco málo zbastlil, co mi i nějakým způsobem funguje (nefunguje mi tam čeština, ale to mi zrovna tak nevadí, to půjde ve druhé vlně)

Potřebuju dvě věci: S jednou si asi poradím sám, ale kdyby měl někdo lepší nápad, tak sem s tím:
Potvrzovací kopie daného mejlu na adresu, kterou zadá uživatel. Chci to řešit poměrně jednoduše, že prohodím $from a $to, zbytek nechám jak je, mb_send_mail (header jsem si připravil předem, pošlu pro oba stejný), a jen si otestuju návratovou hodnotu. Myslím, že by to tak mohlo fungovat a není to ani žádný zvěrstvo.

  1. a s tím si neporadím, i google a dokumentace mlčí (nebo nepokládám správné otázky, to spíš), je taková docela běžná věc jako jsou attachmenty. Kdysi jsem měl starý formulář, který jsem "někde" sebral (pod volnou licencí), který to uměl, ale používalo to úplně jiné věci a v tom kódu se nějak nejsem schopný vyznat, pochopil jsem to tak, že při odeslání si hodí kopii těch souborů z odesílacího stroje někam do tempu a tyto pak hodí do odesílaného mejlu jako celek s příslušnými řídícími informacemi (jako je třeba jméno, typ a počet příloh). Otázka zní: umí něco podobného i mb_send_mail(...), případně jiná metoda, jejíž výstup MB_SM přijme, nebo mám celou MB_SM zahodit a použít něco jiného? V takovém případě co?

Díky

 
Odpovědět 26.7.2015 13:26
Avatar
patrikbraborec:26.7.2015 18:18

Ahoj,

mám problém s odesíláním e-mailů, když vložím script na free webhosting (Endora) , tak mi prostě emaily nedochází.

<?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 = @mail($adresa, $predmet, $_POST['zprava'], $hlavicka);

      if ($uspech)
      {
        $hlaska = 'Email byl úspěšně odeslán, brzy Vám odpovím.';
      }
      else
        $hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';

    }
      else
        $hlaska = 'Formulář není správně vyplněný!';
}

?>

        <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" />
            <?php
                if ($hlaska)
                echo('<p>' . $hlaska . '</p>');
            ?>
        </form>
Odpovědět 26.7.2015 18:18
To nejcennější, co všichni máme, je náš čas.
Avatar
patrikbraborec:26.7.2015 20:46

*budu rád, když mi poradíte. Děkuju

Odpovědět 26.7.2015 20:46
To nejcennější, co všichni máme, je náš čas.
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na patrikbraborec
tomasmanhal:26.7.2015 20:57

Už to tu bylo několikrát omýláno a řešilo se to. Freehostingy mají často zakázané odesílání mailů :-)

Odpovědět 26.7.2015 20:57
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Odpovídá na tomasmanhal
patrikbraborec:26.7.2015 21:31

Aha, tak toho jsem si bohužel nevšiml, moje chyba-ale díky za odpověď! :)

Odpovědět 26.7.2015 21:31
To nejcennější, co všichni máme, je náš čas.
Avatar
Tomáš123
Člen
Avatar
Odpovídá na patrikbraborec
Tomáš123:26.7.2015 21:48

Na e-mail, ktorý si pri registrácii použil ti prišla správa. Skontroluj si zložku spam (ak sa to nezobrazí v doručenej pošte) a prečítaj si bližšie informácie.

Odpovědět  +1 26.7.2015 21:48
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
Filip Kuboš
Člen
Avatar
Filip Kuboš:30.7.2015 11:01

Zdravím vás, mám taký problém, že mi email odošle, ale nepríde mi na zadanú adresu (nie je ani v spame). Je to z lokálneho serveru. Platí to ako pri freehostingoch, že sa nedajú posielať emaily? Vopred vďaka za radu :)

Editováno 30.7.2015 11:03
 
Odpovědět 30.7.2015 11:01
Avatar
tomasmanhal
Člen
Avatar
Odpovídá na Filip Kuboš
tomasmanhal:30.7.2015 11:15

Pokud nemáš na localhostu rozjetý také mailserver, tak ne, z localhostu neodešleš mail :-) Pokud používáš XAMP, tak je tam tuším schovaná fičura "Fake sendmail" a tou už by to jít mohlo, samozřejmě nejspíš jako emulace.

Odpovědět 30.7.2015 11:15
Kdyby nám dodali k životu zdrojový kód, vše by bylo jednodušší...
Avatar
Filip Kuboš
Člen
Avatar
Filip Kuboš:30.7.2015 11:16

EDIT: aj keď dám adresu

$adresa = "totojezlyemail";

tak to odošle správne vo funkcii

$uspech = mb_send_mail($adresa, $predmet, $_POST['sprava'], $hlavicka);
 
Odpovědět 30.7.2015 11:16
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Filip Kuboš
IT Man:30.7.2015 11:22

To si musíš ošetřit ty sám :)

Odpovědět 30.7.2015 11:22
Cokoliv a kdokoliv může jednou uspět.
Avatar
Filip Kuboš
Člen
Avatar
Filip Kuboš:3.8.2015 12:59

Vďaka vám, a chcem sa podeliť o moje postrehy :)

V XAMPPe je zložka "mailoutput", kde sa ukladajú všetky odoslané emaily. Zároveň mi funkcia

mb_send_mail();

nepodporovala UTF-8, zatiaľčo funkcia

mail();

áno. Samozrejme, kódovanie som mal nastavené.

mb_internal_encoding("utf-8");
 
Odpovědět 3.8.2015 12:59
Avatar
honza86
Člen
Avatar
honza86:20.8.2015 6:48

Ahoj,
chtěl jsem se zeptat proč se hlavička deklaruje třikrát za sebou, nezůstane nakonec v proměné $hlavicka poslední deklarovaná. A ještě proč se před rovná se píše tečka na druhém a třetim řádku.

Díky moc za případné odpovědi

$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';
 
Odpovědět 20.8.2015 6:48
Avatar
IT Man
Redaktor
Avatar
Odpovídá na honza86
IT Man:20.8.2015 7:14

Píše se to kvůli lepší přehlednosti. Představ si, že by vše bylo na jednom řádku. Bylo by to dlouhé a na některých monitorech už by to ani nešlo vidět.
Ta tečka se tam píše z důvodu, že spojuje řetězec, takže text na druhým řádku se přidá k textu na prvním řádku a text na třetím řádku se spojí s textem na druhém řádku. Poté to vypíše stejný text jako by jsi to definoval na tom jednom řádku. :)

Odpovědět  +3 20.8.2015 7:14
Cokoliv a kdokoliv může jednou uspět.
Avatar
Bebbana
Člen
Avatar
Bebbana:27.8.2015 21:21

Chci se zeptat, jak do hlavičky přidat jméno tazatele. Přijde mi totiž, že se sice do formuláře zadává, ale vůbec se pak neodesílá (není součástí příchozího emailu). Zkoušela jsem ho přidat do hlavičky:

$hlavicka = 'From:' . $_POST['email'];
$hlavicka .= '' . $_POST['jmeno'];
$hlavicka .= "\nMIME-Version: 1.0\n";
$hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";

bohužel se mi to odeslalo tak, že příjmení bylo na začátku hlavičky , zatím nasledovala emailová adresa odesílatele a pak až křestní jméno. Nechápu, proč. A myslím, že by bylo dobré, aby v příchozím emailu bylo jméno a příjmení, abych mohla tazatele při odepisování oslovit. Díky za odpověď.

 
Odpovědět 27.8.2015 21:21
Avatar
Bebbana
Člen
Avatar
Bebbana:27.8.2015 21:41

Tak beru dotaz zpátky, přehlédla jsem, že tady už někdo řešil něco podobného. Bohužel nevím, jak dotaz smazat, tak se omlouvám za spam.

 
Odpovědět 27.8.2015 21:41
Avatar
hrncal.junior:3.9.2015 22:10

Ahoj, zeptám se asi blbě, ale jak udělat to, že chci přidat do formuláře pole pro telefon a také ho zobrazit v meilové zprávě? Děkuji

 
Odpovědět 3.9.2015 22:10
Avatar
IT Man
Redaktor
Avatar
Odpovídá na hrncal.junior
IT Man:4.9.2015 6:27

Už se tady v komentářích řešilo něco podobného, projdi si je. :)

Odpovědět 4.9.2015 6:27
Cokoliv a kdokoliv může jednou uspět.
Avatar
Odpovídá na IT Man
hrncal.junior:4.9.2015 7:40

Děkuji. Konečně jsem to našel. Kam mám ale vložit toto?

$prijateInformace = "<b>Jméno a příjmení:</b> " . $_POST['name'] . "<br />" .
"<b>Email:</b> " . $_POST['email'] . "<br />" .
"<b>Město:</b> " . $_POST['mesto'] . "<br />" .
"<b>Služba:</b> " . $_POST['vyber'];

zkoušel jsem k isset, ale to nefunguje. Díky moc

 
Odpovědět 4.9.2015 7:40
Avatar
IT Man
Redaktor
Avatar
Odpovídá na hrncal.junior
IT Man:4.9.2015 7:52

Připojíš to např. k zprávě:

$_POST['zprava'] .= '<br /><br />' . $prijateInformace;
Odpovědět 4.9.2015 7:52
Cokoliv a kdokoliv může jednou uspět.
Avatar
MArtin
Člen
Avatar
Odpovídá na Filip Kuboš
MArtin:30.10.2015 12:33

o mb_send_mail(); som ja napr. nevedel, ale bezne to robievam takto:

$eml_body = base64_encode($eml_body);

$eml_header = '';
$eml_header .= "MIME-Version: 1.0\n";
$eml_header .= "Content-Type: text/html; charset=utf-8\n";
$eml_header .= "Content-Transfer-Encoding: base64\n";
$eml_header .= "X-Sender: ". $sender ."\n";
$eml_header .= "X-Mailer: PHP\n";
$eml_header .= "X-Priority: 1\n";

pridam recipient, subject a from a posielam to cez mail()

 
Odpovědět 30.10.2015 12:33
Avatar
Rasťo Suchovský:26.1.2016 17:41

Jedna poznámka.
Aktuálny rok by som ja osobne neukladal do value type "number", úplne postačí "text", predíde sa zbytočným chybovým hláškam, resp. netreba nič ošetrovať. Z podstaty vyplýva, že údaj, ktorý očakávame, bude text, a jediné, čo s ním budeme robiť, je porovnanie s reťazcom "2016" (v tomto roku). Ešte to nemám hotové, ale myslím si, že to tak bude. :)

 
Odpovědět 26.1.2016 17:41
Avatar
Rasťo Suchovský:26.1.2016 23:23

Prosím o pomoc.
Dal som si to na bratov webhosting 'remakesystem.com'.
Nastavil som si posielanie na '[email protected]­kesystem.com' (moja mejlová adresa).
Nech napíšem do poľa 'e-mail', hocijakú e-mailovú adresu, vždy mi to príde od 'remakesystem­[email protected]­server.sk'. Tým pádom sa nedostanem k e-mailovej adrese používateľa, ktorý vyplnil formulár. Neviem, čo s tým. Díky.

 
Odpovědět 26.1.2016 23:23
Avatar
albertpatera
Redaktor
Avatar
Odpovídá na Rasťo Suchovský
albertpatera:27.1.2016 7:03

poiva se na to, kdyzta ti dvedet do PM
;-)

napis mi PM

 
Odpovědět 27.1.2016 7:03
Avatar
Neaktivní uživatel:22.4.2016 15:09

jestli někdo pomůže:
tohle mám formulař http://jeremyxp.cz/…ormular2.htm zde je kodový zdroj

<meta http-equiv="Content-Language" content="cs">
<meta name="GENERATOR" content="Microsoft FrontPage 6.0">
<meta name="ProgId" content="FrontPage.Editor.Document">
<meta http-equiv="Content-Type" content="text/html; charset=windows-1250">
<LINK href="bar.css" rel=stylesheet><title>-:Formulář:-</title>
</head>
<body background="pozadi.jpg">
<script type="text/javascript" src="wforms.js">
</script>
<div align="center"><DIV class=kod style="width: 727px; height: 638px">
<center>
    <table border="1" cellpadding="0" cellspacing="0" style="border:5px double #FF0000; border-collapse: collapse" bordercolor="#111111" width="78%" id="AutoNumber1" height="179">
      <tr>
        <td width="100%" height="179" bgcolor="#000000">
<P align="center"><u><b><font face="Comic Sans MS" color="#FF0000">! UPOZORNĚNÍ
!</font></b></u></P>
<P align="center"><u>
<font color="#FFFFFF" face="Comic Sans MS" style="font-size: 11pt">Po registraci
přijde heslo do 48 hodin.<br></font></u>
<FONT color=#FFFFFF face="Comic Sans MS">
<font style="font-size: 11pt">Kontrolní email musí být totožný s uvedeným
emailem </font> <b><font style="font-size: 11pt">!</font></b></FONT></P>
<P align="center">
<font style="font-size: 11pt" color="#FFFFFF" face="Comic Sans MS">Tento stránky
<u>Moje Akty je zadara</u> , </font></P>
        </td>
      </tr>
    </table>
    <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="78%" id="table1">
      <tr>
        <td width="100%">
        <p align="right">
  <font SIZE="1">
            <b><font color="#FF0000" size="2" face="Comic Sans MS">
            <a href="http://jeremyxp.cz/login/index.htm" target="main">
            <img border="1" src="ico-home.png" align="right" hspace="0" alt="zpět na vstupu" title="zpět na vstupu"></a></font></b></font></td>
      </tr>
    </table>
  <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="97%" id="table2" height="402">
    <tr>
      <td width="100%" background="sesit01.png" height="45">
      &nbsp;</td>
    </tr>
    <tr>
      <td width="100%" background="sesit02.png" height="317">
  <font SIZE="1">
      <p align="center"><u>
      <font face="Comic Sans MS" color="#FF0000" style="font-size: 13pt">
      Registrační formulář<br></font></u></font>
      <font face="Comic Sans MS">
      <span style="background-color: #FFFFFF"><u>
      <span style="font-size: 11pt; font-weight: 700">Zde je je formulář na
      získání Hesla Moje Akty</span></u><span style="font-size: 11pt"> </span>
      <font color="#FF0000"><b>!</b></font></span></font><b><font SIZE="1"><font color="#FF0000" size="4">
      *</font><font color="#FF0000" size="2" face="Comic Sans MS">Povinné
      vyplnit !</font></font></b><span style="font-size: 11pt"><br align="center">&nbsp;</span><div align="center">
        <center>
        <table border="0" cellpadding="0" cellspacing="0" style="border-collapse: collapse" width="79%" id="table3" height="230">
          <tr>
            <td width="100%" height="230">
<FORM action="**TADY BUDE ASI MŮJ SCRIPT PHP nebo ASP**" method="post">
<INPUT type=hidden [email protected] name=prijemce_email>
<INPUT type=hidden value="Registrace Akty" name=predmet>
<INPUT type=hidden value=http://jeremyxp.cz/login/index.htm name=url>
<INPUT type=hidden value=ano name=technicke_informace>
<INPUT type=hidden value=ano name=hlavicka>
<INPUT type=hidden value="Jiný email" name=polozka_01_nazev>
<INPUT type=hidden value=Stat name=polozka_02_nazev>
<INPUT type=hidden value="Rok narozeni" name=polozka_03_nazev>
<DIV align=center>

<CENTER>
<TABLE cellSpacing=0 cellPadding=0 width=520 border=1 height="195" id="table4">
  <TBODY>
  <TR>
    <TD width=520 height="193">
      <DIV align=center>
      <CENTER>
      <TABLE cellSpacing=0 cellPadding=5 width="551" bgColor=#e9e9e9
        border=0 id="table5" height="266"><font SIZE="1">
        <tr>
          <TD align=right>
          <FONT face="Comic Sans MS" style="font-size: 10pt">Jméno nebo Nick:</FONT></TD>
          <TD height="34"><INPUT size=35 class="required" name=odesilatel_jmeno></TD></tr>
        <tr>
          <TD align=right>
          <FONT face="Comic Sans MS"
            size=2>E-mail :</FONT></TD>
          <TD height="34"><INPUT size=35 class="required" name=odesilatel_email></TD></tr>
        <tr>
          <TD align=right>
          <font face="Comic Sans MS" size="2">Náhradní E-mail :</font></TD>
          <TD height="34"><INPUT size=35 class="required" name=polozka_01_telo></TD></tr>
        <tr>
          <TD align=right>
          <FONT face="Comic Sans MS"
            size=2>Stát:</FONT></TD>
          <TD height="33">
          <INPUT style="WIDTH: 100px; HEIGHT: 22px" size=35 class="required" name=polozka_02_telo>&nbsp;</TD></tr>
        <tr>
          <TD align=right>
          <FONT face="Comic Sans MS"
            size=2>Rok narození :</FONT></TD>
          <TD height="35"><INPUT size=10 class="required" name=polozka_03_telo>&nbsp;<span class="textstyle2"><span style="font-weight: 400"><font face="Comic Sans MS" size="2" color="#FF0000">Musíte mít více než 18 let,</font></span></span><font SIZE="1"><FONT
            color=#ff0000 size=2 face="Comic Sans MS">uvádět ročník ! </FONT></font>
          <FONT
            color=#ff0000 face="Comic Sans MS">*</FONT></TD></tr>
        <tr>
          <TD align=middle colSpan=2 height="40">
            <INPUT type=submit value=Odeslat style="font-family: Comic Sans MS; color: #FF0000; font-weight: bold">
          </TD></tr>
        <tr>
             <td width="170">
             </td>
             <td height="10" width="361">
             </td>
        </tr>
      </TABLE></CENTER></DIV></TD></TR></TBODY></TABLE></CENTER></DIV></FORM>
            </td>
          </tr>
        </table>
        </center>
      </div>
      </td>
    </tr>
    <tr>
      <td width="100%" background="sesit03.png" height="12"></td>
    </tr>
  </table>
    </center>
  </div>
  </font>
  </DIV>
</body>
</html>

Druhý má byt script co mi psali emailem pipni.cz Dobry den,
na webhostingu podporujeme php skripty, ale musite ho nahrat vytvoreny na ftp. Pak budete napriklad volat http://jeremyxp.cz/poslat.php . Ale skript Vam musi nekdo vytvorit podle soucasneho. Jenže já neumím PHP nebo ASP jestli někdo udělá za mě script ?
Jinak umim jen zkopirovat a vložit do txt a pak přejmenovat formmail.asp nebo formmail.php a pak nahraju na FTP. Pak umím jen htm a CSS nic vic :-( vim že ej to ostuda něco jsem třeba hledal na netu co jsem potřeboval tak s tím pohraju dle css nebo htm a seberu kodový zdroj ale PHP nebo ASP to ne :-( mužete mi aspoň pomoct...

Editováno 22.4.2016 15:09
Odpovědět 22.4.2016 15:09
Neaktivní uživatelský účet
Avatar
Lukáš Hypša:18.5.2016 14:38

Jaký je rozdíl mezi

isset($_POST['jmeno'])

a

$_POST['jmeno']

?
Jestli jsem to pochopil správně, tak první se ptá na klíč a druhý na hodnotu. Ale bez klíče přece nemůže existovat ani hodnota toho klíče. Tak proč se ptáme na oboje?

Odpovědět 18.5.2016 14:38
Jsem lama co se roky snaží naučit napsat aspoň pár řádků a furt mu to nejde...
Avatar
Odpovídá na Lukáš Hypša
Uživatel sítě :18.5.2016 15:01

isset kontroluje zda proměnná vůbec existuje/je definována.

Pokud nepoužiješ isset a proměnná nebude definována, tak ti to vyhodí notice, že vlastně neexistuje.

Odpovědět 18.5.2016 15:01
Chybami se člověk učí, běžte se učit jinam!
Avatar
Odpovídá na Uživatel sítě
Lukáš Hypša:18.5.2016 15:07

Promiň ale mo nechápu jak to myslíš :D, isset kontroluje jestli existuje klíč nebo hodnota klíče?

Odpovědět 18.5.2016 15:07
Jsem lama co se roky snaží naučit napsat aspoň pár řádků a furt mu to nejde...
Avatar
Tomáš123
Člen
Avatar
Odpovědět  +1 18.5.2016 15:18
Keby nebolo Internetu Exploreru, nebolo by dnešného internetu.
Avatar
Odpovídá na Lukáš Hypša
Uživatel sítě :18.5.2016 20:22

Zda vůbec proměnná/klíč v poli existuje čili byl vůbec součástí formuláře, který byl odeslán.

Odpovědět  +1 18.5.2016 20:22
Chybami se člověk učí, běžte se učit jinam!
Avatar
Tomáš Vlček:2.6.2016 21:26

Návod je to super, ale potřeboval bych, aby se mi v tom zaslaném mailu, objevovalo také jméno odesilatele. Kdo mi poradí?

 
Odpovědět 2.6.2016 21:26
Avatar
hrncal.junior:3.6.2016 11:12

Ahoj,
měl bych jeden malý dotaz. Formulář sice zkontroluje, že jsou či nejsou položky vyplněny, ale já bych to potřeboval upravit na to, aby se za hlášku "Formulář není správně vyplněný!" doplnil text, co není vyplněno. Můžu poprosit o pomoc s řešením? Děkuji

 
Odpovědět 3.6.2016 11:12
Avatar
Andrej Nordhan:13.6.2016 12:47

Ahoj,snažím se přes to nějak dostat i jméno do mailu, ale nedaří se,poradí někdo. díky

 
Odpovědět 13.6.2016 12:47
Avatar
pgarsky
Člen
Avatar
pgarsky:18.6.2016 22:45

Proč tam musí být to isset a nestačí jen if ($_POST['email']) atd... ?

Odpovědět 18.6.2016 22:45
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
Odpovídá na pgarsky
Dominik Gavrecký:18.6.2016 22:57

Co ak by mail nebol vyplnení ?

Odpovědět 18.6.2016 22:57
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
pgarsky
Člen
Avatar
Odpovídá na Dominik Gavrecký
pgarsky:19.6.2016 9:10

No ale vlastně když vždyť to je stejný, ne ? Isset není potřeba přeci, když bych to udělal vy stylu třeba:

$pole = $_POST['pole'];
if ($pole)
echo("Něco tu je");
else
echo("Nic tu není");

To by mělo jít, ne ?

Odpovědět 19.6.2016 9:10
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
pgarsky
Člen
Avatar
pgarsky:19.6.2016 9:57

A nechápu, jaktože tam je na každém řádku to to třeba 'jmeno', atd... dvakrát?

Odpovědět 19.6.2016 9:57
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na pgarsky
Jakub Žák:19.6.2016 10:01

A co když

$_POST['pole'];

neexistuje?

Odpovědět 19.6.2016 10:01
Kuba je ajťák. Buď jako Kuba.
Avatar
pgarsky
Člen
Avatar
Odpovídá na Jakub Žák
pgarsky:19.6.2016 14:09

V tom případě, co uvádím existuje a když není vyplněno, vyhodí to text "Nic tu není"

Odpovědět 19.6.2016 14:09
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
Jakub Žák
Člen
Avatar
Jakub Žák:19.6.2016 14:24

Pokud ti z formuláře nepřijde pole "pole", tak na prvním řádku do proměnné $pole přiřazuješ neexistující prvek z pole, ne?

Odpovědět 19.6.2016 14:24
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Tomáš Vlček
Pavel Habžanský:21.6.2016 16:58

Já bych nejspíš na začátku zpracovávání formuláře vytvořil nějakou proměnnou, kam bych dal něco jako "Od $_POST['jmeno']\n" a k tomu bych před odesláním připojil zprávu z formuláře... Nezkoušel jsem, jen mě to tak teď napadlo

Odpovědět 21.6.2016 16:58
Čím větší výzva, tím větší zkušenost
Avatar
Odpovídá na Pavel Habžanský
Dominik Gavrecký:21.6.2016 17:00

Ono sa v takýchto prípadoch väčšinou používa :

if(isset($_POST)){
}
Odpovědět 21.6.2016 17:00
Hlupák nie je ten kto niečo nevie, hlupákom sa stávaš v momente keď sa na to bojíš opýtať.
Avatar
Jaroslav
Člen
Avatar
Jaroslav:27.6.2016 20:10

Mám tu takový error, ale nevím, jestli je to na škodu, nebo jestli je to normální. Vedle každého řádku, kde je zmíněný "$_POST", tak se píše tohle: netbeans do not access superglobal $_post array directly

Odpovědět 27.6.2016 20:10
Nedělej dnes, co můžeš odložit na zítra.
Avatar
kivdul
Člen
Avatar
kivdul:16.7.2016 21:18

ahoj lidi,

mohli by jste mi poradit co znamená tato error hláška? zobrazuje se mi při použití $_POST :-(

dekuji Ludvik

Deprecated: Automatically populating $HTTP_RAW_POST_DATA is deprecated and will be removed in a future version. To avoid this warning set 'always_popula­te_raw_post_da­ta' to '-1' in php.ini and use the php://input stream instead. in Unknown on line 0

Warning: Cannot modify header information - headers already sent in Unknown on line 0

 
Odpovědět 16.7.2016 21:18
Avatar
Odpovídá na pgarsky
Bartoloměj Eliáš:4.9.2016 14:33

To proč to tam je dvakrát je to ono porovnání jestli je vstup z formu vyplněn, že ? A to právě díky použití fce isset ne ? -> "Potřebujeme tedy zjistit, zda v $_POST existují jednotlivé proměnné. K tomu v PHP slouží funkce isset()."

Ve finále by to zpracování díky poli, ve kterém se ověřuje to, jestli v pole něco vůbec je, tzn. = fungování fce isset, by mělo též fungovat, s tím rozdílem, že isset, je k tomu přímo dělaná, narozdíl od toho pole zpracování.

Chápu to správně ?

 
Odpovědět 4.9.2016 14:33
Avatar
pgarsky
Člen
Avatar
Odpovídá na Bartoloměj Eliáš
pgarsky:4.9.2016 15:30

Ano, chápeš. Dejme tomu, že když napíšeš do stránky pouze if ($_POST['hlaska']) a pod to echo('<p>' . $hlaska . </p>, tak systém počítá s tím, žes to už odeslal, a pokud jsi ale nic neodeslal, tak ti vypíše, že proměnná $hlaska třeba neexistuje. Zatímco když tam máš isset, systém hlášku vypíše pouze v případě, že ta hláška existuje.

Odpovědět 4.9.2016 15:30
Pokud ti něco jde těžko, znamená to, že jdeš tou správnou cestou...
Avatar
Matej Muščík:1.12.2016 21:26

Ahojte ludia nastal mi tu jeden problem... v kode som nastavil mail -> ($adresa = '[email protected]';) ktorý som si vytvoril na serveri... ale ak si vypíšem form a dam tam môj sukromný mail tak mi žiadna správa nepríde .. viete pomocť ? poprípade ako sa ma nastaviť kod aby posielal maili ? na real serveri

 
Odpovědět 1.12.2016 21:26
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 8:49

Ani na původní adresu se nic nevrátí? V logu na serveru nic není?

Odpovědět 2.12.2016 8:49
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 8:50

No vráti sa len ak vo forme napíšem ten istý mail ako je v kode

 
Odpovědět 2.12.2016 8:50
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 8:53

A nebrání tomu DMARC, SFP nebo něco podobného?

Odpovědět 2.12.2016 8:53
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 9:00

ako to zistím alebo kde to fixnem

 
Odpovědět 2.12.2016 9:00
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 9:09

Všechny tyto informace by měl sdělit správce mailserveru.

Odpovědět 2.12.2016 9:09
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 9:53

prišla odpoveď že nech si toto zmením ->

$uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);

na

$uspech = mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
Editováno 2.12.2016 9:53
 
Odpovědět 2.12.2016 9:53
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 14:16
<?php
mb_internal_encoding("UTF-8");

$hlaska = '';

if ($_POST) // v poli post niečo je odoslal sa formular
{
    if (isset($_POST['meno']) && $_POST['meno'] &&
        isset($_POST['email']) && $_POST['email'] &&
        isset($_POST['sprava']) && $_POST['sprava'] &&
        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 test';
        $uspech = mail($adresa, $predmet, $_POST['sprava'], $hlavicka);
        if ($uspech)
        {
            $hlaska = 'Email bol úspešne odoslaný, čoskoro vám odpovieme.';
        }
        else
            $hlaska = 'Email se nepodarilo odoslať. Zkontrolujte adresu.';
    }
    else
        $hlaska = 'Formular nieje spravne vyplnený';

}


?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<?php
if ($hlaska)
    echo ('<p>' . $hlaska . '</p>');
?>
<article>
    <form method="post">
        <table>
            <tr>
                <td>Vaše celé meno</td>
                <td><input name="meno" type="text"/></td>
            </tr>
            <tr>
                <td>Vaš email</td>
                <td><input name="email" type="email"/></td>
            </tr>
            <tr>
                <td>Aktualny rok</td>
                <td><input name="rok" type="number"/></td>
            </tr>
        </table>

        <textarea name="sprava"></textarea><br />
        <input type="submit" value="odoslat">
    </form>
</article>

</body>
</html>

ale taktiež mi nefunguje to že ak do formu zadam mail vždy iný tak sa mi nepošle na každý

 
Odpovědět 2.12.2016 14:16
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:17

Neodešle se nikam nebo se odešle jenom někam?

Odpovědět 2.12.2016 14:17
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 14:19

ak v kode presne zadefinujem email a ten istý mail napíšem aj do formu tak vtedy odošle ak je v kode mail jeden a vo forme iný tak neodošle

 
Odpovědět 2.12.2016 14:19
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:21

No a jak neodešle? Co říká ten výstup? Co říkají logy? V PHP je zaplé i nahlašování notices (E_ALL)?

Je dost velký rozdíl mezi tím, jestli se neodešle nebo jen nedojde.

Editováno 2.12.2016 14:21
Odpovědět 2.12.2016 14:21
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 14:32

Na výstupe je napísane že všetko sa odoslalo fajn čo sa týka php kodu... E_ALL som zapol teraz a nič nevypísalo...

 
Odpovědět 2.12.2016 14:32
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:33

Co je to za e-maily (adresy, domény)?

Odpovědět 2.12.2016 14:33
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 14:34

domena je testmm1.ml email je test@testmm1.ml

 
Odpovědět 2.12.2016 14:34
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:35

Jakej e-mail? Odesílatel, příjemce?

Křišťálovou kouli tady vážně nikdo nemáme.

Odpovědět 2.12.2016 14:35
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 14:36

odosielatel - test@testmm1.ml
príjmatel - matej.muscik@gmail.com

Editováno 2.12.2016 14:36
 
Odpovědět 2.12.2016 14:36
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:37

Odesíláš to z těch adres, co jsou povolené v SPF, viz screenshot?

Odpovědět 2.12.2016 14:37
Kuba je ajťák. Buď jako Kuba.
Avatar
Odpovídá na Jakub Žák
Matej Muščík:2.12.2016 14:38

nie resp. tie adresi nikde vkode nemám ... kde ich mam umiestniť ?

 
Odpovědět 2.12.2016 14:38
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:41

No v tom SPF záznamu musí být uvedeny všechny IP/hostanme serverů, které jsou z té domény oprávněné odesílat zpravy.

Jelikož to vypadá, že to je mailserver hostingu, tak je nutné si taky od poskytovatele zjistit, z jakých adres/na jaké adresy a v jakém formátu je možné zprávy odesílat. Často bývají různá omezení, např. že e-mail odesílatele musí být existující schránkou na hostingu.

Odpovědět 2.12.2016 14:41
Kuba je ajťák. Buď jako Kuba.
Avatar
Jakub Žák
Člen
Avatar
Odpovídá na Matej Muščík
Jakub Žák:2.12.2016 14:50

Mimochodem, pro běžné nasazení doporučuji použít Swift Mailer knihovnu, která dost věcí vyřeší za tebe, můžeš si pohodlně nastavit odesílání přes SMTP a nemusíš řešit velkou část problémů (např. diakritika, multipart e-maily, přílohy apod.).

Popis v článku je spíš pro pochopení, jak to vlastně funguje, v praxi je odesílání e-mailů dost komplexní záležitost, pokud nejde o nějaký textový testovací mail.

Editováno 2.12.2016 14:52
Odpovědět 2.12.2016 14:50
Kuba je ajťák. Buď jako Kuba.
Avatar
Filip (animátor/programator):14.1.2017 16:53

Mne ten e-mail neprišiel ale odoslal sa

Odpovědět 14.1.2017 16:53
Nikdy sa nevzdávaj a choď si za svojim snom.......
Avatar
Filip (animátor/programator):14.1.2017 16:58

Môj zdrojak je tu :

Editováno 14.1.2017 16:59
Odpovědět 14.1.2017 16:58
Nikdy sa nevzdávaj a choď si za svojim snom.......
Avatar
Odpovědět 14.1.2017 16:58
Nikdy sa nevzdávaj a choď si za svojim snom.......
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
IT Man
Redaktor
Avatar
Odpovídá na Pavel Šrytr
IT Man: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
Cokoliv a kdokoliv může jednou uspět.
Avatar
Pavel Šrytr
Člen
Avatar
Odpovídá na IT Man
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
IT Man
Redaktor
Avatar
Odpovídá na Pavel Šrytr
IT Man: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
Cokoliv a kdokoliv může jednou uspět.
Avatar
Pavel Šrytr
Člen
Avatar
Odpovídá na IT Man
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
IT Man
Redaktor
Avatar
Odpovídá na Pavel Šrytr
IT Man: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
Cokoliv a kdokoliv může jednou uspět.
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
Avatar
Jiří Fencl
Člen
Avatar
Odpovídá na Peter Schoeller
Jiří Fencl:13.3.2017 22:17

Ahoj, musis ten soubor z formulare nejdriv ulozit na server funkci move_uploaded_file nez jej pouzijes jako prilohu

 
Odpovědět 13.3.2017 22:17
Avatar
Odpovídá na Jiří Fencl
Peter Schoeller:16.3.2017 15:05

tak nefunguje to ani cez upload :-S

 
Odpovědět 16.3.2017 15:05
Avatar
Petr Marek
Člen
Avatar
Petr Marek:21.3.2017 9:03

Stranka se aktualizuje po kazdem odeslani formulare, a proto se i skript spousti pri odeslani formulare? Nebo jakto, ze se skript spousti opakovane (meni se hlaska)

 
Odpovědět 21.3.2017 9:03
Avatar
Petr Čumpelík:1.4.2017 14:38

Dobrý den,
nevěděl by někdo, čím by mohlo být, že můj mailform nehlásí žádnou chybu, ale ani žádné e-maily neposílá. Je vytvořený dle tohoto článku.

 
Odpovědět 1.4.2017 14:38
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Petr Čumpelík
IT Man:1.4.2017 17:44

Poskytovatel např. neumožňuje odeslání E-mailu.

Odpovědět 1.4.2017 17:44
Cokoliv a kdokoliv může jednou uspět.
Avatar
Jan Grunt
Člen
Avatar
Jan Grunt:10.4.2017 17:37

Zdravím,

mám kontaktní mail formulář ve kterém zadávám jméno, příjmení, název firmy, ič, dič, email, tel. Chtěl bych použít ARES pro možné vyplnění tohoto formuláře.Pomocí DIČ.

Poradí někdo?

Dík

 
Odpovědět 10.4.2017 17:37
Avatar
Odpovídá na Petr Čumpelík
Martin Bubník:21.6.2017 19:17

Ahoj, emaily to odesílá.

 
Odpovědět 21.6.2017 19:17
Avatar
Jana Klečková:10.8.2017 18:54

Ahoj,
použila jsem tento ukázkový kód pro zasílání zpráv z webu a asi po hodinovém zkoušení a trápení jsem zjistila, že je funkční na doméně, kde provider poskytuje PHP 5.3.3 ale nefunguje na doméně kde je PHP 5.5.38. Může mi nějaká dobrá duše poradit, jak mám skript změnit, aby fungoval i s PHP 5.5.38? Děkuji moc

 
Odpovědět 10.8.2017 18:54
Avatar
Odpovídá na Jana Klečková
Jana Klečková:11.8.2017 7:49

problém vyřešen, chaos na straně poskytovale webhostingu...

 
Odpovědět 11.8.2017 7:49
Avatar
michal Čepelák:15.8.2017 23:23

zdravím,
emaily mi chodí ale když něco zadám ve formuláři do pole jméno tak v přichozím emailu se tam nic nezobrazí nevím kde mám chybu děkuji

<?php

        /*
         *             __          __                __
         *        ____/ /__ _   __/ /_  ____  ____  / /__ _________
         *       / __  / _ \ | / / __ \/ __ \/ __ \/ //_// ___/_  /
         *      / /_/ /  __/ |/ / /_/ / /_/ / /_/ / ,< _/ /__  / /_
         *      \__,_/\___/|___/_.___/\____/\____/_/|_(_)___/ /___/
         *
         *
         *      TUTORIÁLY  <>  DISKUZE  <>  KOMUNITA  <>  SOFTWARE
         *
         *      Tento zdrojový kód je součástí tutoriálů na programátorské
         *      sociální síti WWW.DEVBOOK.CZ
         *
         *      Kód můžete upravovat jak chcete, jen zmiňte odkaz
         *      na www.devbook.cz :-)
         */

    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 = 'From:[email protected]';
            $hlavicka .= "\nMIME-Version: 1.0\n";
            $hlavicka .= "Content-Type: text/html; charset=\"utf-8\"\n";
            $adresa = '[email protected]';
            $predmet = 'Přihláška na soutěž 2017';
            $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
            if ($uspech)
            {
                $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
                                 header('Location: http://sdh.cz');
                exit;
            }
            else
                $hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
        }
        else
            $hlaska = 'Formulář není správně vyplněný!';
    }

?>

<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Kontaktní formulář</title>
    </head>
    <body>
        <p>Přihlašovací formulář pro poharovou soutěž SDH 2017</p>

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

        <form method="POST">
            <table>
                <tr>
                        <td>Název SDH</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(antispam)</td>
                        <td><input name="rok" type="number" /></td>
                </tr>
                <tr>
            <td>Počet družstev</td>
            <td>
            <textarea name="zprava"><?= htmlspecialchars($zprava) ?></textarea>
            </td>

            </table>

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

    </body>
</html>
Editováno 15.8.2017 23:25
 
Odpovědět 15.8.2017 23:23
Avatar
Odpovídá na michal Čepelák
Michal Šmahel:16.8.2017 12:53

Ahoj, obsah pole (uložený v $_POST['jmeno']) nikde nepoužíváš. Kde chceš mít jméno vypsané??

Odpovědět 16.8.2017 12:53
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Ernest Kuki
Člen
Avatar
Ernest Kuki:17.10.2017 14:36

Ahoj, co může způsobovat chybu v tomhle?

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

Mám to vložené přesně podle instrukcí těsně nad form .. ale hlásí mi to chybu na řádku s ECHO.

 
Odpovědět 17.10.2017 14:36
Avatar
Ernest Kuki
Člen
Avatar
Odpovídá na Ernest Kuki
Ernest Kuki:17.10.2017 14:42

Problém vyřešen.. Kdyby někdo řešil to samé .. mrkněte jestli máte soubor uložen jako .php

 
Odpovědět 17.10.2017 14:42
Avatar
Miroslav Mucha:2.11.2017 14:08

Ahoj, při testování kontaktních údajů zadaných do jednotlivých polí jsem zjistil, že formulář se odešle i když např. do pole "jmeno" nebo "zprava" klepnu jenom mezeru. Stejně tak to projde, když se tam zadá například hodnota NULL. Tak jsem to zkusil ošetřit a už to mezery atd. nezpracuje a vyhodí chybu. Chci se zeptat, zda jsem se touto úpravou nedopustil něčeho nekorektního

<?php
if($_POST)  // konrola, zda byl formulář odeslán
{
    if(isset($_POST['jmeno']) && !empty($_POST['jmeno']) && !ctype_space($_POST['jmeno']) &&
       isset($_POST['email']) && !empty($_POST['email']) &&
       isset($_POST['zprava']) && !empty($_POST['zprava']) && !ctype_space($_POST['zprava']) &&
       isset($_POST['rok']) && !empty($_POST['rok'] == date('Y')))
    {
         //Sem přijde odeslání emailu
    }
    else
    {
        $hlaska =  "Formulář není správně vyplněný!";
    }
}

?>
 
Odpovědět 2.11.2017 14:08
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na Miroslav Mucha
David Čápka:2.11.2017 15:05

empty() funguje i když tam klíč není, nevyhodí chybu. Nemusíš tam tedy používat isset(), když jsi tam dal empty(). Jinak to vypadá ok. Zvalidovat formulář dobře je samozřejmě dost práce, proto se to řeší až dále v kurzech, konkrétně se na to implementuje framework v kurzu Knihovny pro PHP

Odpovědět 2.11.2017 15:05
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Odpovídá na David Čápka
Miroslav Mucha:2.11.2017 17:21

Děkuju za odpověď :-)

 
Odpovědět 2.11.2017 17:21
Avatar
wartkor
Člen
Avatar
wartkor:22.12.2017 22:32

Ahoj můj kód mi nefunguje pošlete mi prosím celý správný kód. Můj kód: <?php
mb_internal_en­coding("UTF-8");
$hlaska = '';
if ($_POST) // V poli _POST něco je, odeslal se formulář
{
if (isset($_POST['jme­no']) && $_POST['jmeno'] &&
isset($_POST['e­mail']) && $_POST['email'] &&
isset($_POST['zpra­va']) && $_POST['zprava'] &&
isset($_POST['rok']) && $_POST['rok'] == date('Y'))
{
// Sem přijde odeslání emailu
}
else
$hlaska = 'Formulář není správně vyplněný!';
}
$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($a­dresa, $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.';

?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Kontaktní formulář</title>
</head>
<body>
<p>Můžete mě kontaktovat pomocí formuláře níže.</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"></tex­tarea>

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

</body>
</html>

Odpovědět  -2 22.12.2017 22:32
Káždý jednou začal a neuspěl hned na poprvé
Avatar
IT Man
Redaktor
Avatar
Odpovídá na wartkor
IT Man:23.12.2017 8:06
  1. Házej kód do tagu [ code ], tohle se nedá číst.
  2. Pokud máš nějaký problém, napiš jaký. Co nefunguje, co to hází za error, co by mělo fungovat a co něco dělat atd.
  3. Pod článkem máš ke stažení zdrojové kódy.
Odpovědět  +2 23.12.2017 8:06
Cokoliv a kdokoliv může jednou uspět.
Avatar
wartkor
Člen
Avatar
Odpovídá na IT Man
wartkor:23.12.2017 10:10

No jo ale tam není kód ale jen jak to má vypadat :/

Odpovědět  -1 23.12.2017 10:10
Káždý jednou začal a neuspěl hned na poprvé
Avatar
David Čápka
Tým ITnetwork
Avatar
Odpovídá na wartkor
David Čápka:23.12.2017 11:29

A to tlačítko "Stáhnout" je co? :-` Určitě bys ho našel, kdyby jsi se trochu snažil.

Odpovědět  +1 23.12.2017 11:29
Jsem moc rád, že jsi na síti, a přeji ti top IT kariéru, ať jako zaměstnanec nebo podnikatel. Máš na to! :)
Avatar
Peter Kovač
Člen
Avatar
Peter Kovač:17.1.2018 16:25

Neviete kde môže byť problém keď mi neodosiela email?

 
Odpovědět 17.1.2018 16:25
Avatar
Hando
Člen
Avatar
Odpovídá na Peter Kovač
Hando:17.1.2018 23:43

Třeba ti nikdo nepíše. :) Teď vážně - příčin může být mnoho, pokud neposkytneš víc informací, tak ti nikdo nemá šanci konkrétněji poradit.
Zkoušíš to na localhostu? Máš správně kód - nějaké chyby nevypisuje? Hlavičky?

 
Odpovědět 17.1.2018 23:43
Avatar
Petr Polášek:12.2.2018 17:45

Nevím proč, ale pokaždé, co vyplním formulář, tak mi to napíše, že je špatně vyplněný. Úplně stejně jsem zkusil vyplnit ten, který je zde ke stažení a ten šel.
Nevíte kde je chyba?

<?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 .= "Content-Type: text/html; charset=\"utf-8\"\n";
      $adresa = '[email protected]';
      $predmet = 'dasdasdasdasd';
      $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
      if ($uspech)
      {
        $hlaska = 'Email byl odeslan.';
      }
      else
        $hlaska = 'Email nebyl odeslan.';

    }
    else
        $hlaska = 'Formular neni spravne vyplneny!';
  }
?>


<!DOCTYPE html>
<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>mail</title>
    </head>
    <body>
        <?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="text" /></td>
            </tr>
            <tr>
              <td>Aktuální rok</td>
              <td><input name="rok" type="number" /></td>
            </tr>
          </table>
          <textarea name="zprava"></textarea><br />
        <input value="odeslat" type="submit" />
      </form>

    </body>
</html>
 
Odpovědět 12.2.2018 17:45
Avatar
Odpovídá na Petr Polášek
Michal Šmahel:12.2.2018 18:03

Ahoj, máš chybný parametr funkce date(). Více si můžeš přečíst třeba tady.

// Pozor na velikosti písmen
$short = date('y');
$long = date('Y');

Echo($short); // 18
Echo($long) // 2018
Odpovědět  +2 12.2.2018 18:03
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
 
Odpovědět 12.2.2018 18:59
Avatar
František Kreisinger:3.3.2018 18:45

Odkud se tam proboha vezme ta hláška "Je nutné zadat platnou e-mailovou adresu.", pokud jako "Váš email" zadám nějaký nesmysl a dám Odeslat?

Odpovědět 3.3.2018 18:45
Začátečník v PHP, HTML i webovém programování vůbec.
Avatar
IT Man
Redaktor
Avatar
Odpovídá na František Kreisinger
IT Man:3.3.2018 18:47

Myslíš takovou tu bublinu? To dělá prohlížeč, protože ten input je typu email. :)
Zde můžeš vidět všechny typy inputů: https://www.w3schools.com/…put_type.asp

Editováno 3.3.2018 18:48
Odpovědět 3.3.2018 18:47
Cokoliv a kdokoliv může jednou uspět.
Avatar
Odpovídá na IT Man
František Kreisinger:3.3.2018 18:49

Ano, to jsem měl na mysli. Díky.

Odpovědět 3.3.2018 18:49
Začátečník v PHP, HTML i webovém programování vůbec.
Avatar
Vojtěch Vích:10.4.2018 19:53

Ahoj, potřebuji nutně pomoct. Spustil jsem mailform.php z balíčku pod článkem a nemůžu zprávu odeslat. Jediné co jsem změnil byla adresa, na kterou jsem chtěl email odeslat. Pokaždé 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\htdocs\email\index.php on line 35

Když jsem to ještě před několika týdny zkoušel, žádná chyba/varování se mi nezobrazilo a program fungoval. Co myslíte? Je to chyba programu nebo je to mnou?

 
Odpovědět 10.4.2018 19:53
Avatar
IT Man
Redaktor
Avatar
Odpovídá na Vojtěch Vích
IT Man:10.4.2018 21:39

Ahoj,
nemáš nastavené odesílání E-mailů. Na to, jak se to nastavuje, se podívej na následující článek:
https://www.itnetwork.cz/…maily-limity

Odpovědět 10.4.2018 21:39
Cokoliv a kdokoliv může jednou uspět.
Avatar
Odpovídá na IT Man
Vojtěch Vích:13.4.2018 11:37

OK, díky moc za pomoc :-)

 
Odpovědět 13.4.2018 11:37
Avatar
Jan Jedlička:24.5.2018 19:05

ahoj možná se budu ptát na otázku co tu už byla. Jak se píše 2x $_POST['jmeno'] v isset($_POST['jme­no']) && $_POST['jmeno'] je z důvodu, že potom se mi ověří zda je zadaný údaj je položce "jmeno" výsledný TRUE ? Nevim jestli to dobře popisuji. Takže jako bych ověřoval zda $x a $x je pravda? děkuji za jakékoliv vysvětlení.

 
Odpovědět 24.5.2018 19:05
Avatar
Odpovídá na Jan Jedlička
Jaroslav Patrný:15.7.2018 23:49

Ahoj,
ano, ale musí zároveň(&&) platit i další podmínky, email, zprava, rok. Pokud se ptáš proč to je 2krát, tak např. v

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

(isset($_POST['jme­no']) kontroluje, jestli je odesláno dané pole a $_POST['jmeno'] jestli v tom poli něco je. Analogicky to je u dalších polí.

 
Odpovědět  ±0 15.7.2018 23:49
Avatar
Odpovídá na Jaroslav Patrný
Jan Jedlička:15.7.2018 23:55

Aha, uz to chapu. Diky

 
Odpovědět 15.7.2018 23:55
Avatar
Aleš Fišer
Člen
Avatar
Aleš Fišer:3.9.2018 12:18

Funguje odesílání fake mailů přes localhost i pro 64Windows? Mám stejný problém jako výše Vojtěch Vích , postupoval jsem přesně podle návodu na https://www.itnetwork.cz/…aily-limity/ i podle dalších tutoriálů na webu a nic nefunguje.Nevíte v čem by mohl být problém?Mám email s smtp doménou @email.cz ,ale předpokládám že taky patří pod smtp.seznam.cz

Děkuji za případnou radu

 
Odpovědět 3.9.2018 12:18
Avatar
jenda
Člen
Avatar
jenda:23.12.2018 16:15

Díky za článek, moc mi pomohl.

 
Odpovědět 23.12.2018 16:15
Avatar
David Javůrek:21. ledna 7:02

Největší boj byl s emailem na localhost, ale nakonec se zadařilo po doplnění záznamu v php.ini. Děkuji za poučný tutoriál.

 
Odpovědět 21. ledna 7:02
Avatar
Stanislav Dittert:24. ledna 19:47

Mě se na stránce hned pod textem Můžete mě kontaktovat pomocí formuláře níže. zobrazí chyba php: Notice: Undefined variable: hlaska in C:\xampp\htdoc­s\kontaktni_for­mular\index.php on line 15. Zkoušel jsem i odebrat tento script ale pak mi nefungoval formulář vůbec.

Pak nefunguje odeslání emailu z localhost i když sem upravil soubor php.ini viz navod v lekci, chyba scriptu 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\kontaktni_for­mular\index.php on line 52.

Nevíte prosím kde mám chybu/y? Děkuji moc.

 
Odpovědět 24. ledna 19:47
Avatar
Walter
Člen
Avatar
Walter:26. ledna 20:41

Ahoj, nevím proč se mi pořád ukazuje problém ?
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<?php
if($oznameni)
echo('<p>' . $oznameni . '</p>');

?>
<form method="post">
<fieldset>
<legend><h3>Při­pomínka</h3></le­gend>
<table>
<tr>
<td><label for="jmeno1">Vaše jméno: </label></td>
<td><input name="jmeno" type="text" placeholder="Ne­povinné"></td>
</tr>
<tr>
<td><label for="email1">Váš email: </label> </td>
<td><input name="email" type="email" placeholder="Po­vinné*" required></td>
</tr>
<tr>
<td><label for="rok1">Aktuální rok: </label> </td>
<td><input name="rok" type="number" placeholder="Po­vinné*" required></td>
</tr>
</table>
<textarea name="zprava" required placeholder="Po­vinné*"></tex­tarea>
<input type="button" value="submit">
</fieldset>
</form>
<?php
mb_internal_en­coding("UTF-8");
$oznameni='';
if ($_POST)
{
if (isset($_POST['jme­no']) && $_POST['jmeno'] &&
isset($_POST['e­mail']) && $_POST['email'] &&
isset($_POST['zpra­va']) && $_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]­nam.cz';
$predmet = 'Zpráva z phpProjektu';
$uspech = mb_send_mail($a­dresa, $predmet, $_POST['zprava'], $hlavicka);
if ($uspech)
{
$oznameni = 'Email byl úspěšně odeslán.';
}
else
$oznameni = 'Email se nepodařilo odeslat. Zkuste to znovu.';
}
else
$oznameni='Formulář není správně zadaný.';
}
?>
</body>
</html>
Ukazuje mi to:Notice: Undefined variable: oznameni in C:\xampp\htdoc­s\phpprojekt\in­dex.php on line 9

 
Odpovědět 26. ledna 20:41
Avatar
Walter
Člen
Avatar
Walter:27. ledna 15:16

Dobrý den můžete mi vysvětlit proč mi nefunguje mb_send_mail()
<?php
mb_internal_en­coding("UTF-8");

$hlaska = '';
if ($_POST)
{
if (isset($_POST['jme­no']) && $_POST['jmeno'] &&
isset($_POST['e­mail']) && $_POST['email'] &&
isset($_POST['zpra­va']) && $_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]­nam.cz';
$predmet = 'phpzprava';
$uspech = mb_send_mail($a­dresa, $predmet, $_POST['zprava'], $hlavicka);
if ($uspech)
{
$hlaska = 'YOP';
}
else
$hlaska = 'NOPE1';
}
else
$hlaska = 'NOPE';
}

?>

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Formulář</ti­tle>
</head>
<body>

<?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>Aktualni rok</td>
<td><input name="rok" type="number" /></td>
</tr>
</table>
<textarea name="zprava"></tex­tarea>

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

</body>
</html>

 
Odpovědět 27. ledna 15:16
Avatar
Odpovídá na Walter
Michal Šmahel:28. ledna 16:49

Ahoj, co konkrétně nefunguje? Vypisuje to nějakou chybu? Máš povolený výpis chyb? Příště prosím zdrojový kód vkládat přes ikonku </> (vedle smajlíka).

Odpovědět 28. ledna 16:49
Nejdůležitější je motivace, ovšem musí být doprovázena činy.
Avatar
Walter
Člen
Avatar
Odpovídá na Michal Šmahel
Walter:30. ledna 14:48

Píše to, že je chyba na tý řádce s emailem.

 
Odpovědět 30. ledna 14:48
Avatar
Walter
Člen
Avatar
Odpovídá na Michal Šmahel
Walter:5. února 17:30

Vyřešeno, kód je v pořádku akorát se to neodesílalo

 
Odpovědět 5. února 17:30
Avatar
Odpovídá na Walter
Stanislav Dittert:10. února 20:08

Domnívám se že je to z toho důvodu, že máš deklaraci proměnné 'oznameni' až v těle html kódu. Přesuň si část s verifikací a odesíláním emailu na začátek souboru jak je uvedeno v článku a potom ti to bude chodit. Ověřil sem to u sebe ...

 
Odpovědět 10. února 20:08
Avatar
Odpovídá na Stanislav Dittert
Stanislav Dittert:10. února 20:09

Vyřešeno, kromě nastavení php.ini a sendmail.ini ještě zafungovalo spustit xampp-control.exe jako administrator a potom již chodilo odesílání přes gmail v pohodě.

 
Odpovědět 10. února 20:09
Avatar
Lukas Dohnal
Člen
Avatar
Lukas Dohnal:13. února 14:19

Můžu se zeptat, co znamená a k čemu je 'tečka' před 'rovná se'?

Díky.

 
Odpovědět 13. února 14:19
Avatar
Daniel
Člen
Avatar
Daniel:16. února 13:13

Ahoj,nevíte jak upravit tento kód aby šlo poslat i příloha e-mailem.Budu rád když mi pomůžete.

KÓD PRO ÚPRAVU:

<?php

    mb_internal_encoding("UTF-8");

    $hlaska = '';
    if (isset($_GET['uspech']))
        $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
    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";
            $adresa = '[email protected]';
            $predmet = 'DET-CZ.E-MAIL';
            $uspech = mb_send_mail($adresa, $predmet, $_POST['zprava'], $hlavicka);
            if ($uspech)
            {
                $hlaska = 'Email byl úspěšně odeslán, brzy vám odpovíme.';
                header('Location: mailform.php?uspech=ano');
                exit;
            }
            else
                $hlaska = 'Email se nepodařilo odeslat. Zkontrolujte adresu.';
        }
        else
            $hlaska = 'Formulář není správně vyplněný!';
    }

?>

<!DOCTYPE html>
<html lang="cs-cz">
   <html>
 <head>
<meta http-equiv="X-UA-Compatible" content="IE=8" />
<meta http-equiv="content-type" content="text/html; charset=utf-8" />
<meta http-equiv="Content-Type" content="text/html; charset=Windows-1250" />

<link rel="stylesheet" href="/style.css">

<body background="/pozadi.png" bgproperties="fixed">

  <h1 class="center">FORMULÁŘ</h1>

        <title>Kontaktní formulář</title>
    </head>
    <body>
        <p>Kontaktní formulář zde:</p>

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

            $jmeno = (isset($_POST['jmeno'])) ? $_POST['jmeno'] : '';
            $email = (isset($_POST['email'])) ? $_POST['email'] : '';
            $zprava = (isset($_POST['zprava'])) ? $_POST['zprava'] : '';
        ?>


        <form method="POST">
            <table>
                <tr>
                    <td>Vaše jméno a příjmení:</td>
                    <td><input name="jmeno" style="border: 2px solid blue; background-color: yellow"type="text" value="<?= htmlspecialchars($jmeno) ?>"/></td>
                </tr>
                <tr>
                    <td>Váš email:</td>
                    <td><input name="email" type="email" style="border: 2px solid blue; background-color: yellow"<?= htmlspecialchars($email) ?>"/></td>
                </tr>
                <tr>
                    <td>Aktuální rok:</td>
                    <td><input name="rok" style="border: 2px solid blue; background-color: yellow" type="number" /></td>
                </tr>
                 <tr>
                     <td>Zpráva:</td>
                 </tr>
            </table>
            <textarea rows="5" cols="48" name="zprava" style="border: 2px solid blue; background-color: yellow"><?= htmlspecialchars($zprava) ?></textarea>
            <br />

 <button class="button"type="submit">ODESLAT</button>

        </form>
        <p><a href="http://Det-cz.euweb.cz">Zpět na hlavní stranu Det-cz</a></p>
    </body>
</html>
 
Odpovědět 16. února 13:13
Avatar
Daniel
Člen
Avatar
Daniel:16. února 13:16

Upravenej kód posílejte na
E-MAIL:

[email protected]
 
Odpovědět 16. února 13:16
Avatar
Odpovídá na Lukas Dohnal
Tomáš Novotný:16. února 16:13
.=, +=, -=

jde v principu o zkraty zápisu pro 'přičítání/při­dávání' též jako append/add atd...:

$str = 'Hello ';
$str = $str . 'World'; nebo zkratkou $str .= 'World';

oběma zápisy docílíme toho, že proměnná $str se bude rovnat 'Hello World';
obdobně pro číselné typy

$num = 10;
$num = $num + 10; totéž jako $num += 10;

výsledná hodnota $num bude rovna 20;

Odpovědět 16. února 16:13
∞ ... the exact amount of possibilities how to deal with the situation ... so by calm, your solution is one of many
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 229 zpráv z 229.