Autor Zpráva
sebas
Profil
Dobrý den,
potřeboval bych poradit s trochu složitějším formulářem. Musím předem říct, že jsem vcelku začátečník, stránky píšu především pomocí CSS a HTML, takže nejsem příliš zběhlý v php a když jsem se díval na internetu na řešení, tak jsem na tom vždy skončil.

Mám jednoduchý formulář

<form action="?????">
Jméno: <input name="jmeno"><br>
E-mail: <input name="email"><br>
<input type="submit" value="Odeslat">
</form>

a chci aby po vyplnění se na vyplněný e-mail poslalo pdfko (nebo odkaz na něj), ale zároveň to někde zaznamenalo tento mail.
Jako je to např. www.bforb.cz/publikace-zdarma.html

předem díky
Tomáš123
Profil
sebas:
Chýba ti metóda posielania a atribút action má obsahovať cestu k súboru, ktorý formulár spracuje.
Inak je to celkom jednoduché:
1. Spracuješ prijaté hodnoty, zistíš, či boli vyplnené a ošetríš ich pomocou funkcie htmlspecialchars().
2. Pripravíš si obsah na odoslanie a pripojíš tam odkaz na súbor.
3. Odošleš celý e-mail.

Celé by to mohlo vyzerať nejako takto:
<?php
  $name = htmlspecialchars($_POST['name']);
  $email = htmlspecialchars($_POST['email']);
  if(!empty($name) and !empty($email) {
    $message = "Ahoj $name\n";
    $message .= "Z mojej stránky si si nechal posielať e-mail s PDF súborom. Tu si ho môžeš <a href=\"nejaka/cesta/subor.pdf\" title=\"názov PDF súboru\">zobraziť</a>."
    if(mail($email, "Reklama", $message)) {
      echo "E-mail bol úspešne odoslaný";
    }
    else {
      echo "E-mail sa nepodarilo odoslať.";
    }
  else {
    echo "Vyplň prosím všetky požadované hodnoty!";
  }
?>

Do skriptu nie je zakomponovaná funkcia na automatickú detekciu kódovania. Všetko je vo FAQ, ale nechcel som kvôli nesprávnej implementácii zaviesť do kódu chyby, či učiniť skript príliš zložitým.

Šlo by ešte validovať e-mail pomocou regulárnych výrazov, či zabrániť opätovnému odoslaniu kým neprejde určitý čas od predošlého odoslania.

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0