larrylu Skrevet 4. september 2007 Rapporter Del Skrevet 4. september 2007 jeg har laget meg et kontakt skjerma på hjemmesidne min. men får det ikke til og fungere. noen som kan si meg hvorfor? HTML KODEN <form action="script/sendmail.php" method="get"> <fieldset style="border: 0;"><legend></legend> <label for="avsender">Name:</label> <input type="text" id="avsender" value="" /><br /> <label for="hjemmeside">Hjemmeside:</label> <input type="text" id="hjemmeside" value="" /><br /> <label for="email">E-mail:</label> <input type="text" id="email" value="" /><br /> <label for="melding">Melding:</label> <textarea rows="5" cols="70" id="melding"></textarea><br /> <input type="submit" name="submitbutton" id="submitbutton" value="send" /> </fieldset> </form> PHP KODEN <? extract($_GET); $to = '[email protected]'; $subject = 'Mail fra din hjemmeside'; $message = 'Navn: ' . $_GET['avsender'] . '\nHjemmeside: ' . $_GET['hjemmeside'] . '\nEmail: '. $_GET['email'] . '\nMelding: ' . $_GET['melding']; $headers = 'From: ' . $_GET['email'] . "\r\n" . 'Reply-To: ' . $_GET['email'] . "\r\n" . 'X-Mailer: PHP' . phpversion(); if(mail($to, $subject, $message, $headers)) { echo "<body javscript=\"onLoad: setTimeout('window.location='index.php?side=kontakt',4000);\" >Takk for at du sendte mailen, $avsender."; } else { echo "Fikk ikke sendt mailen. Sorry."; } ?> Noen som kan si meg hva som er galt? hvorfor jeg ikke motar mailer. Lenke til kommentar
Crowly Skrevet 4. september 2007 Rapporter Del Skrevet 4. september 2007 Vet ikke om det er av stor betydning men \n og slikt fungere ikke i enkelt fnutter ' må så i mellom dobbelt fnutter " Ulovlig: echo 'hei på deg\n'; Lovlig echo "hei på deg\n"; eller echo 'hei på deg'."\n"; Lenke til kommentar
Martin A. Skrevet 4. september 2007 Rapporter Del Skrevet 4. september 2007 1. Short-open-tags er meget fyfy. Bytt ut <? med <?php, så sparer du deg for litt arbeid om hosten din finner ut at de skal slå det av. 2. Sende større menger med tekst via GET er ikke særlig elegant. Bruk $_POST. Bytt ut <form action="script/sendmail.php" method="get"> med <form action="script/sendmail.php" method="post"> Samme gjelder med $_GET['blabal'] som må endres til $_POST['blabal']. Tips: Bruk "Replace" i editoren. $_GET erstattes av $_POST. 3. Fjern extract($_GET);. Du benytter deg ikke av "fordelene" den gir deg uansett. 4. For å enkelt og elegant bruke array i en streng, kan du bruke { og } rundt. Eksempel: PHP <?phpecho "Navn: {$_POST['navn']}Hjemmeside: {$_POST['hjemmeside']}"; ?> 5. Du bør sikre brukerdataene dine på en eller annen måte for å fjerne muligheten for header-injection. http://www.securephpwiki.com/index.php/Ema...ction#solutions Feks. <?php foreach( $_POST as $post ) { if (eregi("(\r|\n)", $from)) { die("Why ?? :("); } } ?> Grunnen til at du ikke mottar feilen kan være mange. Bruker du en egen server, eller et webhotell? Lenke til kommentar
itsmebth Skrevet 4. september 2007 Rapporter Del Skrevet 4. september 2007 ... <?php foreach( $_POST as $post ) { if (eregi("(\r|\n)", $from)) { die("Why ?? :("); } } ?> 9426613[/snapback] Hva hvis noen sender et linjeskift i selve meldingen? strspn(http://no2.php.net/strspn) er mye bedre egnet her enn regexp. die er en veldig dårlig måte å behandle feil på. Lenke til kommentar
larrylu Skrevet 5. september 2007 Forfatter Rapporter Del Skrevet 5. september 2007 jeg bruker en aphace server webhotel. hvis jeg gjør de endringer du fåreslår så skal det fungere da? noen sa til meg at det var noe i html som gjore utslaget en gang se. Lenke til kommentar
larrylu Skrevet 8. september 2007 Forfatter Rapporter Del Skrevet 8. september 2007 Jeg har gjort endrignere som dere har nevnt men får forsatt ikke noe meld + mista melding om at mailen er sendt Lenke til kommentar
Anders Moen Skrevet 9. september 2007 Rapporter Del Skrevet 9. september 2007 Du gidder ikke å poste koden din slik den har blitt nå da? Lenke til kommentar
larrylu Skrevet 10. september 2007 Forfatter Rapporter Del Skrevet 10. september 2007 HTML KODE <form action="script/sendmail.php" method="post"> <fieldset style="border: 0;"> <label for="avsender">Name:</label> <input type="text" id="avsender" value="" /><br /> <label for="hjemmeside">Hjemmeside:</label> <input type="text" id="hjemmeside" value="" /><br /> <label for="email">E-mail:</label> <input type="text" id="email" value="" /><br /> <label for="melding">Melding:</label> <textarea rows="5" cols="70" id="melding"></textarea><br /> <input type="submit" name="submitbutton" id="submitbutton" valu$="send" /> </fieldset> </form> PHP KODE <?php extract($_POST); $to = '[email protected]'; $subject = 'Mail fra din hjemmeside'; $message = "Navn: $avsender \nHjemmeside: $hjemmeside \nEmail: $email \nMelding$ $headers = "From: $email \r\n Reply-To: $email \r\n"; if(mail($to, $subject, $message, $headers)) { echo 'Mailen er sendt, <a href="index.php?side=kontakt">gå tilbake til $ } else { echo "Fikk ikke sendt mailen. Sorry."; } ?> Lenke til kommentar
Ekko Skrevet 10. september 2007 Rapporter Del Skrevet 10. september 2007 om du kjører en print $message like før if-setningen din i php-filen, hva får du ut da? Og hva fikk du ut i den opprinnelige koden om du hadde gjort det samme? Lenke til kommentar
TheClown Skrevet 10. september 2007 Rapporter Del Skrevet 10. september 2007 (endret) Er litt n00b selv. Men er ikke session_start(); nødvendig? Endret 10. september 2007 av TheClown Lenke til kommentar
Martin A. Skrevet 10. september 2007 Rapporter Del Skrevet 10. september 2007 (endret) Jeg ser ingen bruk av sessions, så session_start() er totalt unødvendig. Jeg kan heller ikke se at du brydde deg så veldig mye om sikkerhetstipsene jeg ga deg (tenker da spesialt på header-injection). Nå som jeg vet koden din "kan" jeg få den til å sende ut et par hundre tusen spam eposter. Fjern også extract() og bruk $_POST['navn']. Evt: <?php $navn = clean_string( $_POST['navn'] ); $hjemmeside = clean_string( $_POST['hjemmeside'] ); //osv osv /* Utestet funksjon */ function clean_string( $str ) { $str = preg_replace( "( \r|\n )", '', $str ); return $str; } ?> Kan også være kjekt å se om avsendereposten i det hele tatt eksisterer (og at det er en ekte epostadresse(regex for å sjekke det finner du enkelt ved å søke på forumet)) før du prøver å sende den. EDIT: Linebreak (\r & \n) funka dårlig i php-tag. Endret 10. september 2007 av M4rTiN Lenke til kommentar
larrylu Skrevet 11. september 2007 Forfatter Rapporter Del Skrevet 11. september 2007 Jeg ser ingen bruk av sessions, så session_start() er totalt unødvendig. Jeg kan heller ikke se at du brydde deg så veldig mye om sikkerhetstipsene jeg ga deg (tenker da spesialt på header-injection). Nå som jeg vet koden din "kan" jeg få den til å sende ut et par hundre tusen spam eposter. Fjern også extract() og bruk $_POST['navn']. Evt: <?php $navn = clean_string( $_POST['navn'] ); $hjemmeside = clean_string( $_POST['hjemmeside'] ); //osv osv /* Utestet funksjon */ function clean_string( $str ) { $str = preg_replace( "( \r|\n )", '', $str ); return $str; } ?> Kan også være kjekt å se om avsendereposten i det hele tatt eksisterer (og at det er en ekte epostadresse(regex for å sjekke det finner du enkelt ved å søke på forumet)) før du prøver å sende den. EDIT: Linebreak (\r & \n) funka dårlig i php-tag. 9464421[/snapback] skal se på sikkerheten så fort jeg har fått til å sende mail. men jeg ble litt usikker på hva jeg skal beholde i koden min og fjerne av konden min? hadde du gidda og posta komplett kode? pga den siste koden jeg fikk postet mangler det Epost Adresse osv. så ble litt usikker hva jeg skulle beholde av den gammle koden. 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å