| Autor | Zpráva | ||
|---|---|---|---|
| Klainer Profil |
#1 · Zasláno: 12. 8. 2007, 10:59:09
Dobrý den,
mám tu asi pro vás banální, ale pro mě velký problémek s formulářem. Když příjdete na stránku s formulářem pod ním se automaticky vypíše : E-mail se nepodařilo odeslat příčinou asi bude nevyplnění kontaktních udajů, nebo špatné znění otázky ! Mno a já potřebuji, že když člověk příjde na stránku s formulářem tak pod ním napsané nic nebude ( nic se nevypíše ), ale po odeslání formuláře potřebují aby se pod ním objevilo: Zpráva byla úspěšně odeslána. A pokud byly špatně vyplněny udaje by se mělo vypsat : E-mail se nepodařilo odeslat příčinou asi bude nevyplnění kontaktních udajů, nebo špatné znění otázky ! Díky Tady přilážím kod mého formuláře: <?php $predmet = $_POST['predmet']; $email = $_POST['email']; $spam = $_POST['kontrola']; $zprava = $_POST['zprava']; if ($predmet!="" and $email!="" and $zprava!="" and $kontrola=="2") { Mail("martinhascak@gmail.com", $predmet, $zprava, "From: " . $email); $oznam = "<p>Zpráva byla úspěšně odeslána.</p>"; } else { $oznam = "<p>E-mail se <strong>nepodařilo odeslat</strong> příčinou asi bude nevyplnění kontaktních udajů, nebo špatné znění otázky !.</p>"; } ?> <div id="mailform"> <form action="" method="post"> <fieldset> <legend>Kontaktní formulář</legend> <label for="email">Váš email:</label> <input class="text" name="email" size="25" class="textpole" /><br /> <label for="predmet">Předmět:</label> <input class="text" name="predmet" size="25" class="textpole" /><br /> <label for="kontrola">Kontrola: 1+1 se rovná ?</label> <input class="text" name="kontrola" size="25" class="textpole" /><br /> <label for="zprava">Zpráva:</label> <textarea name="zprava" rows="6" class="textpole" cols="40"></textarea><br /> <input class="submit" type="submit" value="Odeslat" /> <?php if ($predmet!="" and $email!="" and $zprava!="" and $kontrola!=="2") { echo $oznam; } else { echo $oznam; } ?> </fieldset> </form> </div> |
||
| Alphard Profil |
#2 · Zasláno: 12. 8. 2007, 11:02:45
<input class="submit" type="submit" value="Odeslat" name="odeslano" />
if (isset ($_POST['odeslano'])) { // celý script } |
||
| Klainer Profil |
#3 · Zasláno: 12. 8. 2007, 12:21:18 · Upravil/a: Klainer
vyřešeno
|
||
| tiso Profil |
#4 · Zasláno: 12. 8. 2007, 13:29:10
Klainer - ten skript má zlú logiku, reišenie od Alphard-a je iba čiastočné.
Princíp: if(isset($_POST['odeslano'])){//form odoslany, mozem ho spracovat
|
||
| Klainer Profil |
#5 · Zasláno: 12. 8. 2007, 14:53:39 · Upravil/a: Klainer
diky mozná to pak skusím pokud dojdu na to jak to napojit
|
||
| Klainer Profil |
Mám tu pořád ještě problémek s ověřováním vysledku součtu číslic proti spamu ….
Procházím to celý den a nemůžu najít chybku urcite tam je viditelna ale jelikoz php mocnerozumím, tak se mi to hledáhůře. Pokud tedy máte čas podívejtese a případně skuste opravit dotyčnou chybku ve scriptu. Děkuji <?php
$cislo1 = rand(0, 9);
$cislo2 = rand(0, 9);
$vysledek = $cislo1 + $cislo2;
?>
<div id="mailform">
<form action="" method="post">
<fieldset class="ramecek">
<legend>Kontaktní formulář</legend>
<fieldset>
<label for="email">Váš email:</label>
<input class="text" name="email" size="25" class="textpole"
value="<?echo $_POST["email"]?>" />
</fieldset>
<fieldset>
<label for="predmet">Předmět:</label>
<input class="text" name="predmet" size="25" class="textpole"
/>
</fieldset>
<fieldset>
<label for="kontrola">Kolik je: <?php echo $cislo1.' + '.$cislo2.'
?';?></label>
<input class="text" name="kontrola" size="25" class="textpole"
/>
<input type="hidden" name="cislo1" value="<?php echo $cislo1;?>"
/>
<input type="hidden" name="cislo2" value="<?php echo $cislo2;?>"
/>
</fieldset>
<fieldset>
<label for="zprava">Zpráva:</label>
<textarea name="zprava" rows="6" class="textpole"
cols="40"></textarea>
<input class="submit" type="submit" value="Odeslat"
name="odeslano" />
</fieldset>
<?php
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$zprava = $_POST['zprava'];
if (isset($_POST['odeslano'])){
$vysledek = $_POST['cislo1']+$_POST['cislo2'];
if ($predmet!='' AND $email!="" and $zprava!='' and $vysledek =
$_POST['cislo1']+$_POST['cislo2']){
//Mail("martinhascak@gmail.com", $predmet, $zprava, "From: " . $email);
mail("martinhascak@gmail.com", $predmet, $zprava, "From:
webmaster@$SERVER_NAME
Reply-To: webmaster@$SERVER_NAME
X-Mailer: PHP/" .
phpversion());
$akce = 1;
}else
$akce = 0;
}
switch ($akce){
case '1':
echo '<p>Zpráva byla úspěšně odeslána.</p>';
break;
case '0':
echo '<p>E-mail se <strong>nepodařilo odeslat</strong> příčinou
pravděpodobně bude špatné vyplnění kontaktních údajů nebo číselný
výsledek.</p>';
break;
}
?>
</fieldset>
</form> |
||
| Alphard Profil |
#7 · Zasláno: 13. 8. 2007, 17:41:30
výsledek od uživatele máš v $_POST['kontrola']
and $vysledek = $_POST['cislo1']+$_POST['cislo2']){ bude to vždy správně a to hned ze dvou důvodů :-) 1. o řádek výše jsi to spočítal, teď provádíš ten stejný výpočet a porovnáš z předchozím výsledkem, jinak to být nemůže, HPH nedělá chyby v počítání do 20 :-) 2. porovnává se pomocí ==, ty jenom přiřazuješ a to vrátí TRUE bez ohledu na výsledek |
||
| Klainer Profil |
#8 · Zasláno: 13. 8. 2007, 20:01:39 · Upravil/a: Klainer
Aha diky za tip uz to sviští :)
|
||
| v6ak Profil |
#9 · Zasláno: 14. 8. 2007, 11:23:48
Klainer
Mail("martinhascak@gmail.com", $predmet, $zprava, "From: " . $email); Tomu říkám injekce hlaviček! Co takhle do emailu napsat?: jan.novak@gmail.com Alphard přiřazuješ a to vrátí TRUE To IMHO vrací přiřazenou hodnotu. |
||
| Alphard Profil |
#10 · Zasláno: 14. 8. 2007, 11:30:53
v6ak
která bude vyhodnocená jako TRUE (pravděpodobnost toho, že rand() určí 2x 0 je nízká, proto zanedbávám) ale jo, napsal jsem to špatně, máš pravdu |
||
|
Časová prodleva: 3 roky
|
|||
| Sanjay Profil * |
#11 · Zasláno: 20. 10. 2010, 20:33:56
ahoj zkusil jsem tento kod protže php moc nerozumím a pokusil jsem se to opravit podle vašich rad ale nejak mi to nejde poradíte v čom mam chybu prosím
<?php
$cislo1 = rand(0, 9);
$cislo2 = rand(0, 9);
?>
<div id="mailform">
<form action="" method="post">
<fieldset class="ramecek">
<legend>Kontaktní formulár</legend>
<fieldset>
<label for="email">Váš email:</label>
<input class="text" name="email" size="25" class="textpole"
value="<?echo $_POST["email"]?>" />
</fieldset>
<fieldset>
<label for="predmet">Predmet:</label>
<input class="text" name="predmet" size="25" class="textpole"
/>
</fieldset>
<fieldset>
<label for="kontrola">Kolik je: <?php echo $cislo1.' + '.$cislo2.'
?';?></label>
<input class="text" name="kontrola" size="25" class="textpole"
/>
<input type="hidden" name="cislo1" value="<?php echo $cislo1;?>"
/>
<input type="hidden" name="cislo2" value="<?php echo $cislo2;?>"
/>
</fieldset>
<fieldset>
<label for="zprava">Zpráva:</label>
<textarea name="zprava" rows="6" class="textpole"
cols="40"></textarea>
<input class="submit" type="submit" value="Odeslat"
name="odeslano" />
</fieldset>
<?php
$predmet = $_POST['predmet'];
$email = $_POST['email'];
$zprava = $_POST['zprava'];
if (isset($_POST['odeslano'])){
if ($predmet!='' and $email!="" and $zprava!='' and $_POST['cislo1']+$_POST['cislo2'] == $cislo1+$cislo2){
Mail("slreklamavemail.cz", $predmet, $zprava, "From: " . $email);
$akce = 1;
}else
$akce = 0;
}
switch ($akce){
case '1':
echo '<p>Zpráva byla úspešne odeslána.</p>';
break;
case '0':
echo '<p>E-mail se <strong>nepodarilo odeslat</strong> prícinou
pravdepodobne bude špatné vyplnení kontaktních údaju nebo císelný
výsledek.</p>';
break;
}
?>
</fieldset>
</form> |
||
| Sanjay Profil * |
#12 · Zasláno: 20. 10. 2010, 20:40:14
Ještě se vracím k tomu te chybi z emailem si nevšímejte jen překlep ale chyba je vtom že mne to nenecha odeslat zpravu počád píše "E-mail se nepodarilo odeslat prícinou pravdepodobne bude špatné vyplnení kontaktních údaju nebo císelný výsledek."
|
||
|
Časová prodleva: 16 let
|
|||
0