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/
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.
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.
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 )
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.
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
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.
@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?
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!