Martin A. Skrevet 22. desember 2005 Rapporter Del Skrevet 22. desember 2005 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 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
MC2 Skrevet 22. desember 2005 Rapporter Del Skrevet 22. desember 2005 (endret) du kan bruke denne if(!preg_match(\"/([\\w\\.\\-]+)(\\@[\\w\\.\\-]+)(\\.[a-z]{2,4})+/i\",$email)) { // ugyldig email } else { // gyldig email }; Endret 22. desember 2005 av MC2 Lenke til kommentar
Martin A. Skrevet 24. desember 2005 Forfatter Rapporter Del Skrevet 24. desember 2005 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 Lenke til kommentar
Ultrag Skrevet 24. desember 2005 Rapporter Del Skrevet 24. desember 2005 <?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
Martin A. Skrevet 25. desember 2005 Forfatter Rapporter Del Skrevet 25. desember 2005 Slik den er nå, videresender den bare til en standard errorside. Jeg vil ha en spessifisert errorside, som forteller hva som ble gjort feil. Ikke det at det er en veldig viktig sak å ha, men for meg, som akkurat har startet med PHP, kan det være litt kjekt å øve seg på slike ting. Lenke til kommentar
Gilbert Skrevet 25. desember 2005 Rapporter Del Skrevet 25. desember 2005 header() sender brukeren til en side, men hvis du ikke har lagd den siden kommer det selvfølgelig en standard errorside. Lenke til kommentar
Martin A. Skrevet 25. desember 2005 Forfatter Rapporter Del Skrevet 25. desember 2005 Det er jeg fult klar over. Men den siden jeg har nå, som brukeren blir videresendt til, sier ingenting om HVA som gikk galt. Bare at noe gikk galt. Lenke til kommentar
am3k Skrevet 25. desember 2005 Rapporter Del Skrevet 25. desember 2005 Da sender du med en eller annen error ID el. For så og vise en feilmelding som passer. T.d. kan du ved feil bruke: header( "Location: http://ma.rtin.no/index.php?side=error&error=1" ); For så og sjekke dette på feilsiden din og skrive ut meldingen som passer til feilkode 1. Noe som t.d. kan gjøres med en enkel liten if løkke Lenke til kommentar
Martin A. Skrevet 25. desember 2005 Forfatter Rapporter Del Skrevet 25. desember 2005 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
am3k Skrevet 25. desember 2005 Rapporter Del Skrevet 25. desember 2005 (endret) 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 25. desember 2005 av am3k Lenke til kommentar
Martin A. Skrevet 26. desember 2005 Forfatter Rapporter Del Skrevet 26. desember 2005 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
am3k Skrevet 26. desember 2005 Rapporter Del Skrevet 26. desember 2005 Skal da fungere det 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
Martin A. Skrevet 26. desember 2005 Forfatter Rapporter Del Skrevet 26. desember 2005 Tusen takk Det kommer ingen feilmelding, du kan jo se selv. http://ma.rtin.no/index.php?side=error&error=test Der skulle det stått TestHeitest Men nå er det sovetid. Får se på det i morgen. Lenke til kommentar
Martin A. Skrevet 26. desember 2005 Forfatter Rapporter Del Skrevet 26. desember 2005 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
Martin A. Skrevet 27. desember 2005 Forfatter Rapporter Del Skrevet 27. desember 2005 (endret) Å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 27. desember 2005 av M4rTiN Lenke til kommentar
am3k Skrevet 28. desember 2005 Rapporter Del Skrevet 28. desember 2005 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
Martin A. Skrevet 28. desember 2005 Forfatter Rapporter Del Skrevet 28. desember 2005 Da var kontaktskjemaet på plass, og det ble akkurat slik jeg ville ha det Da vil jeg med dette takk alle som hjalp til, og en spesiell takk til am3k 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å