Autor Zpráva
Jiko
Profil *
Dobrý den,
nefunguje mi formulář tak jak by měl, při načtení mi naskočí ihned, že nejde formulář odeslat a formulář jde odeslat i pokud jsou údaje prádné. Prosím poradte.

<?php

echo '<h3>Kontaktní formulář</h3>';

echo '<div class="kontakt">

<form method="post" action="login.php?id=kontakt">

<label for="kont_jmeno">Jméno a přijmení:</label><input type="text" id="kont_jmeno" name="kont_jmeno"><br>
<label for="kont_email">Email:</label><input type="text" id="kont_email" name="kont_email"><br>

<label for="kont_text">Text zprávy:</label><textarea id="kont_text" name="kont_text" cols="40" rows="5"></textarea><br><br>

<input style="margin-left: 300px; " type="submit" value="Odeslat"><br>

</form>

</div>';

$email = "pzleveling@gmail.com";
$predmet = "Podpora";
$zprava = $_POST["kont_text"];
$from = $_POST["kont_email"];

if (isset($_POST[kont_jmeno], $_POST['kont_email'], $_POST['kont_text'])){
mail($email, $predmet, $zprava, "From: $from");
echo '<p style="text-align: center; color: green;">Email úspěšně odeslán!</p>';

}

else {
echo "Email se nepodařilo odeslat!";
}

?>
mckay
Profil
Jiko:
Začal bych s tímhle

<?php if (isset($_POST['kont_jmeno'], $_POST['kont_email'], $_POST['kont_text'])){ ?>


Navíc si také nejsem jistý, že jde v isseT() oddělovat hodnoty pro otestování takto.
Edit: aha, tak jdou. Rozšířil si mi obzory.

Ale tím isset netestuješ, jestli jsou prázdné, ale jestli přišli. Zkus použít
<?php empty(); ?>


Moderátor DoubleThink: Nepoužívej obrázky, které nejsou k tématu.
Joker
Profil
Jiko:
To celé je soubor login.php?

Pokud ano, tak:
- Proč se na klienta nejdřív pošle formulář a až potom je skript? Je potřeba formulář pro odeslání další zprávy poté co zprávu odešlu?
- Pravděpodobně chcete použít funkci empty() místo isset().
- Chybí uvozovky, viz mckay.
- K čemu je dobrá GETem předávaná proměnná id?

mckay:
Navíc si také nejsem jistý, že jde v isseT() oddělovat hodnoty pro otestování takto.
Jde, viz manuál, nicméně Jiko potřebuje empty a ne isset.
Jiko
Profil *
Když tam dám empty vypíše mi to chybu.

Parse error: syntax error, unexpected ',', expecting ')' in /var/www/web5/masozrave.com/masozrave.com/ahoj/content/kontakt.php on line 25
Radek9
Profil
Jiko:
Musíte to oddělit (tzn. každou proměnnou zvlášť) a spojovat pomocí and.
<?php if (!empty($_POST['kont_jmeno']) and !empty($_POST['kont_email']) and !empty($_POST['kont_text'])){ ?>
Jiko
Profil *
Stále mi to vypisuje, že email nelze odeslat ještě před tím než se vůbec pokusím něco odeslat.
Joker
Profil
Jiko:
Stále mi to vypisuje, že email nelze odeslat ještě před tím než se vůbec pokusím něco odeslat.
...což by měl dělat i původní kód.
Příčinou je, že se testuje jen jestli pole jsou prázdná a ne jestli formulář byl vůbec odeslán.
Jiko
Profil *
Co bych měl udělat?
Molda
Profil
<?php
$email = "pzleveling@gmail.com";
$predmet = "Podpora";

if (isset($_POST['kont_jmeno'], $_POST['kont_email'], $_POST['kont_text']) AND
   (!empty($_POST['kont_jmeno']) AND (!empty($_POST['kont_email']) AND (!empty($_POST['kont_text'])))))
{
      $zprava = $_POST["kont_text"];
      $from = $_POST["kont_email"];
      mail($email, $predmet, $zprava, "From: $from");
      echo 'Email úspěšně odeslán!';
}
?>

Vaše odpověď


Prosím používejte diakritiku a interpunkci.

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