Fløffi Skrevet 31. august 2007 Del Skrevet 31. august 2007 (endret) Et.. "lite" problem, som kan løses veeeldig tungvindt - slik jeg kan gjøre det, eller kanskje litt enklere om noen kan hjelpe meg jeg skal ha en liste med mennesker på en web-side. disse skal ha en link til hvert sitt kontaktskjema, der de får beskjedene per mail. om jeg skal gjøre dette slik jeg kan, må jeg lage et kontaktskjema for hver av dem, med fields avsender fyller inn (html), og en side som behander dataen, altså sender dem til epostadressen (php). blir mange filer dette her.. koden min ser per i dag ut: HTML <form action="send.php" method="post"> <input type="hidden" name="action" value="send" /> <label for="name">Name:</label> <input type="text" name="name" id="name" size="30" /> <label for="email">Email:</label></td> <input type="text" name="email" id="email" size="30" /> <label for="message">Message:</label> <td valign="top"><textarea cols="50" rows="12" name="message" id="message"></textarea> <input type="submit" value="Send"> PHP <?php if ($_POST['action']!="send") { echo"Intruder Alert!"; } elseif ($_POST['action']=="send") { $name=$_POST['name']; $email=$_POST['email']; $message=$_POST['message']; if($name=="" || $email=="" || $message=="") { echo"Please fill in all required fields.<br /> <a href=\"javascript:history.back();\">Back</a>."; } else { $to="[email protected]"; $subject="Site Mail Form"; $date=date('r'); $ip=$_SERVER['REMOTE_ADDR']; $headers="From: $name <$email>\r\n"; $mail="Message sent: $date Sender IP: $ip\n Name: $name E-mail: $email Message: $message"; $mail=stripslashes($mail); $sent=mail($to, $sub, $mail, $headers); if ($sent) { echo"Thank you for your mail $name.<br /> It has been sent successfully."; } } } ?> Hvordan kan jeg bruke ett skjema og en php-kode for ALLE menneskene, kan det ligge en variabel i linken man klikker på for å få opp kontaktskjemaet (mottakers epostadresse), slik at denne sendes inn til php-siden? slik at "[email protected]" ikke er hardkodet, men dynamisk ut fra hvilken link man har klikket på? Endret 4. september 2007 av Fløffi Lenke til kommentar
Ståle Skrevet 31. august 2007 Del Skrevet 31. august 2007 <a href="[email protected]" title="Annen Epost">Annen Epost</a> - $to=magic_quotes( $_GET['epost'] ); Lenke til kommentar
Fløffi Skrevet 31. august 2007 Forfatter Del Skrevet 31. august 2007 Tøft men hva er magic_quotes? må man ikke definere funksjonen på noen måte? Lenke til kommentar
Ståle Skrevet 31. august 2007 Del Skrevet 31. august 2007 den er innebygd i PHP http://php.net/magic_quotes Lenke til kommentar
Fløffi Skrevet 31. august 2007 Forfatter Del Skrevet 31. august 2007 (endret) Ahaa. Hmm, men får Fatal error: Call to undefined function: magic_quotes() in /usr/home/sites/send.php on line 53 Hva er galt? bruker link: Kontakt: <a href="[email protected]" title="Ormhaug">Åpne kontaktskjema</a><br /> Har nå: <form action="send.php" method="post"> <!-- hidden field to make sure mail was sent through this form --> <input type="hidden" name="action" value="send" /> <table> <tr> <td valign="top" align="right"><label for="name">Navn:</label></td> <td valign="top"><input type="text" name="name" id="name" size="30" /></td> </tr> <tr> <td valign="top" align="right"><label for="email">E-post:</label></td> <td valign="top"><input type="text" name="email" id="email" size="30" /></td> </tr> <tr> <td valign="top" align="right"><label for="message">Melding:</label></td> <td valign="top"><textarea cols="50" rows="12" name="message" id="message"></textarea></td> </tr> <tr> <td></td> <td><input type="submit" value="Send"></td> </tr> </table> </form> php-kode: <?php if ($_POST['action']!="send") { echo"Intruder Alert!"; } elseif ($_POST['action']=="send") { $name=$_POST['name']; $email=$_POST['email']; $message=$_POST['message']; if($name=="" || $email=="" || $message=="") { echo"Please fill in all required fields.<br /> <a href=\"javascript:history.back();\">Back</a>."; } else { $to=magic_quotes( $_GET['epost'] ); $subject="Site Mail Form"; $date=date('r'); $ip=$_SERVER['REMOTE_ADDR']; $headers="From: $name <$email>\r\n"; $mail="Message sent: $date Sender IP: $ip\n Name: $name E-mail: $email Message: $message"; $mail=stripslashes($mail); $sent=mail($to, $sub, $mail, $headers); if ($sent) { echo"Thank you for your mail $name.<br /> It has been sent successfully."; } } } ?> Går det forresten ann å skule e-postadressa i adresselinja på browseren? Endret 1. september 2007 av Fløffi Lenke til kommentar
Ståle Skrevet 31. august 2007 Del Skrevet 31. august 2007 Nei na er det jeg som kodder.. Er ikke sikker pa hva man skal bruke for a uskadeliggjore input fra brukeren, men en regex kunne jo blitt brukt for a sett at det er en ordentlig epost. Det finner du enkelt vhis du soker litt pa forumet. Prov addslashes() istednfor magic_quotes og et lite javascript gjor at sokeroboter ikke finner eposten i kildekoden, sa den ikke kan bli spammet. Bare prover meg litt pa JS her. Kan dessverre ikke teste det atm. <script type="javascript/text"> function epostlink(navn, epost, host, tdl) { document.write( "<a href=\"kontakt_skjema.php?epost=" . epost . "@" . host . "." . domene . "\" title=\"Send epost til" . navn . "\">" ); } </script> og for a sette inn linken: <script type="javascript/text"> epostlink( 'Maria', 'maria', 'gmail', 'com'); </script> tror jeg Lenke til kommentar
Crowly Skrevet 1. september 2007 Del Skrevet 1. september 2007 I stedet for dette Kontakt: <a href="[email protected]" title="Ormhaug">Åpne kontaktskjema</a><br /> så ville jeg ha lagt inn en id i stedet for epost adressen, i begynnelsen av php fila så bruker du den id'en til å hente ut riktig epost adresse fra en database. Så lenge man kan unngå det så bør man ikke ha epost adresser synlig i kildekoden på nettsidene, det finnes boter som sjekker nettsider etter epostadresser for så å legge disse til i spamlister. Du bør også vurdere captcha eller andre tiltak mot spamboter som vil sende meldinger fra skjemaet ditt, og da spamme mottaker. Lenke til kommentar
Fløffi Skrevet 1. september 2007 Forfatter Del Skrevet 1. september 2007 Veeel, får ingen feilmelding med addslashes, men får ingen mail heller lager en popup med usynlig adresselinje, så da er epost-adressen skjult i kildekoden kan den bare stå, den er ikke SÅ hemmelig. tror kontaktinfoen skal ned etter filmfestivalen er over så de overlever nok litt spam disse hotmailbrukerene gidder ikke sette opp database takk for hjelpa (trenger litt mer ) Lenke til kommentar
Gjest Slettet+142 Skrevet 1. september 2007 Del Skrevet 1. september 2007 Sjekket Spam-mappen om mailen kom der? Lenke til kommentar
Martin A. Skrevet 1. september 2007 Del Skrevet 1. september 2007 Du trenger forøvrig ingen database for å skjule epostadresser. <a href="epost.php?id=1/2/3/4/etc">Send epost til X</a> epost.php <?php $id = intval( $id ); $epost = ""; switch( $id ) { case 1: $epost = "[email protected]"; break; case 2: $epost = "[email protected]"; break; /* * Etc etc etc */ } if( !empty( $epost ) ) { // Send epost osv } else { echo "Ugyldig ID"; } ?> Lenke til kommentar
ZoRaC Skrevet 1. september 2007 Del Skrevet 1. september 2007 Anbefaler også å lese om "header injections" for å hindre at skjemaet brukes til å sende spam! http://www.securephpwiki.com/index.php/Email_Injection Ellers ville jeg gjort det litt lettere enn M4rtin... $epost[] = "[email protected]"; $epost[] = "[email protected]"; så bruker du $epost[$id] for å sende til en av dem. Lenke til kommentar
Fløffi Skrevet 2. september 2007 Forfatter Del Skrevet 2. september 2007 får fikle videre på å skule e-postadressen litt senere, må først få til send-funksjonen føler jeg... går greit å få sendt når jeg hardkoder adressen inn, men når jeg skal ha med id fra kontaktskjema-siden... har linken <a href="[email protected]" title="Meg"> og koden $to=stripslashes( $_GET['emailto'] ); $sub="Site Mail Form"; $date=date('r'); $ip=$_SERVER['REMOTE_ADDR']; $headers="From: $name <$email>\r\n"; $mail="Message sent: $date Sender IP: $ip\n Name: $name E-mail: $email Message: $message"; $mail=stripslashes($mail); $sent=mail($to, $sub, $mail, $headers); if ($sent) { echo"Takk for meldingen $name.<br /> Den er nå sendt."; } men ingen mail.. har jeg feil "striplashes", hva skal jeg i så fall bruke..? Og har jeg noen feile variabler jeg har gått glipp av Jeg kommer aldri fram til "Takk for eposten bla bla", så spamfoldersjekking går ut.. Lenke til kommentar
ZoRaC Skrevet 2. september 2007 Del Skrevet 2. september 2007 sett dette øverst: ini_set("display_errors", true); Lenke til kommentar
Fløffi Skrevet 2. september 2007 Forfatter Del Skrevet 2. september 2007 den skriver ikke ut noen feilmelding uansett.. virker som om når jeg har denne i scriptet: $to=$_GET['id']; så stopper det der, jeg får ikke noe skrevet ut i det hele tatt. den get-greia skal jo få id fra url'en, men kun når jeg skriver [email protected] så får jeg mailen og meldinga om at det er sendt.. $_get id skal jo virke grrrr Lenke til kommentar
Crowly Skrevet 2. september 2007 Del Skrevet 2. september 2007 Hvorfor ikke bruke post i stedet for get ? Da tror jeg du vil unngå å måtte bruke urldecode(), da noen tegn vil bli erstattet av andre symboler når de settes i url'en. Post bør alltid brukes så lenge ikke det er behov for å lage ett bokmerke på den siden det "linkes til". Lenke til kommentar
Fløffi Skrevet 2. september 2007 Forfatter Del Skrevet 2. september 2007 (endret) Ja, fjerna hele send e-post-funksjonen og skriver ut $to + et ukvemsord. det ligger ingen verdi i $to verken med post eller get.. den henter ikke den id'en fra url'en ser det ut som Klikk for å se/fjerne innholdet nedenfor <?php ini_set("display_errors", true); if ($_POST['action']!="send") { echo"Intruder Alert!"; } elseif ($_POST['action']=="send") { $name=$_POST['name']; $email=$_POST['email']; $message=$_POST['message']; if($name=="" || $email=="" || $message=="") { echo"Please fill in all required fields.<br /> <a href=\"javascript:history.back();\">Back</a>."; } else { $to=$_GET['id']; /*Må vel ha GET her for å fetche fra url'n, og ikke POST*/ echo"$to"; echo"Sensurert"; }} ?> http://www.oslokameraklubb.no/festival/festivalledelsen.php, prøv, det sendtes ingen mail seff (jeg har jo fjærna send-funksjon). kontaktskemaet er helt nederst på stakkars Maria. id skal jo hentes fra url kan jeg forresten ha <form action="send.php" method="post"> i kontaktskjemaet? (med id i linken) $_GET['id']; gjør ikke noe den får ingen id fra url'en selv om den liksom SKAL det. alle web-sider jeg har sett på sier det Endret 2. september 2007 av Fløffi Lenke til kommentar
ZoRaC Skrevet 2. september 2007 Del Skrevet 2. september 2007 Ah... nå ser jeg jo hva som er feil... På siden kontaktskjema.php er $_GET['id'] = [email protected], men når du trykker på "send" så tar du ikke med deg denne til neste side! Bruk enten: <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>"> eller <form action="send.php?id=<?php echo $_GET['id'];?>" method="post"> I første metoden må du hente med $_POST og i den andre med $_GET... Lenke til kommentar
Crowly Skrevet 3. september 2007 Del Skrevet 3. september 2007 Har vel skrevet dette en del ganger nå i diverse poster, men skader vel ikke å gjenta det print_r() er en veldig kjekk funksjon for å skrive ut innholdet av arrays. Når man oppererer med forms (post, get), sessions o.l så kan det ha stor nytteverdi å legge til denne kodesnutten for å debugge/teste koden og se hvilke felter som er satt i array'en PHP <?phpecho '<pre>'; print_r($_POST); // erstatt $_POST med annen array etter behov echo '</pre>'; ?> Lenke til kommentar
Fløffi Skrevet 4. september 2007 Forfatter Del Skrevet 4. september 2007 Ah... nå ser jeg jo hva som er feil... På siden kontaktskjema.php er $_GET['id'] = [email protected], men når du trykker på "send" så tar du ikke med deg denne til neste side! Bruk enten: <input type="hidden" name="id" value="<?php echo $_GET['id']; ?>"> eller <form action="send.php?id=<?php echo $_GET['id'];?>" method="post"> I første metoden må du hente med $_POST og i den andre med $_GET... 9414884[/snapback] Hurraaa nå virker det ja. syns det var rart at variablen ble glemt bak sofaen, ikke en eneste av de forumene og websidene jeg var innom nevnte dette.. Takk, ridderen i den skinnende rustning. Har lagret metoden for å skrive ut innholdet i arrays 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å