Přidat otázku mezi oblíbenéZasílat nové odpovědi e-mailemVyřešeno PHP formulář - nedaří se odeslat

Vytvořil jsem tento formulář, který obsah má odesílat na e-mail. Při stisknutí napíše, že je nutné vyplnit všechna, přičemž vyplněná jsou. Kde dělám chybu?

<form action="odeslat.php" method="post">
<p style="text-align:center;">Jméno a příjmení: <input type="text" name="jmeno" size="20" /></p>
<p style="text-align:center;">Požadovaný tvar e-mailu: <input type="text" name="email1" size="15" /><select name="domena" size="1"> 
<option value="@slapanov.cz">@slapanov.cz</option><option value="@zs.slapanov.cz">@zs.slapanov.cz</option></select></p>
<p style="text-align:center;">Heslo pro přihlášení: <input type="text" name="heslo" size="15" /></p>
<p style="text-align:center;">Jiný (kontaktní) e-mail: <input type="text" name="email2" size="20" value="@" /></p>
<p style="text-align:center;">Poznámky: <textarea name="poznamky" cols="35" rows="5">-</textarea></p>
<p style="text-align:center;">Antispamová ochrana: 10 + 10 = <input type="text" name="spam" size="5" /></p>
<p style="text-align:center;">Příjemce zprávy: <input type="text" name="prijemce" size="42" value="ales@pospichalales.info" readonly="readonly" /></p>
<p style="text-align:center;">Předmět: <input type="text" name="predmet" size="35" value="Založení nové e-mailové schránky" readonly="readonly" /></p>
<p style="text-align:center;"><input type="submit" value="Odeslat" />&nbsp;&nbsp;&nbsp;<input type="reset" value="Vymazat" /></p>
</form>
<?php
$email2 = $_POST['email2'];
$hlavicka.= "Content-Type: text/plain; charset=\"utf-8\"\n";
$hlavicka.= "Content-Transfer-Encoding: base64\n";
$hlavicka.= "From: $email2\n";
$predmet = $_POST['predmet'];
$jmeno = $_POST['text'];
$email1 = $_POST['text'];
$domena = $_POST['text'];
$heslo = $_POST['text'];
$poznamky = $_POST['text'];
$spam = $_POST['spam'];
$prijemce = $_POST['prijemce'];
$jmeno = Base64_Encode($text);

if ($jmeno!="" and $email1!="" $domena!="" and $email2!="" and $heslo!="" and $poznamky!="" and $prijemce!="" and $spam=="20")
{
Mail($prijemce, $predmet, $jmeno, $email1, $domena, $email2, $heslo, $poznamky, $hlavicka);
echo "<h3>Úspěšně odesláno. Budete přesměrováni na hlavní stránku.</h3>";
}
else
{
echo "<h3>Odeslání se nezdařilo. Pravděpodobně jste nevyplnili všechny údaje, nebo nevíte kolik je 10 + 10. Budete přesměrováni na hlavní stránku.</h3>";
} 
?>
Předmět Autor Datum
$jmeno = $_POST['text']; $email1 = $_POST['text']; $domena = $_POST['text']; $heslo = $_POST['text']…
marekdrtic 12.09.2009 15:21
marekdrtic
Aha. Pokusím se opravit.
Aleš Pospíchal 12.09.2009 15:24
Aleš Pospíchal
Nedaří se mi to opravit. Pomuzete mi? Myslel jsem si, že to píše, že všechna pole nejsou vyplněna, a…
Aleš Pospíchal 12.09.2009 15:43
Aleš Pospíchal
Zapíná se to v php.ini, dej to tam třeba jako poslední řádek: error_reporting = E_ALL Máš tam někde…
marekdrtic 12.09.2009 16:21
marekdrtic
Kdyz se jedna o webhosting, tak mam tento soubor vytvorit v rootu? A kam se bude log ukladat?
Aleš Pospíchal 12.09.2009 16:28
Aleš Pospíchal
Do php.ini se nedostaneš. Dej si tam echa, jestli se ti ta proměnná vypíše. A porovnej s funkčním zp…
Kráťa 12.09.2009 17:16
Kráťa
Podle mě je problém v tomto $jmeno = $_POST['text']; $email1 = $_POST['text']; $domena = $_POST['te…
Kráťa 12.09.2009 17:22
Kráťa
Vyzkouším.
Aleš Pospíchal 12.09.2009 17:31
Aleš Pospíchal
Upravil jsem to, ale soubor odeslat.php ukazuje stále prázdnou stránku.
Aleš Pospíchal 12.09.2009 17:47
Aleš Pospíchal
Já nejsem v php kovaný. Ale nemáš v něm místo <?php pouze <? ? To mi dělalo na mém hostingu, že byla…
Kráťa 12.09.2009 17:59
Kráťa
Nemáš koukl jsem nahoru a pokud je to ten soubor, tak tam <?php je.
Kráťa 12.09.2009 18:00
Kráťa
Vyzkoušej to mé z ulozto.cz a jen si to ostyluješ.
Kráťa 12.09.2009 18:01
Kráťa
Bylo to trochu pracnější, ale ten tvůj funguje skvěle. Díky. poslední
Aleš Pospíchal 12.09.2009 19:38
Aleš Pospíchal
$jmeno = $_POST['text'];
$email1 = $_POST['text'];
$domena = $_POST['text'];
$heslo = $_POST['text'];
$poznamky = $_POST['text'];

WTF? Všechno je $_POST['text']? :-)

Ale problém je tady:

$jmeno = Base64_Encode($text);

Kde máš definovanou proměnnou $text ?

PS: Pro hledání takovýchto chyb si zapni error_reporting(E_ALL); a napíše ti to i poznámky, třeba Notice: Undefined variable $text in ......

Podle mě je problém v tomto

$jmeno = $_POST['text'];
$email1 = $_POST['text'];
$domena = $_POST['text'];
$heslo = $_POST['text'];
$poznamky = $_POST['text'];
$spam = $_POST['spam'];
$prijemce = $_POST['prijemce'];
$jmeno = Base64_Encode($text);

nemělo by to být třeba name té z formuláře?
$jmeno = $_POST['jmeno'];
$email1 = $_POST['email1'];
$domena = $_POST['domena'];
$heslo = $_POST['heslo'];
$poznamky = $_POST['poznamky'];
$spam = $_POST['spam'];
$prijemce = $_POST['prijemce'];
$jmeno = Base64_Encode($jmeno);

a s těmi echy

$jmeno = $_POST['jmeno'];
if ($jmeno =="") echo "promenna jmeno je prazdna!<br>";
atd.

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