Permalänk
Medlem

PHP email form med captcha

Hej

Jag har ett php-script som mailar från en hemsidas formulär, men för att öka säkerheten har jag även lagt dit en captcha.
Mejlen kommer fram om man skriver in rätt captcha, men redirecten funkar inte längre. Se nedan:

<?php /* Massor av kod här... */ include_once $_SERVER['DOCUMENT_ROOT'] . '/securimage/securimage.php'; $securimage = new Securimage(); if($securimage->check($_POST['captcha_code']) == false) { header("Location: http://www.enhemsida.se/error.html"); } else { //Send email if($sendNow) //scriptet kommer hit och skickar email som den ska { header("Location: http://www.enhemsida.se/thanks.html"); //men den kommer inte hit... } else { header("Location: http://www.enhemsida.se/error.html"); } }

någon som har en aning varför den inte kommer till "header" när den lyckats skicka mailet?

Visa signatur

ASUS X99 Deluxe II | Intel i7 6850K 3.6 GHz | 2 x GTX 1080 Strix | 4 x Corsair 8 GB DDR4 3000 MHz CL15 Vengeance | Samsung 850 Evo 500 GB | OCZ Vertex 4 128 GB | Western Digital 2 TB

Permalänk
Medlem

Kanske tänker fel nu men man kan väl inte ha header mitt i koden, måste vara högst upp innan resten av koden. Använd meta refresh istället.

Permalänk
Hedersmedlem

Korrekt av ovanstående: man kan inte skicka headers när headers redan har skickats, så att säga, vilket görs automatiskt så fort det finns minsta output i skriptet. Se How to fix “Headers already sent” error in PHP för en genomgång (finns mycket info om frågan på nätet, då mer eller mindre alla säkert behöver lära sig detta någon gång).

Se till att ha felrapportering igång i PHP så att du ser de felmeddelanden och varningar som genereras; åtminstone under utvecklingstiden. Scripten ska inte vara fria från varningar i skarpt läge på grund av att man explicit tystar dessa, utan för att man ska ha kodat bort felen överhuvudtaget.

Jag vet inte hur "Massor av kod här..." ser ut i praktiken, men troligen behöver du omorganisera en del saker. Troligen behöver inte så mycket arbete göras om, men mycket möjligen behöver saker flyttas runt lite.

Visa signatur

Nu med kortare användarnamn, men fortfarande bedövande långa inlägg.

Permalänk
Medlem
Skrivet av Sprawler:

Kanske tänker fel nu men man kan väl inte ha header mitt i koden, måste vara högst upp innan resten av koden. Använd meta refresh istället.

Det stämmer delvis; ingen output får ske innan header skickas. Antagligen är det där felet ligger.

Visa signatur

11600K@5.1 GHz + 32GB Corsair Vengeance RGB PRO 3200@3400 MHz + MSI RTX 2080 Super Gaming X Trio +
WDC Blue SN550 1TB + Black OEM SN730 500GB + Kingston A1000 480GB + A2000 500GB + NV2 1TB + 2TB R10 + RGB most of THE THINGS! + Corsair 4000D Airflow + 2*ZyXEL NSA326 2*3TB @ R1 + Netgear RN2100 4*3TB @ R10 + RN204 4*4TB @ R5 + Synology DS216j 2*4TB @ SHR R1 + DS418 4*8TB @ SHR R6
| tmp: R5 3600@4.2 GHz + 32GB 2666@3066MHz + 2070 8GB + 1 TB NV2 & 512GB SN730

Permalänk
Medlem

Okej. Tack alla. Jag fick min "a ha"-upplevelse nu. Har inte hållit på så länge med php och html, men alltid kul att lära sig

Trevlig helg

Visa signatur

ASUS X99 Deluxe II | Intel i7 6850K 3.6 GHz | 2 x GTX 1080 Strix | 4 x Corsair 8 GB DDR4 3000 MHz CL15 Vengeance | Samsung 850 Evo 500 GB | OCZ Vertex 4 128 GB | Western Digital 2 TB