Du må være registrert og logget inn for å kunne legge ut innlegg på freak.no
X
LOGG INN
... eller du kan registrere deg nå
Dette nettstedet er avhengig av annonseinntekter for å holde driften og videre utvikling igang. Vi liker ikke reklame heller, men alternativene er ikke mange. Vær snill å vurder å slå av annonseblokkering, eller å abonnere på en reklamefri utgave av nettstedet.
  8 1015
Hei.
Jeg har laget en portefølje http://tiki-art.net.
På kontaktskjemaet har jeg funnet et gratis php-script siden jeg ikke har lært meg PHP enda.
Jeg har lagt til en liten kode for å gjøre det litt sikrere med at man må fylle ut "@" og ".". Men etter jeg fikset det sendes dem ikke til /error.html hvis man skriver inn feil.
Jeg har prøvd å fikse det, men siden jeg er så og si blank på PHP får jeg det ikke til.
Er det noen som kan hjelpe meg med det hadde det vært fint : D.

PHP-scriptet jeg bruker er:

Kode

<?php
// get posted data into local variables
$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); 
$EmailTo = "tiki@tiki-art.net";
$Subject = Trim(stripslashes($_POST['Subject'])); 
$Navn = Trim(stripslashes($_POST['Navn'])); 
$Webside = Trim(stripslashes($_POST['Webside'])); 
$Melding = Trim(stripslashes($_POST['Melding'])); 

// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (Trim($Navn)=="") $validationOK=false;
if (Trim($Melding)=="") $validationOK=false;
if (!$validationOK) {
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
  exit;
}

elseif( !preg_match("{.+@.+\..+}",$EmailFrom) ) {
			die("Ugyldig epost adresse!<br>\n
				<a href='index.html'>Prøv igjen</a>");
		}


// prepare email body text
$Body = "";
$Body .= "Navn: ";
$Body .= $Navn;
$Body .= "\n";
$Body .= "Webside: ";
$Body .= $Webside;
$Body .= "\n";
$Body .= "Melding: ";
$Body .= $Melding;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");

// redirect to success page 
if ($success){
  print "<meta http-equiv=\"refresh\" content=\"0;URL=ok.html\">";
}
else{
  print "<meta http-equiv=\"refresh\" content=\"0;URL=error.html\">";
}
?>
Sist endret av TiKiboii; 6. mai 2010 kl. 00:56. Grunn: Feil i PHP koden
Bruk strpos() i stedet for preg_match()
http://www.php.net/manual/en/function.strpos.php

Du slipper RexExp og det går kjappere

Kode

if (strpos($email, '@') === FALSE || strpos($email, '.') === FALSE){
    //error-kode her...
    $validationOK=false;
}
Du må bruke === for å sjekke true/false når du bruker strpos...
TiKiboii's Avatar
Trådstarter
Hmm.. Jeg prøvde den koden der, men den fungerte ikke.
Kan du gjøre så den sendes til "error.html"?
Les litt om headers: http://php.net/manual/en/function.header.php

Kode

<?php
header("Location: http://www.example.com/"); /* Redirect browser */
?>
Sist endret av s1gh; 6. mai 2010 kl. 18:26.
TiKiboii's Avatar
Trådstarter
Nå føler jeg meg litt dum.. Får det fortsatt ikke til :S

edit:
Hvis man skriver feil skal den gå til error.html, og ikke bli sendt til e-mailen min.
Men hvis man skriver riktig skal den til ok.html og komme til e-mailen min.
Men nå går den bare til error.html samme hva.
Sist endret av TiKiboii; 6. mai 2010 kl. 19:02.
Så kjapt over og endret noen deler av koden din:

Kode

<?php
// get posted data into local variables
$EmailFrom = Trim(stripslashes($_POST['EmailFrom'])); 
$EmailTo = "tiki@tiki-art.net";
$Subject = Trim(stripslashes($_POST['Subject'])); 
$Navn = Trim(stripslashes($_POST['Navn'])); 
$Webside = Trim(stripslashes($_POST['Webside'])); 
$Melding = Trim(stripslashes($_POST['Melding'])); 


// validation
$validationOK=true;
if (Trim($EmailFrom)=="") $validationOK=false;
if (Trim($Navn)=="") $validationOK=false;
if (Trim($Melding)=="") $validationOK=false;
if (!$validationOK) {
  header("Location: /error.html");
  exit;
}

elseif( !preg_match("{.+@.+\..+}",$EmailFrom) ) {
		header("Location: /error.html");
        }


// prepare email body text
$Body = "";
$Body .= "Navn: ";
$Body .= $Navn;
$Body .= "\n";
$Body .= "Webside: ";
$Body .= $Webside;
$Body .= "\n";
$Body .= "Melding: ";
$Body .= $Melding;
$Body .= "\n";

// send email 
$success = mail($EmailTo, $Subject, $Body, "From: <$EmailFrom>");


// redirect to success page 
if ($success){
  header("Location: /ok.html");
}
else{
  header("Location: /error.html");
}
?>
Koden over vil sende deg til 'error.html' hvis man ikke har fylt ut alt skikkelig, eller hvis mail() ikke returnere 'true'.
Det vil si, hvis mail() ikke klarer å sende e-posten.
TiKiboii's Avatar
Trådstarter
Den fungerte ikke s1gh..
Men har pratet med en fyr som hjalp meg med det nå. Så nå er alt i boks.
Takker for alle svar
Jeg er nysgjerrig, hva som ikke funket?
TiKiboii's Avatar
Trådstarter
Når jeg skrev inn en gyldig email ble den sendt til mailen min og error siden kom opp.
Når jeg ikke skrev inn en ugyldig mail ble den også send og fikk opp error siden.