Gå til innhold

Feil på php kontakt system


Anbefalte innlegg

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
Videoannonse
Annonse

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
<?php

echo "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

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

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 av M4rTiN
Lenke til kommentar
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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...