Fórum Root.cz
Hlavní témata => Vývoj => Téma založeno: Velouc 03. 07. 2011, 14:47:50
-
Podle návodu na http://www.jakdelatweby.cz/php/email.php (http://www.jakdelatweby.cz/php/email.php) jsem vytvořil 2 soubory. Je to formulář který se vyplní a odešle se na můj e-mail.
1. soubor: email.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>
<form action="posli.php" method="post">
<input name="email" size="25" value="Váš@mail"><br>
<input name="predmet" size="25" value="Předmět"><br>
<input name="spam" size="25"> <strong>= 1 + 1</strong><br>
<textarea name="zprava" rows="6" cols="55">Zpráva...</textarea><br>
<input type="submit" value="Odeslat">
</form>
</body>
</html>
2. soubor: posli.php
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>
<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
Mail("vase@adresa.com", $predmet, $zprava, "From: " . $email);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>
</body>
</html>
Jede mi to, ale chtěl bych do formuláře přidat výběrové pole, zatrhávací políčko a přepínače.
Jak na to?
-
Můj oblíbený web (mám to i offline): http://www.jakpsatweb.cz/html/formulare.html (http://www.jakpsatweb.cz/html/formulare.html)
-
Když dám do toho formuláře třeba checkbox, nahraju ho na server, vyplním a odešlu, tak mi na e-mail nepřijde že někdo zaškrtl to políčko.
-
Kouknul jsem do záloh, před asi deseti lety jsem takhle dělal jeden web.
Použil jsem funkci:
document.Mailer.action="mailto:xxxxxxxxxx@yyyyyyyyyy.cz"
Po stisknutí tlačítka udělá to, že otevře poštovního klienta s předvyplněným mailem a uživatel to odklepne.
Musím říct, že Opera to vůbec nepředvyplní, pro test jsem teď použil Rekonq.
Já tehdy používal jen input ( TYPE="text") a textarea.
Když do formuláře vložím:
<TR height=23>
<TD>Checkbox:</TD>
<TD><input TYPE="checkbox" SIZE=15 NAME="Checkbox"></TD>
</TR>
Pokud zatrhnu, tak se v mailu objeví:
Checkbox=on
když nezatrhnu, tak tam není nic.
-
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=windows-1250">
<title>Odesílání emailu</title>
</head>
<body>
<h1>Odesílání emailu</h1>
<?
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$spam = $_POST['spam'];
$zprava = $_POST['zprava'];
if ($predmet!="" and $email!="" and $zprava!="" and $spam=="2")
{
$subject = "=?utf-8?B?".base64_encode($predmet)."?=";
$headers = "MIME-Version: 1.0\n";
$headers .= "Content-Type: text/plain; charset=utf-8\n";
$headers .= "From: =?UTF-8?B?".base64_encode($predmet)."?=<".$email.">\n";
mail ("vas@email.cz", $subject, $zprava, $headers);
echo "<p><strong>Váš e-mail byl úspěšně odeslán</strong>.</p>";
}
else
{
echo "<p>Váš e-mail se <strong>nepodařilo odeslat</strong> pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 1 + 1.</p>";
}
?>
</body>
</html>
takto ?
-
Co znamená, že do formuláře přidáš checkbox? Že ho přidáš jenoim do email.php, přičemž posli.php zůstame nezměněný. Pokud ano, pak je problém v tom, že zaškrtuní se sice přenese na server, ale nic to zaškrtnutí nezpracuje. Každý element formuláře je vlastně nová proměnná, takže jí musíš také zpracovat, např.:
když do email.php přidáš
<input type="checkbox" name="zaskrtavatko" value="Zaškrtnuto">
musíš s tím udělat i něco v posli.php, např.
$zaskrtavatko = $_POST['zaskrtavatko'];
$zprava = $zprava."\n\n".$zaskrtavatko;
(předpokládám umístění pod $zprava = $_POST['zprava'];)
Lze požít i funkci isset($_POST['zaskrtavatko']) {}, protože proměnná zaskrtavatko se přenáší pouze pokud je checkbox zaškrtnut.
-
$mail_content = print_r($_POST, true);