fra <form ...> til </form> er meget lang, men her er html hvor captcha-en står
<p><img src="captcha.php" width="120" height="30" border="1" alt="CAPTCHA"></p> <p><input type="text" size="6" name="captcha" value=""><br> <small>copy the digits from the image into this box</small></p>
Nu taler vi nok forbi hinanden. Jeg har ikke selv server, men bruger et anerkendt webhotel. Glemte at skrive før, at posterne andetsteds i koden er defineret ligesom andre input.
Jeg kigger nu et helt andet sted: $_SESSION['security_code'] = $input; ligger i filen captcha.php som danner billedet med koden på
($_POST['captcha']); ligger i min formular (sammen med billedet)
Begge dele skal hentes og behandles i filen response.php derfor mangler der vist noget her: session_start(); if ($_POST['captcha'] != $_SESSION['security_code'] die("Sorry, the CAPTCHA code entered was incorrect!"); session_destroy(); else
responsen fylder 260 linjer og formularen fylder 215. Jeg har prøvet at sætte en sti ind, men det giver fejl. Den nu viste kode fra en anden captcha, men den giver også fejl session_start(); if /captcha.php/$text() !=($_POST["vercode"] die("CAPTCHA koden er forkert!"); echo '<strong>Incorrect verification code.</strong>'; else Jeg har nu prøvet 4-5 forskellige opskrifter på captcha-er fundet på nettet. Enten bliver tekst eller tal på billedet ikke vist, eller også vises der tal, men uden at forkert kode giver fejl. Heldigvis lykkes andre tiltag mod spam-udfyldning af formularerne, så en captcha kan undværes.
Nå men jeg lavede lige et lille forsøg: På en hjemmeside fandt jeg en meget enkel captcha. der er tre filer en form.php, en submit.php og en captcha.php form.php kalder filen submit.php, der afgør om koden er rigtig eller forkert. så er vi så langt. spørgsmålet er, om man man lægge et formkald ind i en eksisterende form, som kalder en response.php?
Du er en svær mand at hjælpe, Asky. Som jeg ser det løber du altid ind i supertrivielle problemer, som vi alle har prøvet, men jeg får aldrig lov til at se nok kode til at finde din fejl på de 3.5 sekund det plejer at tage. Hvad gør jeg så når det ikke virker?
1) Test-udskrifter. Hvis variabler indeholder værdier, så er jeg på sporet af noget. Hvis der ikke bliver udskrevet noget, så bliver jeg mistænksom - nåede den overhovedet til print-sætningerne? Så bliver de lige udvidet med f.ex.
Hvis heller ikke *-er og #-er kommer ud, så når de ikke til print-sætningerne. Og skulle der kun være et mellemrum som værdi, så kan jeg også se det.
2) Stadig problemer ... så laver jeg en minimal udgave af det jeg tester. En minimal HTML/PHP fil med <form...> ... </form> i, uden forstyrrende elementer. Og den tilhørende PHP-fil, der behandler indtastede værdier, begynder med udskrift af hele $_GET, $_POST, $_SESSION, $_COOKIES.
3) Stadig problemer ... så kan jeg nemt vise alt fra 2) til andre, der sikkert kan se fejlen.
Fra det lille forsøg form.php: <form action="submit.php" method="post"> Comment: <textarea name="coment"></textarea> Enter Code <img src="captcha.php"><input type="text" name="vercode" /> <input type="submit" name="Submit" value="Submit" /> </form> submit.php <?php session_start(); if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') { echo '<strong>Incorrect verification code.</strong>'; } else { // add form data processing code here echo '<strong>Verification successful.</strong>'; }; ?> og så captcha.php de tre virker fint sammen. --------------------- Mine formularer er alle opbygget med en formularfil og en response.php Formularen start t<?php echo $error_msg ?> <form action="response.php" method="post" onsubmit="return validate(this)"> <input name="context" value="opret" type="hidden"> <input name="return_page" value="<?php echo $_SERVER['PHP_SELF'] ?>" type="hidden"> <input type="hidden" name="subject" value="privatbestilling" > ... input felter ofte 30-40 stk - et enkelt tilfælde 150 letlæsningsbøger ...et maildesign og slutter med <input type="submit" name="Submit" onclick="return validate();" value="Send" />
Så før "de tre virker fint sammen" så virker det. Du kan taste en forkert captcha-værdi og du kan taste en rigtig, og det virker efter hensigten? Det lyder rigtigt.
I dit rigtige eksempel skal du så sørge for:
1) På din indtastningsside skal nedenstående være mellem <form...> og </form> Enter Code <img src="captcha.php"><input type="text" name="vercode" />
2) Allerførste linjer i din response.php skal være <?php session_start(); if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') { echo '<strong>Incorrect verification code.</strong>'; // et eller andet med die eller lignende. } else { // add form data processing code here echo '<strong>Verification successful.</strong>'; };
3) Og så lige: både onsubmit-validate og onclick-validate ...? Det er alt rigeligt med onsubmit.
Tak for løsningen. Efter jeg fjernede "else" -delen, som min kodetjekker ikke kunne lide, fungerer det perfekt:
session_start(); if ($_POST["vercode"] != $_SESSION["vercode"] OR $_SESSION["vercode"]=='') die("CAPTCHA koden er forkert!");{ Tak til Erik Jacobsen for ihærdig hjælp :-)
Synes godt om
Ny brugerNybegynder
Din løsning...
Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.