Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailem PHP - formulář na e-mail

Dobrý den,
už dva dny dělám na php formuláři, který by mě ze stránky odeslal zprávu na můj e-mail, ale nedaří se a nedaří se. Jednou je problém s kódováním češtiny, podruhé zase s funkcí else, že mě hláška 'Váš e-mail byl úspěšně odeslán' vyskočí někde na jiné stránce, atd, atd...
Neměl by tedy někdo jednoduchý PHP skript, který vše vyřeší, už jsem četl diskuze, články, ale asi jsem úplně blbej.

Zdroj html:

<form method="post" action="skript.php">
<p>Vaše jméno:</p>
<p><input name="jmeno" /></p>
<p>Zpráva:</p>
<p><textarea name="zprava"></textarea></p>
<p><input type="submit" value="Odeslat" /></p>

Neměl by teda někdo jednoduchej skript, stačí mi dvě položky, jméno a zpráva, taky jsem zkoušel něco jako:

<?
function vypisForm($jmeno,$predmet,$text) {
echo "
<form method=post action=\"mail.php\">
Jméno:<br>
<input name=jmeno value=\"".$jmeno."\"><br>
Předmět:<br>
<input name=predmet value=\"".$predmet."\"><br>
Text zprávy<br>
<textarea style=\"width:200px; height:150px;\" name=text>".$text."</textarea><br><br>
<input type=submit value=Odeslat>
</form>
<br><br>
";
}

if (empty($_POST))
vypisForm("","","");
else {
if ($_POST["jmeno"]=="" || ereg("^ +$",$_POST["jmeno"])) {
echo "Zadejte prosím své jméno.";
vypisForm($_POST["jmeno"],$_POST["predmet"],$_POST ["text"]);
}
elseif ($_POST["predmet"]=="" || ereg("^ +$",$_POST["predmet"])) {
echo "Zadejte prosím předmět.";
vypisForm($_POST["jmeno"],$_POST["predmet"],$_POST ["text"]);
}
elseif ($_POST["text"]=="" || ereg("^ +$",$_POST["text"]) || strlen($_POST["text"]) > 500) {
echo "Text e-mailu by měl být v rozmezí 1-500 znaků.";
vypisForm($_POST["jmeno"],$_POST["predmet"],$_POST ["text"]);
}
else //nyní následuje samotné odesílání mailu {
if ($_SERVER["SERVER_ADDR"]!="127.0.0.1")
Mail ("vaseadresa@server.cz",$_POST["predmet"],$_POST[" text"],"From:".$_POST["jmeno"]);
echo "E-mail byl úspěšně odeslán.";
}
}
?>

Tento skript jsem sem skopíroval z jednoho článku, je volně šiřitelný, také jsem ho upravil dle mých názvů, atd...ale e-maily byly bez kódování čsštiny a chodily na mou adresu tak nějak divně - nebyla vyplněna adresa, předmět a v e-mailu bylo hodně zbytečných věcí - každopádně jsem byl nejvíce spokojen, echo se vypisovalo hnedka po odeslání pod formulář a má to i kontroly proti spamu, takže tak.

Děkuji

Jsou zobrazeny jen nové odpovědi. Zobrazit všechny
Předmět Autor Datum
Celý kód vypadá teď takto: html: <form method="post" name="dotaznik" action="zprava_zpracovani.php…
blue 26.05.2009 21:38
blue
Může být? To musíš vědět ty, jestli to vypadá a chodí podle tvých představ.
Kráťa 27.05.2009 00:04
Kráťa
Já jen, abych tam neměl nějakou zbytečnou chybu, ale všechno jde, takže děkuju moc :). Poslední otáz…
blue 27.05.2009 06:18
blue
Ne, zdrojové kody můžeš vidět pouze ty nebo kdokoli, kdo má přístup na tvoje FTP. Už z principu PHP…
marekdrtic 27.05.2009 06:59
marekdrtic
Uz jsem se stim setkal, ulozeni pod Unicode a najednou neslo presmerovani, problem byl prave vlozeny…
virus 27.05.2009 08:33
virus
Byte-order_mark poslední
Marvin 27.05.2009 08:36
Marvin

Celý kód vypadá teď takto:

html:

<form method="post" name="dotaznik" action="zprava_zpracovani.php" onSubmit="dotaznik.mujsubmit.value='Odesílá se...';">
<p>e-mail:</p>
<p><input type="text" name="jeho_mejl" size="40" /></p>
<p>text:</p>
<p><textarea name="jeho_text" rows="9" cols="50"></textarea></p>
<!-- spam -->
<p><input style="display: none; border: 1px solid green; background-color: green" type="text" name="spam" size="40" /></p>
<p><input class="tlacitko" type="submit" value="Odeslat" /></p>
</form>

zprava_zpracovani:

<?php
if (!empty($_POST['spam']))
{
echo "<center><h3>Do toho místa na SPAM píší pouze hloupí roboti a nejde jim to odeslat</h3></center>";
echo "<center><a href='mejl.html'> Zpět </a></center>";
}

else {
if (!empty($_POST['jeho_text']))
{
include "zprava_pokracovani.php";}
else
echo "<center><h3>Nebyly vyplněny povinné položky.</h3><a href='mejl.html'> Zpět </a></center>";
}
?>

zprava_pokracovani:

<?php
$ref = $_SERVER['REMOTE_ADDR'];
?>
<?php
$hlavicka="From:$jeho_mejl\n";
$hlavicka.="Content-Type: text/html; charset=utf-8\n";

$emailadr = "mojeadresa@server.cz"; //Vaše e-mailová adresa
$predmet = "vzkaz"; //Předmět zprávy
$zprava = "<html>
<head>
<title></title>
</head>
<body>";
$zprava .= "<b>IP: </b>".$ref."\r\n<br>\r\n<br>";
$zprava .= "<b>Vzkaz:</b> \r\n<br>".$_POST['jeho_text']."\r\n<br>";
?>

<?php if (Mail("$emailadr", "$predmet", "$zprava", $hlavicka)) { ?>

<?php

{
require "mejl_s_potvrzenim.html";
}

?>

<?php //==================== Zde končí potvrzení odeslání ================?>
<?php }
else
{
echo "Zprávu se nepodařilo odeslat";
}
?>

Může být?

Já jen, abych tam neměl nějakou zbytečnou chybu, ale všechno jde, takže děkuju moc :). Poslední otázka, kterou řeším ohledně php, jestli jdou zobrazit zdrojové kódy těch souborů jako u html? Asi ne, jelikož se to mění na serveru na to html, no.

Zpět do poradny Odpovědět na původní otázku Nahoru