Gå til innhold

e-post skjema, og include.


Anbefalte innlegg

Heisann.

 

Har laget min alle første side i PHP nå, og har lagd meg et e-postskjema. Eller, jeg fant et, og endre litt på det :p

Uansett. Jeg vil ha det slik.

Om noen ikke skriver noe i "E-Post"-feltet, skal de få vite dette på errorsiden. Også om de har brukt en mailadresse uten @.

 

Koden ser slik ut

<?php
 $email = $_REQUEST['email'];
 $message = $_REQUEST['message'];
 $subject = $_REQUEST['subject'];
 $name = $_REQUEST['name'];

 if (empty($email) || empty($message) || empty($subject) || empty($name)) {
   header( "Location: http://ma.rtin.no/index.php?side=error" );
 }
 else {
   mail( "[email protected]", $subject,
     $message, "From: $name <$email>" );
   header('Location: index.php?side=takk');
 }
?>

 

En annen ting. Om jeg vil inkludere en ting til. Dvs, vis jeg vil ha en slik URL; index.php?side=error&error=email. Hvordan gjør man dette?

Legger man inn et includescript til i index.php?

 

 

Takk for alle svar :)

 

Mvh, Martin.

Lenke til kommentar
Videoannonse
Annonse

Spørsmålet mitt lyder vel fremdeles som følger.

 

Hvordan får jeg de som ikke skriver en gyldig e-mail, ikke emne, eller navn til å bli videresendt til en slik side; http://ma.rtin.no/index.php?side=error&err.../mail/navn/emne. Jeg tror jeg har funnet ut saken i hodet. Men har ikke hatt tilgang til maskinen min siden jeg startet denne tråden. Andre steder enn på jobb.

Hvordan jeg tror jeg kan løse dette, er vel å legge inn en include i includen. Dvs, i "error.php", og gjør om "side" til "error". Da tror jeg at det blir slik jeg vil.

 

Saken er fremdeles, hvordan sender jeg dem dit, hva legger jeg til i sendmail.php, og hvor.

 

 

God jul :xmas:

Lenke til kommentar


<?php
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
$subject = $_REQUEST['subject'];
$name = $_REQUEST['name'];

if (empty($email) || empty($message) || empty($subject) || empty($name) || !preg_match(\"/([\\w\\.\\-]+)(\\@[\\w\\.\\-]+)(\\.[a-z]{2,4})+/i\",$email)) {
  header( "Location: http://ma.rtin.no/index.php?side=error&error=email/mail/navn/emne" );
}
else {
  mail( "[email protected]", $subject,
    $message, "From: $name <$email>" );
  header('Location: index.php?side=takk');
}

 

Jeg forstår ikke helt hva du mener, men denne vil videresende hvis feil.

Lenke til kommentar

Slik jeg har prøvd det nå, funka ikke.

Altså å legge inn et nytt include-script i error.php.

Dvs dette:

<?php
$side = $_GET["error"];
$mappe = "error/";
if(empty($side))
{
include($mappe . "error.php");
}
elseif(!empty($side) AND !preg_match("#\.\./|^/#", $side) AND file_exists($mappe . $side . ".php"))
{
include($mappe . $side . ".php");
?>

Da får jeg en feilmelding som lyder slik:

Parse error: parse error, unexpected $ in /usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs/include/error.php on line 12

Det artige er at linje 12 ikke eksisterer.

Lenke til kommentar

Da er det noe du ikke har avsluttet ;)

 

<?php

$side = $_GET["error"];

$mappe = "error/";

if(empty($side))

{

include($mappe . "error.php");

}

elseif(!empty($side) AND !preg_match("#\.\./|^/#", $side) AND file_exists($mappe . $side . ".php"))

{

include($mappe . $side . ".php");

}

?>

Endret av am3k
Lenke til kommentar

Da har vi nok en gang bevist at ting som fungerer i hodet, ikke alltid funker i praksis.

 

Det fungerte altså ikke å inkludere noe i en side som allerede er inkludert. Dvs, ?side=error er allerede inkludert mha index.php. Men ?side=error&error=test fungerte altså ikke om jeg la et include-script i error.php.

 

Noen tips?

Lenke til kommentar

Skal da fungere det :hmm:

Feilmelding?

 

Om jeg har forstått deg rett har du en fil for feilmeldinger, eneste funksjonen til denne er og hente inn andre sider som inneholder selve teksten/feilmeldingen?

 

 

 

Anywho her har du en annen løsning:

<?php
if ($REQUEST_METHOD == "POST" AND $Submit == "Send melding") {
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
$subject = $_REQUEST['subject'];
$name = $_REQUEST['name'];

if     (empty($email))     { echo "<h2>Feil</h2><br>Du må angi en email adresse.<br>"; $error = 1;}
elseif (empty($message))   { echo "<h2>Feil</h2><br>Virker som du har glemt hele meldingen.<br>"; $error = 1;}
elseif (empty($subject))   { echo "<h2>Feil</h2><br>Skulle gjerne hatt en tittel på meldingen<br>"; $error = 1;}
elseif (empty($name))      { echo "<h2>Feil</h2><br>Er du virkelig navnløs?<br>"; $error = 1;}
if ($error) {
echo "<a href=\"http://ma.rtin.no/index.php\" title=\"Klikk for å gå tilbake til skjema\">Tilbake til skjema</a>";
exit;
} else {
  mail( "[email protected]", $subject,
    $message, "From: $name <$email>" );
  header('Location: index.php?side=takk');
}
}
?>

 

 

Selv ville jeg vel heller løst det litt annerledes, dvs. jeg ville vist feilmeldingen i skjemaet ved feltet/feltene som inneholder feil. Den "peneste" måten og gjøre det på er vel ved bruk av sessions...

Lenke til kommentar

Prøvde å legge inn det som am3k skrev nå. Men om man ikke skriver navn/email/emne/innhold nå, går den rett til sendmail.php, og viser en tom side.

 

Istede for "echo tekst" bør man heller ha en header, som hadde send brukeren til ?side=error&error=1/2/3/4.

 

Men det høres ut som at session er bedre. Er vel bare å sette seg ned å lese litt :)

Lenke til kommentar

Åj da, ble vist en trippelpost dette. Men ingen som legger merke til det om jeg bare redigerer siste innlegg.

 

Tror ikke jeg helt skjønte vitsen med "$error = 1".

Er det slik at den feilmeldingen skal bli vist ved siden av feltet det skulle stått noe i?

 

EDIT:

Nå er det rett før jeg spretter ut av mitt gode skinn.

 

Prøvde meg på å legge inn sendmal.php i samme php som kontaktskjemaet.

Etter ufattlig mange error-meldinger, fikk jeg det til tilslutt. Trodde jeg.

Nå maser den om dette:

 

Parse error: parse error, unexpected '}', expecting ',' or ';' in /usr/local/psa/home/vhosts/rtin.no/subdomains/ma/httpdocs/include/kontakttest.php on line 13

Og scriptet er nå slik

<?php
$email = $_REQUEST['email'];
$message = $_REQUEST['message'];
$subject = $_REQUEST['subject'];
$name = $_REQUEST['name'];

if (empty($email))     { echo "<h2>Feil</h2><br>Du må angi en emailadresse." };
if (empty($message))   { echo "<h2>Feil</h2><br>Her har du nok glemt å skrive et innhold." };
if (empty($subject))   { echo "<h2>Feil</h2><br>En tittel hadde ikke vært å forakte." };
if (empty($name))      { echo "<h2>Feil</h2><br>Et navn hadde ikke vært så dumt." };
else {
 mail( "[email protected]", $subject,
   $message, "From: $name <$email>" );
 exit;
}

echo "
 <form method='post'>;
 Navn: <input name='name' type='text' value='Navn'><br /> 
 Epost: <input name='email' type='text' value='E-Post'><br />
 Emne: <input name='subject' type='text' value='Emne'><br />
 Innhold:<br />
 <textarea name='message' value='Skriv innholdet her' rows='5' cols='40'>
 </textarea><br />
 <input type='submit' name='Send Melding' value='Send Melding'>
 </form>
";
?>

Linje 13 er første "if empy". Jeg går ut ifra at feilen går igjen nedover samtlige av "if empty"-strengene.

Endret av M4rTiN
Lenke til kommentar

1. Etter scriptet ditt over vil email bli sendt så lenge navn (name) er fylt ut.

2. " }; er feil, "; }" er korrekt

3. Textarea og value hører ikke sammen

4. $error ble brukt til og vise linken for og gå tilbake til skjemaet.

 

Anywho, dette funker:

<?php
if ($REQUEST_METHOD == "POST" AND $submit == "Send Melding") {
 $email = $_POST['email'];
 $message = $_POST['message'];
 $subject = $_POST['subject'];
 $name = $_POST['name'];

 if (empty($email) OR strlen($email) < 5)
  { $email_err = "<font color=\"red\" size=\"1\">Du må angi en emailadresse.</font><br />"; $error = TRUE;}
 if (empty($message) OR strlen($message) < 5)
  { $msg_err = "<font color=\"red\" size=\"1\">En melding uten inneholde, er ikke mye morro det.</font><br />"; $error = TRUE; }
 if (empty($subject) OR strlen($subject) < 5)
  { $sub_err = "<font color=\"red\" size=\"1\">En tittel hadde ikke vært å forakte.</font><br />"; $error = TRUE; }
 if (empty($name) OR strlen($name) < 3)
  { $name_err = "<font color=\"red\" size=\"1\">Et navn hadde ikke vært så dumt.</font><br />"; $error = TRUE; }
  
 if (!$error) {
  mail( "[email protected]", $subject,
    $message, "From: $name <$email>" );
  echo "<h2>Din melding er sendt</h2>";
  exit;
 }
}
echo "<form method='POST'>";
echo "Navn: <input name='name' type='text' value='$name'><br />";
if ($name_err) { echo "$name_err"; }
echo "Epost: <input name='email' type='text' value='$email'><br />";
if ($email_err) { echo "$email_err"; }
echo "Emne: <input name='subject' type='text' value='$subject'><br />";
if ($sub_err) { echo "$sub_err"; }
echo "Innhold:<br />
<textarea name='message' rows='5' cols='40'>$message
</textarea><br />";
if ($msg_err) { echo "$msg_err"; }
echo "<input type='submit' name='submit' value='Send Melding'>
</form>
";
?>

 

Har og lagt inn en liten sjekk på at en ikke bare dytter inn noen få tegn i de forskjellige feltene. Du får heller endre verdien til hva du synes passer.

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...