Gå til innhold

E-Post skjema, trenger litt hjelp


Anbefalte innlegg

Jeg har nettopp laget et lite PHP E-Post skjema, men så kom jeg til å tenke på en ting.

 

I "E-Post adresse" feltet kan brukeren skrive inn hva_som_helst@ - altså uten noen andre ord etter denne alfakrøllen. Hvordan kan jeg lage en kode som sjekker om tekstfeltet inneholder hva_som_helst@*.* der stjerne (*) er et wildcard?

 

Her er koden:

<form method="post" action="kontakt.php">

<div style="top: 210px; left: 190px; width: 125px; height: 85px; position: absolute; text-align: left;">
 Navn:<br />
 E-Post Adresse:<br />
 Tittel:<br />
</div>

<div style="top: 210px; left: 315px; width: 350px; height: 85px; position: absolute;">
 <input type="text" name="navn"><br />
 <input type="text" name="epost"><br />
 <input type="text" name="tittel"><br />
</div>

<div style="top: 295px; left: 195px; width: 470px; position: absolute;">
 Melding:<br />
 <textarea name="beskjed" rows="5" cols="30"></textarea>
 <p>
 <input type="submit" name="kontakt" value="Send E-Post">
 *
 <input type="reset" name="reset" value="Rens Skjema">
 </div>
</form>

samt..

<?php

$adresse = "[email protected],[email protected]";
$avsender = "From: $navn <$epost> [enellerannenside.com]";
$navn;
$epost;
$tittel;
$beskjed;
$ip = $REMOTE_ADDR;


if ($kontakt) {
if (!(($navn) && ($epost) && ($tittel) && ($beskjed) && (strpos($epost, "@") !== FALSE ))) {
 echo ("<div style='top: 175px; left: 190px; width: 400px; position: absolute; text-align: left;'>
      Du har glemt å oppgi informasjon i ett eller flere felt.
      </div>");
} else {
 $melding = "
Denne e-posten ble sendt i fra kontakt skjemaet på http://www.enellerannenside.com

Fra: $navn ($epost)
----

$beskjed


----
Denne e-posten ble sendt fra IP adressen: $ip
            ";
mail($adresse, $tittel, $melding, $avsender);
echo ("<div style='top: 175px; left: 190px; width: 400px; position: absolute; text-align: left;'>
     Din melding har blitt sendt.
     </div>");
}
}

?>

Jeg setter pris på alle tilbakemeldinger.

Lenke til kommentar
Videoannonse
Annonse

Ta en kikk på denne side for å validere e-post adresser, klikk spesielt på kommentarene på bunnen av siden: www.php.net/eregi

 

Det er bedre om du spørr etter konkrete feil og ikke ber folk kikke på koden din, det er som regel mye jobb og veldig kjedelig å sette seg inn i andre sine koder. Siden koden er kort og du er ny med php skal jeg gi deg noen tips.

1. $REMOTE_ADDR variabelen vil mest sannsynlig snart bli skrudd av, og du må gå over til å bruke de auto globale verdiene f.eks. $_SERVER['REMOTE_ADDR']

2. Hvorfor lister du opp variabler i begynnelsen på scriptet? Dette har ingen funksjon, for å definere variabler må du bruke var $variabel; - og dette brukes kun i classes. Du behøver ikke å definere variabler før du bruker de.

3. De fleste servere har skrudd av en funksjon som heter register globals, dvs. funksjonen som automatisk lagrer variabler f.eks. fra et skjema, i scriptet. $epost som er sent med skjemaet vil derfor ikke være tilgjenlig på den måten i et script, du må bruker de auto globale verdiene her også - f.eks. $_POST['epost']

4. Du sjekker variablene på feil måte!

Tenk deg denne koden din:

if (!(($navn) && ($epost)

der står det

Hvis( ikke( Navnet og [email protected]

Da er det naturlig nok å spørre, hvis ikke hva?

Grunnen til at det vil fungere er at den vil returnere true for alle andre verdier enn 0, se bool i manualen. Det du brude bruke er empty() eller isset() - eventuelt gjøre en mer grundig validering av tegn og lengde - med f.eks. eregi.

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å
×
×
  • Opprett ny...