Autor | Zpráva | ||
---|---|---|---|
senior Profil |
#1 · Zasláno: 25. 3. 2013, 16:27:50
Príjemný deň,
neviem vyriesiť problém, aby mi ľudia nepísali do 2 polí formulára rovnaký obsah. Ďakujem za pomoc. |
||
martin1312 Profil |
#2 · Zasláno: 25. 3. 2013, 17:47:09
No neviem, čo je na tom ťažké, porovnáš obsah oboch polí, ak sú rovnaké tak vypíšeš nejaké upozornenie. Nenapísal si, či to potrebuješ v PHP, JavaScript alebo v niečom inom, takže lepšia odpoveď asi nie je.
|
||
senior Profil |
martin1312:
Formulár je v PHP. No neviem s tym pohnúť. Potrebujem porovnať 2 inputy, jeden s name=text a druhy s name=text2 |
||
martin1312 Profil |
#4 · Zasláno: 25. 3. 2013, 18:31:53
<?php if( trim($_POST['text']) == trim($_POST['text2']) ) //chyba else //pokracovanie v spracovani formularu |
||
senior Profil |
#5 · Zasláno: 25. 3. 2013, 18:49:16
martin1312:
Ďakujem veľmi pekne. Vedel som, že je to treba urobiť cez podmienku, ale nič mi nefungovalo. Idem to hneď vyskúšať. |
||
senior Profil |
#6 · Zasláno: 26. 3. 2013, 10:56:37
martin1312:
Nepodarilo sa mi to rozchodiť :-( |
||
peta Profil |
#7 · Zasláno: 26. 3. 2013, 11:07:00
senior: Tak to mas asi chybu v kodu. V kodu, ktery jsi nedal k dispozici. Kod od martin1312 vypada funkcni. On ho dal k dispozici a je mozne jeho kod zkoumat a hledat chyby.
|
||
senior Profil |
peta:
Tu je kód, kde treba vložiť tú podmienku: ... $message .= "\nDATUM: ".date('d.m.Y, H:i'); $kon = cs_mail ($to, $subject, $message, "From: $from\n"); if ($kon) { header("Location: ".$_POST[redirect]); } else { include "formerror4.php"; } ?> Stránka "formerror4.php" je stránka s chybovým hlásením. |
||
martin1312 Profil |
#9 · Zasláno: 26. 3. 2013, 12:13:19
posli kod s tou vlozenou podmienkou, som zvedavy, kde to davas...
|
||
senior Profil |
martin1312:
... $message .= "\nDATUM: ".date('d.m.Y, H:i'); if( trim($_POST['text']) == trim($_POST['text2']) ) //chyba else $kon = cs_mail ($to, $subject, $message, "From: $from\n"); if ($kon) { header("Location: ".$_POST[redirect]); } else { include "formerror4.php"; } ?> |
||
RockFire Profil |
Lépe to asi bude takto:
<?php $message .= "\nDATUM: ".date('d.m.Y, H:i'); if( trim($_POST['text']) == trim($_POST['text2']) ) include "formerror4.php"; else { cs_mail ($to, $subject, $message, "From: $from\n"); header("Location: ".$_POST['redirect']); } ?> Nevím, jak přesně funguje funkce cs_mail, předpokládám, že ji máte správně. |
||
senior Profil |
RockFire:
Ani toto riešenie nefunguje, chyba bude niekde inde. Funkcia cs_mail je v poriadku, pretože s inými podmienkami funguje normálne. Ukážka jednej z podmienok: ... $message .= "\nDATUM: ".date('d.m.Y, H:i'); if ($_POST["kod"] != "0000") { include "formerror1.php"; exit; } $kon = cs_mail ($to, $subject, $message, "From: $from\n"); if ($kon) { header("Location: ".$_POST[redirect]); } else { include "formerror1.php"; } ?> |
||
RockFire Profil |
#13 · Zasláno: 26. 3. 2013, 18:30:55
senior:
Funguje, teď jsem to dokonce velmi zjednodušeně naprogramoval, a jde to. Popiš přesně chybu, nevím, co znamená nefunguje. |
||
senior Profil |
RockFire,
Server vypíše túto hlášku: Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING, expecting ']' in /domains1/gh739400/public/www_root/form4.php on line 52 Riadok 52: header("Location: ".$_POST['redirect']); |
||
RockFire Profil |
#15 · Zasláno: 27. 3. 2013, 11:21:36
senior:
Někde je chyba v uvozovkách. Můžete poslat celý skript, nebo alespoň rozsah řádků 50-52? |
||
peta Profil |
Co treba poslat cely kod? Pripadne vyuzit link na http://jsfiddle.net/ ? Kdyz to das do casti s JS, tak ti to jaksi obarvi a obarveni by mohlo prozradit problem s uvozovkami. kde se to jeste obarvuje urcite dobre, kde spatne a kde si nejsi jisty. Pripadne pspad umi obarvovani.
Jinak by tam mohl byt problem i se zavorkami u nove podminky. if (podm) {nic} else {$kon=cs_mail...;} if ($kon) { $_POST[redirect]); $redirect nebo index 'redirect' ? Prispevek [#11] RockFire, on ti to tam spravil a v nasledujicim kousku kodu to mas zase spatne.
Treba by mozna stalo za to si to prepsat takto, at vis, ze podminka funguje spravne a problem je jinde: <?php if( trim($_POST['text']) == trim($_POST['text2']) ) { echo 'chyba'; } else { echo 'proslo'; $kon = cs_mail ($to, $subject, $message, "From: $from\n"); } ?> |
||
senior Profil |
RockFire, peta:
Ďakujem vám veľmi pekne za ochotu a váš čas. Nie som žiadny guru v PHP a preto som poprosil o pomoc, pretože v mojom veku (66) ide už iba o hobby. Keďže sa mi to nepodarilo ani s vašou pomocou vyriešiť, tak som to vzdal, aj keď by mi to pomohlo. Nechápem prečo to s jednou podmienkou funguje viď. [#12] - keď sa zadá správne číslo kodu, zobrazí sa stránka o úspešnom odoslaní a keď sa zadá nesprávny kód, tak sa zobrazí stránka s chybovou hláškou. Chcel som iba vylepšiť stránku [#12] o podmienku [#3]. Prajem príjemný večer. |
||
Petr__ Profil * |
#18 · Zasláno: 27. 3. 2013, 18:45:05
senior:
Myslím, že se zbytečně vzdáváte příliš brzo, čímž jste navíc promrhal dosavadní snahu ostatních. Přidání jedné primitivní podmínky je prkotina. Asi děláte chybu, kterou si neuvědomujete, takže ji nejste schopen ani interpretovat. Proto tu už několikrát zazněla výzva k zaslání nejlépe CELÉHO kódu VČETNĚ vámi vložené podmínky. Nechcete to ještě zkusit? |
||
senior Profil |
Tu je celý kód:
<?php if ($_POST["website"] != "") { exit ("Toto vyplnil robot."); } // ****************************************************************************************** function autoUTF($s) { // detect UTF-8 if (preg_match('#[\x80-\x{1FF}\x{2000}-\x{3FFF}]#u', $s)) return $s; // detect WINDOWS-1250 if (preg_match('#[\x7F-\x9F\xBC]#', $s)) return iconv('WINDOWS-1250', 'UTF-8', $s); // assume ISO-8859-2 return iconv('ISO-8859-2', 'UTF-8', $s); } function cs_mail ($to, $subject, $message, $head = "") { $subject = "=?utf-8?B?".base64_encode(autoUTF ($subject))."?="; $head .= "MIME-Version: 1.0\n"; $head .= "Content-Type: text/plain; charset=\"utf-8\"\n"; $head .= "Content-Transfer-Encoding: base64\n"; $message = base64_encode (autoUTF ($message)); return mail ($to, $subject, $message, $head); } // ****************************************************************************************** $recipents = array("peter@centrum.sk"); // Email adresy, na ktore bude formular odoslany. V uvodzovkach, oddelene ciarkami $ignoreElements = array("redirect", "odoslat"); // Polia z formulara, ktore budu ignorovane $to = implode(", ", $recipents); $from = $_POST['Email']; // Odosielatel $subject = $_POST['Result']; $message =$_POST['Sprava']; $formerror1 = "Odoslanie prihlášky bolo neúspešné.<br>Pravdepodobne ste uviedli nesprávny kód.<br>Skúste prihlášku odoslať znova!"; foreach ($_POST as $key=>$value){ if (($value !="") && (!in_array($key, $ignoreElements))){ $message .= "\n".$key.": ".$value; } } $message .= "\nIP: ".$_SERVER['REMOTE_ADDR']; $message .= "\nDATUM: ".date('d.m.Y, H:i'); if ($_POST["kod"] != "0000") { include "formerror1.php"; exit; } $kon = cs_mail ($to, $subject, $message, "From: $from\n"); if ($kon) { header("Location: ".$_POST[redirect]); } else { include "formerror1.php"; } ?> |
||
peta Profil |
#20 · Zasláno: 28. 3. 2013, 10:34:38
if( trim($_POST['text']) == trim($_POST['text2']) ) zalamovani kodu forem si nevsimej. Je to na dva radky, ale cislo radku je stale 31 :) |
||
senior Profil |
#21 · Zasláno: 28. 3. 2013, 13:59:17
|
||
Petr__ Profil * |
#22 · Zasláno: 30. 3. 2013, 03:48:54
A co má nastat v případě, že se inputy text a text2 rovnají? Nemá se odeslat e-mail? Má se odeslat email jen s hodnotou jednoho inputu? Nebo?
|
||
senior Profil |
Petr_,
Ak by bol text v inputoch text a text2 rovnaký, tak by sa formulár nemal odoslať a mala by sa zobraziť stránka s chybovou hláškou (formerror1.php). Rovnako to funguje v podmienke if ($_POST["kod"] != "0000") { include "formerror1.php"; exit; } to znamená, že ak sa napíše iný kód ako 0000 (napr. 1111), tak sa zobrazí stránka formerror1.php. |
||
martin1312 Profil |
tak to pridaj k tej existujúcej podmienke:
<?php if ($_POST["kod"] != "0000" || trim($_POST['text']) == trim($_POST['text2'])) { include "formerror1.php"; exit; } |
||
Petr__ Profil * |
#25 · Zasláno: 30. 3. 2013, 15:11:13 · Upravil/a: Petr__
OK, tak tu zmíněnou část změňte na:
if ($_POST["kod"] != "0000" AND trim($_POST['text']) == trim($_POST['text2'])) { include "formerror1.php"; exit; } a mělo by to dělat co chcete. martin1312 byl dříve (a lépe). Ještě má oprava: if ($_POST["kod"] != "0000" OR trim($_POST['text']) == trim($_POST['text2'])) { include "formerror1.php"; exit; } |
||
senior Profil |
#26 · Zasláno: 30. 3. 2013, 16:19:53
martin1312: Petr_:
Ďakujem veľmi pekne za pomoc. Vy ste veľkí supermani ;-) Večer sa hneď do toho pustím a dám vedieť ako to funguje. |
||
senior Profil |
martin1312:
podmienka if ($_POST["kod"] != "0000" OR trim($_POST['text']) == trim($_POST['text2'])) { funguje presne ako som chcel.
Ďakujem všetým za pomoc, ochotu a čas, ktorý venovali môjmu problému. |
||
martin1312 Profil |
#28 · Zasláno: 30. 3. 2013, 18:54:47
Radi sme pomohli.
Inak ešte iba dodám, že: AND sa môže zapísať ako &&
OR sa môže zapísať ako ||
ak by si náhodou nevedel, prečo to tam je. |
||
senior Profil |
#29 · Zasláno: 30. 3. 2013, 23:22:34
martin1312:
Ďakujem veľmi pekne za info. Priznám sa, že o tej informácii som ani netušil. Ja som iba taký obyčajný samouk, za mňa sa to v škole neučilo a som rád, že som sa naučil zasa niečo nové. |
||
Časová prodleva: 11 let
|
0