Autor | Zpráva | ||
---|---|---|---|
Manny Profil * |
#1 · Zasláno: 26. 4. 2011, 12:53:29
Jelikož je mozek v útlumu, prosím o pomoc.
Následující kód by měl ověřovat zatržený chckbox, případně vypsat hlášku a následně uživatele přesměrovat jinam. Nejede mi ovšem ani jedno. <?php if (!empty($_POST)) { if (empty($_POST["terms"])) echo '<h3>You have to check confirmation with cancelation policy in the right checkbox!</h3>'; else { echo '<script type=\"Text/JavaScript\">location.assign(\"https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=pyB62gXhU1_BZzwHIrAUuzmizOhxrtEwki5nIIY5GkbCpbLidS5H8l5VRmO&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b0819838956b846fa597913729410f8930127a\");</script>'; } } else ?> <form id="objednat" action="<?php $_SERVER["PHP_SELF"];?>" method="post"> <fieldset><legend></legend> <table> <tr class="cervene"><td>2011, May 11.<br>excllusive glamour 4 days</td><td class="submit"><input type="submit" value="Koupit hned"></td></tr> <tr><td>2011, May 11.<br>excllusive glamour 4 days</td><td class="submit"><input type="submit" value="Koupit hned"></td></tr> </table> <div id="terms"> <input type="checkbox" name="terms" value="terms" <?php echo empty($_POST["terms"])? "":"CHECKED"?> ><span>I have read the terms of <a href="?str=storno">cancelation policy</a></span> atd... |
||
Jozin Profil * |
#2 · Zasláno: 26. 4. 2011, 13:23:04
Ahoj,
zkus do submitů dát jméno tzn. bude to vypadat takto: <input type="submit" name="koupit" value="Koupit hned"> A proč? Nahoře máš podmínku !empty($_POST), ale při odeslání je $_POST prázdná, když nemáš vyplněno jméno odesílacího tlačítka... Poté by ti hned mělo vše fungovat. Jozin. |
||
Manny Profil * |
#3 · Zasláno: 26. 4. 2011, 15:44:30
Jozin:
Jo díky, to jméno pomohlo. Ale ještě se mi to nepřesměrovává. |
||
Jozin Profil * |
#4 · Zasláno: 26. 4. 2011, 18:39:07
PHP umí přesměrovávat příkazem funkcí header, tak nevím k čemu je dobré tam echem vypisovat javascript, který může mít uživatel vypnutý a tak by se stejně nepřesměroval. místo tedy echa se scriptem tam zadej:
header('HTTP/1.1 200 OK'); header('Location: https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=pyB62gXhU1_BZzwHIrAUuzmizOhxrtEwki5nIIY5GkbCpbLidS5H8l5VRmO&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b0819838956b846fa597913729410f8930127a') Jozin. |
||
Manny Profil * |
#5 · Zasláno: 26. 4. 2011, 20:36:42
Jozin:
Jenže já už mám před tím výstup. A to se headeru nelíbí. <h2>Objednávkový formulář</h2> <form id="objednat" action="<?php $_SERVER["PHP_SELF"];?>" method="post"> <?php if (!empty($_POST)) { if (empty($_POST["terms"])) echo '<h3>You have to check confirmation with cancelation policy in the right checkbox!</h3>'; else { header('HTTP/1.1 200 OK'); header('Location: https://www.paypal.com/us/cgi-bin/webscr?cmd=_flow&SESSION=pyB62gXhU1_BZzwHIrAUuzmizOhxrtEwki5nIIY5GkbCpbLidS5H8l5VRmO&dispatch=50a222a57771920b6a3d7b606239e4d529b525e0b7e69bf0224adecfb0124e9b61f737ba21b0819838956b846fa597913729410f8930127a'); } } else .... |
||
Stano Profil * |
#6 · Zasláno: 26. 4. 2011, 21:08:39
<meta http-equiv="refresh" content="4;url=http://jina_adresa.cz/cokoliv"> http://www.jakpsatweb.cz/presmerovani.html#meta |
||
Manny Profil * |
#7 · Zasláno: 26. 4. 2011, 21:17:15
Stano:
To můžu použít leda tak v hlavičce, ale ne ve stávajícím scriptu. |
||
Stano Profil * |
#8 · Zasláno: 26. 4. 2011, 21:26:12
|
||
Jozin Profil * |
#9 · Zasláno: 26. 4. 2011, 22:59:02
Jednoduše se dá vyhodnocovací logika posunout nad výstup a tím vyřešit problém s header. metatagy patří do hlavičky html, což by si opět porušil... sice to nevyvolá chybu, jako v PHP, ale je to stejně špatné.
Doporučuji prvně udělat logiku vyhodnocování a pak výstup. Jozin. |
||
Manny Profil * |
#10 · Zasláno: 27. 4. 2011, 06:46:28
Jozin:
Celý script je v samostatném souboru, který includuju do indexu. Takže ani posunutí vyhodnocování na začátek souboru nepomáhá. |
||
Jozin Profil * |
#11 · Zasláno: 27. 4. 2011, 18:18:09
No tak jinak, prvně by to chtělo oddělit kompletně logiku od vzhledu (výstupu) a pak by s tím nebyl problém. Když to takto děláš, tak asi moc dlouho PHP nepoužíváš, a tak to prostě řeš tak, aby to fungovalo. Až se dostaneš do většího projektu, tak zjistíš, že to budeš muset oddělit a tím si i ušetříš spoustu banálních problémů.
Já mám například třídu, která zpracovává URL a druhou, která se stará o requesty a vše směřuji na Index. Při odeslání požadavku na vyhodnocení formuláře se tedy zpracuje formulář, případě se přesměruje a až se nic neděje vykreslí se template se vším, co jsem chtěl. Jozin. |
||
Manny Profil * |
#12 · Zasláno: 27. 4. 2011, 20:24:15
Jozin:
Netvrdím, že jsem PHP guru. Tvůj příspěvek mi moc nepomohl. |
||
panther Profil |
#13 · Zasláno: 27. 4. 2011, 20:27:23
Manny:
Jozin má pravdu. Celé to PHP z [#5] dej na začátek indexu , případný header tak bude před výstupem. U textu/hlášky použij místo echa proměnnou, kterou pak vypiš tam, kde potřebuješ.
|
||
Manny Profil * |
#14 · Zasláno: 28. 4. 2011, 09:57:29
panther:
Udělal jsem, jak jsi říkal: <?php if (!empty($_POST["koupit"])) { if (empty($_POST["terms"])){ $chyba = true; } else { header("location:https://www.paypal.com/"); } } else ?> <!doctype html public "-//W3C//DTD HTML 4.01//EN">... Ale pořád mi to tvrdí, že je tam výstup! |
||
Časová prodleva: 13 let
|
0