Autor Zpráva
Mirek Dk
Profil
Dobrý den,
jsem laik a tak si vše dělám "pokus - omyl". Nedovedu si poradit s tím, aby bylo možné připojit k formuláři soubor a odeslat. Proto se obracím na vás. příkaz na výběr souboru je asi input file, ale jak zapsat kontrolu přiložení (když je to povinné) a následné zapsání do odeslat_email.php ?

vlastní formulář: formular.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
    <meta name="Distribution" content="Global" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>Formular</title>
</head>


<body>
 <!-- kontrola overeni vyplneni formulare -->
<script language="JavaScript">
<!--
function Kontrola(f) {
var vysledek = true;
var strerr = "";


if (f.nick.value=="") strerr += "Nick\n";
if (f.email.value=="") strerr += "Email\n";
if (f.vyucen.value=="") strerr += "Vyučen\n";
if (f.obor.value=="") strerr += "Obor\n";



if ("" != strerr) {
    vysledek = false;
    alert("Níže uvedená pole nejsou vyplněna:\n\n" + strerr);
    }
return vysledek;
}
//-->
</script>

<center>
<br />
<form action="odeslat_email.php" method="post" onSubmit="return Kontrola(this);">

<table class="tabulka">
<tr><th colspan="3">
<font color="#ffff00">
<b>Informace jsou povinné.</b>
</font></th></tr>

<tr><th>Nick :</th><td><input type="text" name="nick" /></td></tr>
<tr><th>E-mail :</th><td><input type="text" name="email" /></td></tr>
<tr><th>Vyučen jako :</th><td><input type="text" name="vyucen" /></td></tr>
<tr><th>Obor posledního zaměstnání :</th><td><input type="text" name="obor" /></td></tr>

<tr><th></th><td><input class="submit" type="submit" name="submit" value="Odeslat formulář"/></td></tr>
</table>
</form>
</center>
</body>
</html>


Odesílání emailu: odeslat_email.php

<? 

$email2="muj@email.cz";
$datum2=date("Y-m-d H:i:s");

$mail_pro2 = $email2; // příjemce mailu
$predmet2 = "Data z formulare"; // předmět mailu
$zahlavi2 = "MIME-Version: 1.0\n";
$zahlavi2 .= "Content-Type: text/html; charset=windows-1250\n";
$zahlavi2 .= "Content-Transfer-Encoding: 8bit\n";
$zahlavi2 .= "From: muj@email.cz\n";


$text2="
DATA Z FORMULARE:<br />
NICK: $_POST[nick]<br />
EMAIL: $_POST[email]<br />
Vyučen: $_POST[vyucen]<br />
Obor: $_POST[obor]<br />

";

mail($mail_pro2, $predmet2, $text2, $zahlavi2);
?>
<meta http-equiv = "refresh" content="0; url=konec.php">
<?


Koncová stránka: konec.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1250" />
    <meta name="Distribution" content="Global" />
    <link rel="stylesheet" type="text/css" href="css/style.css" />
    <title>Formular</title>
</head>


<body>

<center>
<br />

<tr><td class="obrazek"><img src="images/bmw.jpg" /></td>
<tr><th class="c">Děkujeme za vyplnění formuláře</th></tr>
</table>
</form>
</center>
</body>
</html>
Enko
Profil *
Tady máš funkční příklad:
http://php.vrana.cz/ukladani-souboru-od-uzivatele.php
A metodou pokus-omyl se moc daleko nedostaneš. Pročti návody, manulál, atd...

Dále hodnoty z $_POST[] a $_GET[] přenášené do emailu prožeň funkcí htmlspecialchars(); kvůli bezpečnosti.
Mirek Dk
Profil
Mirek Dk:
To je právě to. Už nad tím sedím tři dny a nic. Nevím jak nahrát soubor do formuláře, který ho odešle na zadaný email. Omlouvám se, ale tomu příspěvku od Enka vůbec nerozumím. Ne každý kdo si chce něco vyrobit musí být odborník.
Alphard
Profil
Mirek Dk:
Někdo zkušenější právě ví, že odeslat soubor mailem není zrovna snadné, ani se nedivím, že se vám to metodou pokus-omyl nepodařilo. Mohu vám naznačit řešení s využitím Nette, jestli máte zájem.
Ugo
Profil
Mirek Dk:
1. přidej k formuláři (form) enctype="multipart/form-data" to ti zajistí možnost nahrávat soubory
2. přidej input s typem file (input type="file") a názvem např. obrazek
3. pokud nepřesáhne nahrávaná velikost post_max_size (to ztratíš i post), budeš mít superglobální proměnnou $_FILES která obsahuje nahrané soubory a případné chyby. (např. podpole $_FILES['obrazek']) doporučuju pročíst i s odkazy uvnitř http://www.php.net/manual/en/reserved.variables.files.php
4. když bude vše v pořádku - $_FILES['obrazek']['error'] bude prázdné a $_FILES['obrazek']['name'] plné, zkontroluješ co potřebuješ dál (přípona atp.)
5. stáhneš si PHPMailer protože jinak se z emailů zblázníš :) (v příkladech má odeslání přílohy) a jako přílohu mu dáš $_FILES['obrazek']['tmp_name']
6. zkontroluješ testovací email

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

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