Autor | Zpráva | ||
---|---|---|---|
margotka Profil |
#1 · Zasláno: 18. 3. 2013, 14:14:09
Ahojte, potreboval by som pomôcť,
mám spravený formulár a funguje v poriadku akurát niekedy mi príde správny email s nevyplneným formulárom, i keď v ňom mám podmienku, kt. prikazuje vyplniť všetky údaje a aj funguje. Odosiela to iba poslednú časť ofrmulára (ako keby sa refrešla posledná stránka, ktorá zabezpečuje odosielanie). zabezpečil som to takto: <p><strong>Odoslanie objednávky:</strong></p> <? $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; ?> <? $text=""; $row = split(";", $basket); for ($i = 0;$i<sizeof($row)-1;$i++) { $text = $text.$row[$i].""; } $text = $text." "; $udaje_text=""; $udaje_rw = split(";", $udaje); for ($i = 0;$i<sizeof($udaje_rw);$i++) { $udaje_text = $udaje_text.$udaje_rw[$i]."\n"; } ?></p></font> <? echo(ereg_replace("\n","<br>",$text)); echo("<br><br><p><strong>Na adresu:</strong></p>"); echo(ereg_replace("\n","<br>",$udaje_text)); if(empty($text) || empty($udaje_text) || empty($zahlavi)) { echo ("Chyba"); die; } else { if (@mail("t.masko@gmail.com","Objednávka na tovar z www.nikomi.sk",$text."\n\n".$udaje_text.$zahlavi)) { echo("<br><p><strong>Objednávka bola odoslaná </strong></p>"); } else { echo("<br><p>Chyba : <strong>Objednávka nebola odoslaná, skontrolujte si správnosť všetkých údajov! </strong></p>"); } } ?> die; neodošle mi to formulár aj keď je vyplnený... nevedeli by ste mi nejak poradiť ?
Ďakueje |
||
mzk Profil * |
#2 · Zasláno: 18. 3. 2013, 14:36:21
margotka:
„lenže problém je že keď tam dám die;“ pokud myslíš to die na řádku 32: to by teda mělo znamenat, že je podmínka splněna -> ukončí se script -> neodešle se mail kdyžtak sem hoď celý kód.. --------------------------------------------------------------------------------------------------- ale máš to dost nepřehledně psaný - žádný odsazení... blbě se v tom orientuje |
||
margotka Profil |
Toto je prvá časť kt. sa volá send.php a z nej sa vlastne kliknutím na tlačidlo Potvrdiť dostávame na odoslanie údajov, kde bol ucedený aj ten
die
<? echo("<b>Meno, priezvisko:</b> ".ereg_replace("\"","",$meno)."<br>"); echo("<b>Mesto:</b> ".ereg_replace("\"","",$mesto)."<br>"); echo("<b>Ulica:</b> ".ereg_replace("\"","",$ulica)."<br>"); echo("<b>PSČ:</b> ".ereg_replace("\"","",$psc)."<br>"); echo("<b>Telefón:</b> ".ereg_replace("\"","",$tel)."<br>"); echo("<b>E-Mail:</b> ".ereg_replace("\"","",$email)."<br>"); echo("<b>IČO:</b> ".ereg_replace("\"","",$ico)."<br>"); echo("<b>IČ DPH:</b> ".ereg_replace("\"","",$icdph)."<br><br>"); echo("<b>Poznámka:</b><br>".ereg_replace("\"","",$pozn)."<br>"); ?> <? $udaje = "Meno: ".$meno.";"."Mesto: ".$mesto.";"."Ulica: ".$ulica.";"."PSČ: ".$psc.";"."Tel: ".$tel.";"."E-mail: ".$email.";"."IČO: ".$ico.";"."IČDPH: ".$icdph.";".";" ."POZNÁMKA: ".$pozn.";"; $tmp = ereg_replace("\"","",$udaje); $udaje=$tmp; ?></p> <table border="0"> <form name="frm1" method="post" action="odoslane.php"> <input type="hidden" name="udaje" value="<?echo($udaje)?>"> <input type="hidden" name="basket" value="<?echo($basket)?>"> <input type="hidden" name="where" value="9"> </form> </table> a druhá časť kt. sa volá odoslané.php <table width="540" border="0" cellpadding="0" cellspacing="0"> <tr class="txt"> <td> <p><strong>Odoslanie objednávky:</strong></p> <? $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";?> <? $text=""; $row = split(";", $basket); for ($i = 0;$i<sizeof($row)-1;$i++) { $text = $text.$row[$i].""; } $text = $text." "; $udaje_text=""; $udaje_rw = split(";", $udaje); for ($i = 0;$i<sizeof($udaje_rw);$i++) { $udaje_text = $udaje_text.$udaje_rw[$i]."\n"; } ?> <? echo(ereg_replace("\n","<br>",$text)); echo("<br><br><p><strong>Na adresu:</strong></p>"); echo(ereg_replace("\n","<br>",$udaje_text)); if(empty($text) || empty($udaje_text) || empty($headers)) { echo ("Chyba"); die; } else{ if (@mail("moj@gmail.com","Objednávka na tovar z www.web.sk",$text."\n\n".$udaje_text.$zahlavi)) { echo("<br><p><strong>Objednávka bola odoslaná </strong></p>"); } } ?> </td> </tr> </table> |
||
Virtus Profil |
No tak jestli ta druhá část (odeslané.php) je celý kód, tak se ti to nikde neodešle, protože:
if(empty($text) || empty($udaje_text) || empty($zahlavi)) /* proměnná $zahlavi, není nikde definovaná, respektive, začne "existovat" až v momentě, kdy se ptáš, jestli je empty, a vten moment, do ní PHP přiřadí hodnotu NULL, neměla by tam místo ní být proměnná $headers? */ |
||
margotka Profil |
#5 · Zasláno: 18. 3. 2013, 15:16:05
jo mala, mal som to /*odlmčané*/ a zabudol som to prepísať počas toho ako sa stým dnes prplem... ale mne príde email vždy keď ho vyplním... vždy... problém je v tom, že niekdy mi prídu prázdne maily ako keby sa iba posledná stránka odoslane.php dala natvrdo do prehliadača a dokolo sa refrešovala... vtedy chodia prázdne maily iba s hlavičkou... a neviem ako tam mám spraviť nejakú podmienku, ktorá tomu zabráni.
|
||
Virtus Profil |
Takže email který vám příde prázdný, obsahuje pouze hlavičky a předmět bez textu?
v takovém případě si tam zkuste přidat tenhle kód: ob_start(); var_dump($text); $varDumpText = ob_get_contents(); ob_end_clean(); $text .= '<hr/>' . $varDumpText . '<hr/>'; if (@mail("moj@gmail.com","Objednávka na tovar z www.web.sk",$text."\n\n".$udaje_text.$zahlavi)){ ..... |
||
Tori Profil |
#7 · Zasláno: 19. 3. 2013, 01:29:10
Pár drobností: (čísla řádků budou vzhledem k [#1]):
- ř.9: V cyklu tímhle zadáním: for ($i = 0;$i<sizeof($row)-1;$i++) vynecháváte poslední položku. Je to úmysl?
- ř.28: if(empty($text) - podmínka nebude nikdy splněna, $text vždy obsahuje alespoň mezeru (přidáváte ji na ř.13).
- místo $text = $text.$row[$i]; je poněkud přehlednější psát $text .= $row[$i];
- jelikož jen vyhazujete uvozovky, dá se místo ereg_replace použít i obyčejná str_replace |
||
margotka Profil |
#8 · Zasláno: 19. 3. 2013, 08:33:16
Virtus:
mohli by ste mi prosím poradiť ako a kam presne zakomponovať tento kóh? nejak mi to nie je jasné :) |
||
Virtus Profil |
<table width="540" border="0" cellpadding="0" cellspacing="0"> <tr class="txt"> <td> <p><strong>Odoslanie objednávky:</strong></p> <? $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";?> <? $text=""; $row = split(";", $basket); for ($i = 0;$i<sizeof($row)-1;$i++) { $text = $text.$row[$i].""; } $text = $text." "; $udaje_text=""; $udaje_rw = split(";", $udaje); for ($i = 0;$i<sizeof($udaje_rw);$i++) { $udaje_text = $udaje_text.$udaje_rw[$i]."\n"; } ?> <? echo(ereg_replace("\n","<br>",$text)); echo("<br><br><p><strong>Na adresu:</strong></p>"); echo(ereg_replace("\n","<br>",$udaje_text)); if(empty($text) || empty($udaje_text) || empty($headers)) { echo ("Chyba"); die; } else{ ob_start(); var_dump($text); $varDumpText = ob_get_contents(); ob_end_clean(); $text .= '<hr/>' . $varDumpText . '<hr/>'; if (@mail("moj@gmail.com","Objednávka na tovar z www.web.sk",$text."\n\n".$udaje_text.$zahlavi)) { echo("<br><p><strong>Objednávka bola odoslaná </strong></p>"); } } ?> </td> </tr> </table> a přesně jak psal/a Tori: „- ř.28: if(empty($text) - podmínka nebude nikdy splněna, $text vždy obsahuje alespoň mezeru (přidáváte ji na ř.13).“ v [#3] to máte akorát na řádku 15, když si tohle tedy zkusíte poslat tak by Vám v emailu mělo přijít něco takového, pokud Vám přijde "prázdný" email: --------------------------------------------------------------------------------------------------- string(1) " " --------------------------------------------------------------------------------------------------- Edit: Ještě poznámka k té podmínce: if(empty($text) || empty($udaje_text) || empty($headers)) array(1) { [0] => string(0) "" } |
||
margotka Profil |
#10 · Zasláno: 19. 3. 2013, 12:11:22
Virtus:
neviem či som to teda pochopil správne, ak teda mám prsunúť podmienku if(empty($text) || empty($udaje_text) || empty($headers))
na trinásty riadok má to vyzerať takto? <? $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n";?> <? $text=""; $row = split(";", $basket); for ($i = 0;$i<sizeof($row)-1;$i++) { if(empty($text) || empty($udaje_text) || empty($headers)) { echo ("Chyba"); die; } $text = $text.$row[$i].""; } $text = $text." "; $udaje_text=""; $udaje_rw = split(";", $udaje); for ($i = 0;$i<sizeof($udaje_rw);$i++) { $udaje_text = $udaje_text.$udaje_rw[$i]."\n"; } ?> <? echo(ereg_replace("\n","<br>",$text)); echo("<br><br><p><strong>Na adresu:</strong></p>"); echo(ereg_replace("\n","<br>",$udaje_text)); ob_start(); var_dump($text); $varDumpText = ob_get_contents(); ob_end_clean(); $text .= '<hr/>' . $varDumpText . '<hr/>'; if (@mail("t.masko@gmail.com","Objednávka na tovar z www.web.sk",$text."\n\n".$udaje_text.$zahlavi)) { echo("<br><p><strong>Objednávka bola odoslaná </strong></p>"); } ?> |
||
Virtus Profil |
#11 · Zasláno: 19. 3. 2013, 13:07:11
Zkuste něco takového:
<table width="540" border="0" cellpadding="0" cellspacing="0"> <tr class="txt"> <td> <p><strong>Odoslanie objednávky:</strong></p> <? $headers = 'MIME-Version: 1.0' . "\r\n"; $headers .= 'Content-type: text/html; charset=UTF-8' . "\r\n"; $text = ""; if( !empty( $basket ) ){ $row = explode(';', $basket); for( $i = 0; $i < sizeof( $row ) - 1; $i++ ){ $text .= $row[$i]; } } if( !empty( $text ) ){ $text .= ' '; } if( empty( $udaje ) ){ $udaje_rw = array(); $udaje_text = ""; } else { $udaje_rw = explode(';', $udaje); for( $i = 0; $i < sizeof( $udaje_rw ); $i++ ){ $udaje_text .= $udaje_rw[$i]."\n"; } } echo( ereg_replace("\n",'<br>',$text) ); echo '<br><br><p><strong>Na adresu:</strong></p>'; echo(ereg_replace("\n",'<br>', $udaje_text)); if( empty( $text ) || empty( $udaje_text ) ){ echo 'Chyba'; die(); } else { if( @mail('moj@gmail.com', 'Objednávka na tovar z www.web.sk', $text . "\n\n" . $udaje_text . $headers ) ){ echo '<br><p><strong>Objednávka bola odoslaná </strong></p>'; } } ?> </td> </tr> </table> |
||
margotka Profil |
#12 · Zasláno: 19. 3. 2013, 19:25:57
Virtus
No skúsil som, ale nepríde mi email ani keď mám vyplnený formulár |
||
Tori Profil |
#13 · Zasláno: 20. 3. 2013, 08:44:24
margotka:
„nepríde mi email ani keď mám vyplnený formulár“ Tak to už je jiný problém, ne? Mohl třeba skončit v koši na spam. Anebo se vůbec neodeslal - třeba proto, že hlavičky mají být jako čtvrtý parametr, ne přilepené k obsahu zprávy. |
||
Virtus Profil |
Pokud jste to ještě stále nevyřešil, zkuste odstranit ten zavináč před tou funkcí mail, jestli vám to nebude hlásit nějakou chybu, i když by tedy asi nemělo a pokud programujete na ubuntu tak si můžete zkusit zobrazit log odeslaných/neodeslaných emailů:
cat /var/log/mail.log , na jiných systémech nevím kde jsou logy
|
||
margotka Profil |
#15 · Zasláno: 20. 3. 2013, 15:01:41
Virtus:
Funguje... :)) odstránil som zavináč a ide to Ďakujem vám veľmi pekne za rady Virtus: Tori: |
||
margotka Profil |
#16 · Zasláno: 20. 3. 2013, 18:38:13
Ešte by som sa Vás predsa len chcel spýtať na jednu vec, nechce mi to odosielať s diakritikou, a neviem kam má zakomponovať ten
$headers aby mi to prešlo. pretože mail mi príde len keď som headers vyhodil tak ako hovoril Tori a potom to funguje, ale tá diakritika nie.
|
||
Tori Profil |
#17 · Zasláno: 20. 3. 2013, 22:10:17
Nepsala jsem vyhodit, ale dát samostatně jako čtvrtý parametr. Ohledně diakritiky se koukněte do FAQ: Nejčastější potíže s PHP (FAQ) » Kódování e-mailu, aneb abychom neposílali otazníky.
|
||
Časová prodleva: 11 let
|
0