Kakeshoma Skrevet 26. mars 2014 Del Skrevet 26. mars 2014 Har et skjema som postes til php for å sende mail, alt funker bra bortsett fra en dropdown-liste.. Virker ikke som den tar med dataene fra det man velger. Noen som har peiling? <p>Type<br /> <select name="type"> <option value=""></option> <option value="none">None</option> <option value="this">This</option> <option value="that">That</option> </select></p> $type = $_POST['type']; Lenke til kommentar
vassilliev Skrevet 26. mars 2014 Del Skrevet 26. mars 2014 Ikke noen feil med koden der, så det må være noe annet. Lenke til kommentar
Kakeshoma Skrevet 26. mars 2014 Forfatter Del Skrevet 26. mars 2014 (endret) Hmm.. Litt større utdrag, fjernet en del overflødig. <!DOCTYPE html> <html> <head> <title></title> <LINK href="stylesheet.css" rel="stylesheet" type="text/css"> </head> <body> <div class="header"> <img src="logo.gif" /> </div> <div class="container"> <form name="htmlform" method="post" action="mailsend.php"> <p>Type<br /> <select name="type"> <option value=""></option> <option value="none">None</option> <option value="this">This</option> <option value="that">That</option> </select></p> <label for="comments">Comments</label><br/> <textarea name="comments" maxlength="1000" cols="25" rows="4"></textarea> <br /> <input type="submit" value="Submit"> </form> </div> </body> </html> <?php if(isset($_POST['type'])) { $email_to = ""; $email_from = ""; function died($error) { // your error code can go here echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $error."<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; die(); } $type = $_POST['type']; // required $comments = $_POST['comments']; // not required $error_message = ""; $string_exp = "/^[A-ZÆØÅa-zæøå0-9 .'-]+$/"; if(strlen($type) == 0) { $error_message .= 'Error<br />'; } if(strlen($error_message) > 0) { died($error_message); } $email_message = "Form details below.\n\n"; function clean_string($string) { $bad = array("content-type","bcc:","to:","cc:","href"); return str_replace($bad,"",$string); } $email_message .= "type: ".clean_string($type)."\n"; $email_message .= "Comments: ".clean_string($comments)."\n"; $email_subject = ""; // create email headers $headers = 'From: '.$email_from."\r\n". 'Reply-To: '.$email_from."\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); ?> <html> <head> </head> <body> <p></p> <br /> <p><a href="><a></p> </body> </html> <?php } die(); ?> Endret 26. mars 2014 av Kakeshoma Lenke til kommentar
Crowly Skrevet 27. mars 2014 Del Skrevet 27. mars 2014 For å debugge legg til echo '<pre>'.print_r($_POST,true).<'/pre>'; I starten av php scriptet for å se hva som ligger i $_POST. Kan ikke se noen opplagte feil. I stedet for died funksjonen ville jeg tatt i bruk try/catch og exceptions. <?php try { if (isset($_POST['type'])) { $email_to = ""; $email_from = ""; // input bør filtreres, ta en titt på filter_input() eller filter_var() $type = filter_input(INPUT_POST,'type'); // required $comments = (isset($_POST['comments']) ? filter_input(INPUT_POST,'comments') : ''); // not required $error_message = ""; $string_exp = "/^[A-ZÆØÅa-zæøå0-9 .'-]+$/"; if (strlen($type) == 0) $error_message .= 'Error<br />'; if (strlen($error_message) > 0) throw new exception ($error_message); $email_message = "Form details below.\n\n"; function clean_string($string) { $bad = array("content-type", "bcc:", "to:", "cc:", "href"); return str_replace($bad, "", $string); } $email_message .= "type: " . clean_string($type) . "\n"; $email_message .= "Comments: " . clean_string($comments) . "\n"; $email_subject = ""; // create email headers $headers = 'From: ' . $email_from . "\r\n" . 'Reply-To: ' . $email_from . "\r\n" . 'X-Mailer: PHP/' . phpversion(); @mail($email_to, $email_subject, $email_message, $headers); } } catch (Exception $e){ echo "We are very sorry, but there were error(s) found with the form you submitted. "; echo "These errors appear below.<br /><br />"; echo $e->getMessage() . "<br /><br />"; echo "Please go back and fix these errors.<br /><br />"; } Hvis du bruker UTF-8, så bruk mb_strlen() i stedet for strlen() I stedet for å "finne opp hjulet på nytt" så kan det være verdt å ta i bruk PHPMailer i stedet for. Så får man mye ferdig. 1 Lenke til kommentar
Kakeshoma Skrevet 27. mars 2014 Forfatter Del Skrevet 27. mars 2014 (endret) Det er det rareste.. Nå fungerte det plutselig. Smart den echoen forresten! Skal nilese koden fra i går, og etter endringene jeg gjorde i dag for å se om det er noe forskjell, men prøvde alle verdens kombinasjoner i går.. Har brukt et php-skjema fra nettet og endret på det, men skal se på phpmailer, sikker bedre enn det jeg har brukt. Takk for tips! edit. er ingen forskjell så vidt jeg kan se, så da aner jeg ikke hva problemet var.. Bare glad det funker jeg Skal teste den gamle koden igjen senere i dag. Endret 27. mars 2014 av Kakeshoma Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå