Naučit se HTML & CSS, JS a Bootstrap Sleva na školení
Získej 500 Kč na naše školení. Více zde
Probíhá výprodej HTML & CSS, JavaScript a Bootstrap
Avatar
Dominik Kutil:17. července 17:42

Ahoj potřeboval bych radu mám problém s odesíláním informací z vyplněného formuláře do emailu. email příjde ale prázdný. Budu rád za každý postřeh.

Zkusil jsem: <?php
$jmeno = $_POST['jmeno'];
$telefon = $_POST['telefon'];
$email = $_POST['email'];
$prijezd = $_POST['prijezd'];
$odjezd = $_POST['odjezd'];
$osoby = $_POST['osoby'];
$pokoj = $_POST['pokoj'];
$poznamka = $_POST['poznamka'];
$karta = $_POST['karta'];
$kartajmeno = $_POST['kartaj­meno'];
$kartaplatnost = $_POST['karta­platnost'];

$to = "[email protected]­xx.cz";
$extra = "From: $email\r\nReply-To: $email\r\nContent-Type: text/plain; charset=\"utf-8\"\r\nContent-Transfer-Encoding: 8-bit\r\n";
$subject = "Rezervace od ".$jmeno."";
$mess = "Jméno a příjmení: ".$jmeno."\nTe­lefoní číslo:".$tele­fon."\nEmailo­vá adresa: ".$email."\nDatum příjezdu:".$pri­jezd."\nDatum odjezdu: ".$odjezd."\nPočet osob: ".$osoby."\nTyp pokoje:".$pokoj­."\nPřání a upřesnění: ".$poznamka."\nČís­lo platební karty: ".$karta."\nJméno držitele karty: ".$kartajmeno­."\nPlatnost karty: ".$kartaplatnos­t."\n";
if(Mail($to, $subject, $mess, $extra)) echo "Email byl odeslán";
else "Nastala chyba. Prosím opakujte rezervaci";

?>

Chci docílit: A email přijde asi takhle :
Jméno a příjmení:
Telefoní číslo:
Emailová adresa:
Datum příjezdu:
Datum odjezdu:
Počet osob:
Typ pokoje:
Přání a upřesnění:
Číslo platební karty:
Jméno držitele karty:
Platnost karty:

 
Odpovědět 17. července 17:42
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Dominik Kutil
Jaroslav Smrž:17. července 17:56

To jako vážně???!!!! Ty chceš zasílat tyto údaje mailem? Jméno a příjmení, číslo karty, platnost... Buď rád, že ti to nefunguje. Toto vážně není dobrý nápad. V lepším případě dostaneš jen pokutu za porušení GDPR, v tom horším (až to někdo zneužije) budeš čelit trestnímu stíhání.

Nahoru Odpovědět  +5 17. července 17:56
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Dominik Kutil:17. července 18:02

Takhle to funguje všude a už dlouho. V jiném případě jak by jsi to t Dy řešil ty?

 
Nahoru Odpovědět 17. července 18:02
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:17. července 18:02

Souhlasím s Jaroslavem, opravdu není bezpečné to posílat, buď rád že ti to nefunguje, kdyby ti to fungovalo, tak už ti to nikdo neřekne. Jako náhradu bych spíše navrhl způsob že pošleš odkaz který bude fungovat jen tomu uživateli (bude se muset přihlásit) a tam budeš mít vypsané to co potřebuješ a nebo najdi nějaké jiné řešení, ale takovýto způsob určitě není ten pravý.

 
Nahoru Odpovědět  +3 17. července 18:02
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Dominik Kutil
Jaroslav Smrž:17. července 18:08

Tato data by měla být šifrována tzn počínaje HTTPS, až do uložení šifrovaného záznamu do databáze. Klient by měl dostat email kde by bylo vidět max. první 4 číslice karty, určitě ne platnost. Nejlépe, aby každý klient měl vytvořený svůj účet a pomocí něj mohl spravovat a zobrazovat platební metody atd. Opět přes šifrovanou komunikaci. S tímhle není legrace.

Nahoru Odpovědět  +3 17. července 18:08
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Dominik Kutil:17. července 18:29

Ale tohle je rezervační formulář, který jde na email schránku, která je zabezpečena. A je to formulář na penzion

 
Nahoru Odpovědět 17. července 18:29
Avatar
Dominik Kutil:17. července 18:48

A tedy je problém jen v té kartě nebo celkově. Protože jak má penzion získat garanci když tam nedají kartu (ty informace jdou jen na ten e-mail recepce a oni pak zvlášť kontaktují dotyčného)

 
Nahoru Odpovědět 17. července 18:48
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Dominik Kutil
Jaroslav Smrž:17. července 18:57

To je úplně jedno, co to je a k čemu to je. Prostě nemůžeš takhle nakládat s citlivými údaji a ještě k tomu najednou v 1 emailu, který je generovaný. BTW: cvc kód bys od nich nechtěl? :-) Jak jsem ti psal, pokud chceš tyto údaje zpětně avizovat klientům, chtělo by to celé od základu předělat. Pokud se jedná pouze o rezervační systém, tak nepotřebuješ číslo karty ani platnost. A máš vůbec ošetřený systém rezervací? Co když ti na 1 den přijdou 3, 4 rezervace o celkovém počtu 30 osob a ty budeš mít kapacitu jen pro 10, ale všem už automaticky pošleš potvrzení? To je trochu na hov**, že? Proto je potřeba stejně systém postavit na databázi, kde při další rezervaci budeš ověřovat dostupnost. Nehledě na komfort při vyhledávání a další správě rezervací a osobních údajů. Na tvém místě bych se vrátil na úpný začátek k návrhu systému.

Nahoru Odpovědět  +2 17. července 18:57
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Dominik Kutil:17. července 19:04

Cvc kód mám rozepsány, a kapacitu taky vyřešenou jde mi jen o to že oni to výplní a mě ty informace jdou do schránky (tu kartu smažu po domluvě se zákazníkem - upozornil jsem je na to) a oni pak každého osobně kontaktují . Jde mi o klasické informace jméno příjmení datum rezervace atd

 
Nahoru Odpovědět  -1 17. července 19:04
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Dominik Kutil
Jaroslav Smrž:17. července 19:14

Cvc kód mám rozepsány

Jak rozepsány? CVC kód je na zadní straně platební karty a nelze bez něj provést platbu online
Nezlob se, ale nevypadá to, že bys byl profesionál nebo alespoň měl měl snahu vzít si k srdci rady, které se ti tu snažíme dát, proto se nebudu podílet dál na řešení tvého problému. Doporučím ti jen pročíst si místní tutoriál o základech php, kde je popsán kontaktní formulář https://www.itnetwork.cz/…ovy-formular

Nahoru Odpovědět  +2 17. července 19:14
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Dominik Kutil:17. července 19:21

Já myslel jiný kód což je ale jedno. Profesionál nejs věnuji se Javě ne PHP tohle mám jen jako bokovku ale což byl i důvod proč jsem psal o radu. Děkuji že jste mi připomněli zákony jinak z PHP jste mi nic neporadili

 
Nahoru Odpovědět 17. července 19:21
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Dominik Kutil
Jaroslav Smrž:17. července 19:25

Tak proč to nenapíšeš v Java EE a trápíš se s php? Nechápu. A ohledně php jsme ti poradili formou odkazu na článek Davida Čápky, který tam podrobně popisuje kód pro tvorbu kontaktního formuláře.

Nahoru Odpovědět 17. července 19:25
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Jaroslav Smrž
Dominik Kutil:17. července 19:28

Protože jsem měl nápad jak to udělat přes PHP a nic ve zlém ale ten článek mi nepomůže to co tam je už dávno mám

 
Nahoru Odpovědět 17. července 19:28
Avatar
Milan Turyna
Redaktor
Avatar
Milan Turyna:17. července 20:00

Není to těmi tečky které tam máš? ".$jmeno."

Jinak bych možná volil u tich variable zapsání takovým to způs
$subject = "Rezervace od" . $jmeno;
a nebo $subject = "Rezervace od $jmeno"

 
Nahoru Odpovědět  +1 17. července 20:00
Avatar
Jaroslav Smrž
Redaktor
Avatar
Odpovídá na Dominik Kutil
Jaroslav Smrž:17. července 20:01

Nevím, proč by ti to nemělo pomoct. Ten jeho formulář funguje, tvůj ne. Dej sem celý obslužný kód formuláře, html formuláře a uvidíme. Pokud ho budeš vkládat, použij na to značky </> v editoru. Když to dáš do zprávy, těžko se v tom orientuje.

Nahoru Odpovědět 17. července 20:01
I have no idea what it is doing but I´m scared to delete it... xD
Avatar
Odpovídá na Dominik Kutil
Michal Štěpánek:18. července 7:58

Ještě jsem se nesetkal s ubytováním, kde by po mně chtěli při rezervaci číslo a platnost karty a abych pravdu řekl, asi bych rychle ty stránky opustil, kdyby toto chtěli. Existují lidé, kteří jednoduše žádnou kartu nemají a hlavně nevidím jediný důvod, proč bych měl tuto informaci někomu sdělovat. Pro rezervaci přeci není důležité, ze které karty se to bude pak platit, ale důležitý může být způsob úhrady...
A co se týče toho formuláře, trošku nechápu jaký jsi měl nápad na PHP, když v tom neděláš? Pokud umíš Javu, tak to spáchej v Javě, uživateli je stejně jedno, v čem je to psané, pro něj je důležitý výsledek...

Nahoru Odpovědět  +4 18. července 7:58
Nikdy neříkej nahlas, že to nejde. Vždycky se totiž najde blbec, který to neví a udělá to...
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18. července 8:50

https://www.itnetwork.cz/…ovy-formular
Ten clanek se mi nelibi. Mam radeji reseni copy-paste uplny funkcni kod. V tom clanku 70% kodu schazi. Kod je roztrhany na ruzna mista textu. A obsahuje chyby.

Dominik Kutil - kdyz ti to nefunguje, tak postup je takovy, ze do google zadas klicova slova a najdes jiny kod, ktery by mohl fungovat. A tak postupujes, dokud nenarazis na kousek kodu, ktery funguje. jj, jeste se musis hodne ucit :)

Dominik Kutil - A davas sem polovicni kod. Treba je chyba nekde jinde. A nasledujici kod jsem netestoval. Precti si hlavne poznamky s !!!. Kdyz smazes ty komentare, tak se dostanes zhruba na podobny pocet radku, jenom je ten kod prehlednejsi.

<?php
function abc($post=null)
        {
        // !!! tohle ty tam napriklad vubec neresis,
        //     zda uz bylo kliknuto na tlacitko odeslat, pak odesilas prazdne udaje, nejspis, uz pri nacteni stranky
        // byl formular odeslan?
        // ! Pozn: V html kodu mas <form method="post">, ne <form>, ne <form method="get">
        $sended = is_array($post) && count($post)>0;
        // $sended = is_array($post) && isset($post['xyz']) && isset($post['xyz']=='hodnota') // lepe neco takoveho
        if (!$sended)
                {
                echo 'Html formular nebyl odeslan na server.';
                return;
                }

        // precti form
        $names = array(
//              'notify'  => '',
                'jmeno'   => 'Jméno a příjmení',
                'telefon' => 'Telefoní číslo',
                'email'   => 'Emailová adresa',
                'prijezd' => 'Datum příjezdu',
                'odjezd'  => 'Datum odjezdu',
                'osoby'   => 'Počet osob',
                'pokoj'   => 'Typ pokoje',
                'poznamka'=> 'Přání a upřesnění',
                'karta'   => 'Číslo platební karty',
                'kartajmeno'    => 'Jméno držitele karty',
                'kartaplatnost' => 'Platnost karty'
                );
        $form = array();
        foreach ($names as $key=>$value)
                {
                $form[$key] = isset($post[$key]) ? $post[$key] : ''; // viz ten clanek, ten isset je tam nutny, ty to mas bez neho
                }

        // zde dopln validaci udaju - kontrola, zda jsou vyplneny spravne, jinak ti zahlti mail spam s viagrou
        // vysledkem bude $validated = true nebo false
        $validated = true;
        if (!$validated)
                {
                echo 'Html formular je spatne vyplneny.';
                return;
                }

        // mail
//      $from      = $form['email'];
        $from      = "[email protected]";
        $reply     = $form['email'];
        $to        = "[email protected]";
        $subject   = "Rezervace od ".$form['jmeno'];

        $headers   = array();
        $headers[] = "From: $from";
        $headers[] = "Reply-To: $reply";
        $headers[] = "Return-To: $reply";
//      if ($form['notify']==true)
//              {
//              $headers[] = "Disposition-Notification-To: $from";
//              $headers[] = "Return-Receipt-To: $from";
//              }
        $headers[] = 'MIME-Version: 1.0';
        $headers[] = 'X-Mailer: PHP/' . phpversion();
        $headers[] = 'Content-type: text/plain; charset=utf-8';
        $headers[] = 'Content-Transfer-Encoding: 8-bit';
        $headers   = implode(PHP_EOL, $headers);

        $arr = array();
        foreach($form as $key=>$value)
                {
                $arr[] = $names[$key].': '.$value;
                }
        $message = implode("\n", $arr);

        $sended = mail($to, $subject, $message, $headers);
        if(!$sended)
                {
                echo "Nastala chyba. Prosím opakujte rezervaci"; // !!! tady jsi mel else a zadny prikaz
                return;
                }
        echo "Email byl odeslán";
        }

abc($_POST);
?>
Editováno 18. července 8:51
 
Nahoru Odpovědět 18. července 8:50
Avatar
Peter Mlich
Člen
Avatar
Peter Mlich:18. července 9:14

Jo, tohle by mozna bylo moc fajn.
mb_internal_en­coding - pridat, viz clanek
mb_send_mail - to jsem nikdy nepouzil, ale mozna by to bylo fajn kvuli diakritice

DISKUZE = "bude hltit fora, aby mu nekdo pomohl tento problem resit"
A v tom clanku je spatne toto:
$hlavicka = 'From:' . $_POST['email'];
$hlavicka .= "\nMIME-Version: 1.0\n";
$uspech = mb_send_mail($a­dresa, $predmet, $_POST['zprava'], $hlavicka);

  • hned tlaci post primo do mailu, bez jakekoliv kontroly, takhle si novacek copy-paste na plnou schranku spamu a DISKUZE
  • ma tam "\n", pritom spousta clanku doporucuje pouzivat PHP_EOL. Kdyz to nebude fungovat, DISKUZE
  • a mozna lepsi pouzit implode pole a zadat tam jedinkrat ten znak. Soucasne to zjednodusi i zapis.

if ($_POST) // V poli _POST něco je, odeslal se formulář

  • ciste teoreticky, post existuje vzdy, lepsi je mozna sledovat pocet polozek a nebo konkretni input, treba type=hidden. Zda byly poslane nejake udaje a zda existuje $_POST['zpracuj'] a zda $_POST['zpracuj']=='ma­il'. Jakoze to ma zpracovavat script pro odeslani na mail a ne jiny pro ukladani do db.

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

  • echo funguje bez zavorek, detailista :)

A ten kod neni ve funkci, coz je mozna o 3 radky jednodussi, ale horsi pro dalsi zpracovani. Novacek tu funkci nebude umet napsat spravne a DISKUZE.
Jinymi slovy, takove kody jsou k novackum znacne neprivetive.
Vzpominam si, jak skvela byla dokumentace k Turbo-pascal-6, kdy jsem zkopiroval z ni asi 10 radku kodu pro read-key, ktery bych tehdy sam nevyplodil. Tehdy zadny google nebyl :)

 
Nahoru Odpovědět  +1 18. července 9:14
Avatar
Dominik Kutil:19. července 8:12

Děkuji konečně někdo kdo mi poradil

 
Nahoru Odpovědět 19. července 8:12
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 19 zpráv z 19.