Gå til innhold

Kontakt- form/dynamiske variabler [LØST]


Anbefalte innlegg

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 av Fløffi
Lenke til kommentar
Videoannonse
Annonse

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? :blush:

 

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 av Fløffi
Lenke til kommentar

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

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

Veeel, får ingen feilmelding med addslashes, men får ingen mail heller :dontgetit:

 

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 :D gidder ikke sette opp database :blush:

 

takk for hjelpa :green: (trenger litt mer :blush: )

Lenke til kommentar

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

:hmm:

 

får fikle videre på å skule e-postadressen litt senere, må først få til send-funksjonen føler jeg... :blush: 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 :blush: Jeg kommer aldri fram til "Takk for eposten bla bla", så spamfoldersjekking går ut..

Lenke til kommentar

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

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 :dontgetit:

 

kan jeg forresten ha <form action="send.php" method="post"> i kontaktskjemaet? (med id i linken)

 

$_GET['id']; gjør ikke noe :w00t: den får ingen id fra url'en selv om den liksom SKAL det. alle web-sider jeg har sett på sier det :hrm:

Endret av Fløffi
Lenke til kommentar

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! :p

 

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

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
<?php

echo '<pre>';

print_r($_POST); // erstatt $_POST med annen array etter behov

echo '</pre>';

?>

Lenke til kommentar
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! :p

 

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 :D 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 :cool:

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