login  Naam:   Wachtwoord: 
Registreer je!
 Forum

capcha aanpassing werkt niet

Offline putbruy - 14/12/2006 09:48 (laatste wijziging 14/12/2006 09:50)
Avatar van putbruyHTML beginner iemand vroeg me om een bestaand contactformulier spamvrij te maken.Na 3 dagen prutsen lukt het me nog niet.Hij blijft "de bevestigingscode is onjuist" echoen.Ik ben nog een echte php-noob,de CODE != SESSION gedeelte is het enige dat ik toegevoegd heb.Iemand ?
http://www.plaatscode.be/3444/

13 antwoorden

Gesponsorde links
Offline Dark_Paul - 14/12/2006 09:53
Avatar van Dark_Paul PHP ver gevorderde Echo $_SESSION['code'] eens ergens, en kijk of die overeenkomt met de code die getoond wordt.
Offline Nrzonline - 14/12/2006 10:16
Avatar van Nrzonline PHP ver gevorderde De toepassing van captcha's gaat vaak fout, bij de eerste keer. Dit komt omdat er een stap wordt overgeslagen bij het submitten. Als jij in je script van je captcha eerst een CODE aanmaakt, deze niet beschermd tegen een refresh, dan zal deze een nieuwe CODE toegewezen krijgen. Aangezien een submit-knop gegevens mee stuurt, en de pagina herlaad.

Dus je code van je captcha script kan mogelijk wel van pas komen bij dit probleem.
Offline Dark_Paul - 14/12/2006 10:30
Avatar van Dark_Paul PHP ver gevorderde Wat Nrzonline dus bedoelt, is dat de gegenereerde code bij het submitte, opnieuw gegenereerd wordt, waardoor de codes niet kloppen.
Je moet dus kijken of er gesubmit is of niet.
Is er nog niet gesubmit, maak dan een sessie aan met een code en laat je form zien.
Is er gesubmit, voer dan de controle uit en controleer of je sessie-code gelijk is aan de ingevoerde code.
De code voor de gebruiker dus alleen laten maken/verversen als het formulier getoond wordt.
Offline putbruy - 14/12/2006 10:38 (laatste wijziging 14/12/2006 10:46)
Avatar van putbruy HTML beginner krijg niets te zien bij de echo,de image met karakters verschijnt wel;
hier staat de code van de 'generator' die ik in een ander topic 'gekregen' heb.
http://www.plaatscode.be/3445/
zoals gezegd ,een php-noobie  ,heb ondertussen wel de ifset aangepast met POST'code' erbij zodat hij niet onmiddelijk de fout 'bevestigingscode is onjuist' echod.
Ohja en de submit laad opnieuw de contact.php met het formulier en de 'eeerste' code (mischien helpt dat  )
Offline Dark_Paul - 14/12/2006 10:48 (laatste wijziging 14/12/2006 10:51)
Avatar van Dark_Paul PHP ver gevorderde Zet de code waarmee je het plaatje genereerd eens in een apart bestand, captcha_gen.php ofzo.
Zet dan op de plek waar je het plaatje wilt tonen:
<img src="captcha_gen.php" alt="" />.
Ook kan je van dat code-genereren beter een functie maken.
Denk er dan wel aan de functie éérder aan te roepen (dus een code genereren) dan de <img>-tag, anders krijg je een probleem met de sessies, dat de sessievar niet bestaat enzo.

Ook belangrijk, maak de sessievar waar de code instaat meteen leeg. Om omzeiling van de captcha te voorkomen.
Zet ook wat headers in je captcha_gen.php om te voorkomen dat het plaatje in de Cache wordt gehouden.
De juist headers weet ik zo niet, maar die kan je gemakkelijk via Google vinden.
Offline putbruy - 14/12/2006 11:01 (laatste wijziging 14/12/2006 11:06)
Avatar van putbruy HTML beginner die code staat in random.php de plaatscode3445 is dus een andere pagina.
de <IMG.. staat net zoals je aangeeft op het form.
Dat van die functie eerder aan te roepen vereist wat meer uitleg vrees ik  
het testmodel staat op http://www.edwi...ontact.php
Offline b4nkr0bz0r - 14/12/2006 11:06
Avatar van b4nkr0bz0r PHP gevorderde session_start(); bovenaan ?
Offline putbruy - 14/12/2006 11:08
Avatar van putbruy HTML beginner ehm,wat bedoel je ?  
Offline Dark_Paul - 14/12/2006 11:09
Avatar van Dark_Paul PHP ver gevorderde Oké, dat plaatje is dus al OK.
Haal het deel waarin je je code genereert uit dat script op Plaatscode.be.
Zet bovenaan random.php de header
header('Content: image/png');
Zet om het genereergedeelte (wat je net hebt weggeknipt):
function code_gen() {
// het geknipte stuk
}
Als je een pagina hebt waar al meerder functies instaan, zet de functie dan daarin.
Maak anders een aparte pagina, bijv. functions.inc.php, en zet daar de code in (uiteraard met <?php ?>-tags eromheen).
Include de pagina functions.inc.php op de pagina waar je je functie nodig hebt. In die externe pagina kan je ook alle andere PHP-functies zetten die je hebt.
Als je gebruik maakt van een paginasysteem, dan kan je functions.inc.php (of net hoe die pagina bij jou heet) éénmalig includen op je index.php, en dan zijn de functies op elke pagina bescikbaar.

Ik hoop dat dit een beetje duidelijk is, anders hoor ik 't nog wel.
Offline b4nkr0bz0r - 14/12/2006 11:16
Avatar van b4nkr0bz0r PHP gevorderde Op de contact pagina moet je bovenaan even session_start(); zetten (boven de <head>-tag).

Aangezien je met een sessie op de pagina werkt, moet je de sessie voort zetten, dat doe je met session_start();
Offline putbruy - 14/12/2006 11:33 (laatste wijziging 14/12/2006 11:36)
Avatar van putbruy HTML beginner @b4n......... :heb ik gedaan,en het lijkt te functioneren (krijg echo bericht is verzonden) (mailfunctie werkt niet bij de testhost  )
maar ik krijg dan de foutmelding:
Citaat:
Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/eddesign/public_html/flanders/nl/contact.php:3) in /home/eddesign/public_html/flanders/nl/contact.php on line 4

mischien is het beter van een extra pagina te maken voor die bevestiging ,dat bij submit te 'refreshen' of weet je een andere oplossing?
Offline b4nkr0bz0r - 14/12/2006 11:37
Avatar van b4nkr0bz0r PHP gevorderde Nee, probeer ob_start(); onder session_start(); is...
Offline putbruy - 14/12/2006 12:07 (laatste wijziging 15/12/2006 18:43)
Avatar van putbruy HTML beginner ob_start(); toegevoegd op contactpagina,foutmelding blijft:
http://www.edwi...ontact.php
op het moment zit ik nog vast,iemand?

Heb de SESSION bovenaan de page gezet,zonder spaties,op het moment ziet het er goed.Ik laat nog iets weten.Alvast bedankt aan iedereen die heeft willen helpen!
Gesponsorde links
Dit onderwerp is gesloten.
Actieve forumberichten
© 2002-2024 Sitemasters.be - Regels - Laadtijd: 0.185s