/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
send formularen som email
Fra : Dennis


Dato : 13-08-11 12:54

hej derude

jeg er ny har på siden, så jeg håber det er den rigtige tråd jeg
er i.
mit problem er at jeg ikke får hele formularen med på email.
kan ikke selv finde problemet selv.siden ser sådan du:
<?php
/*
This first bit sets the email address that you want the form to
be submitted to.
You will need to change this value to a valid email address that
you can access.
*/
$webmaster_email = "din@email.dk";

/*
This bit sets the URLs of the supporting pages.
If you change the names of any of the pages, you will need to
change the values here.
*/
$feedback_page = "feedback_form.html";
$error_page = "error_message.html";
$thankyou_page = "thank_you.html";

/*
This next bit loads the form field data into variables.
If you add a form field, you will need to add it here.
*/
$email = $_REQUEST['email'] ;
$Referencer = $_REQUEST['Referencer'] ;
$Fornavn = $_REQUEST['Fornavn'] ;
$Efternavn = $_REQUEST['Efternavn'] ;
$Adresse = $_REQUEST['Adresse'] ;
$Post_nr = $_REQUEST['Post_nr'] ;
$by = $_REQUEST['by'] ;
$Mobil_nr = $_REQUEST['Mobil_nr'] ;
$Har_du_sundhedsuddannelse =
$_REQUEST['Har_du_sundhedsuddannelse'] ;
$job = $_REQUEST['job'] ;
$vagter = $_REQUEST['vagter'] ;
$Transport = $_REQUEST['Transport'] ;


/*
The following function checks for email injection.
Specifically, it checks for carriage returns - typically used by
spammers to inject a CC list.
*/
function isInjected($str) {
   $injections = array('(\n+)',
   '(\r+)',
   '(\t+)',
   '(%0A+)',
   '(%0D+)',
   '(%08+)',
   '(%09+)'
   );
   $inject = join('|', $injections);
   $inject = "/$inject/i";
   if(preg_match($inject,$str)) {
      return true;
   }
   else {
      return false;
   }
}

// If the user tries to access this script directly, redirect
them to the feedback form,
if (!isset($_REQUEST['email'])) {
header( "Location: $feedback_page" );
}

// If the form fields are empty, redirect to the error page.
elseif (empty($email) || empty($Har_du_sundhedsuddannelse)) {
header( "Location: $error_page" );
}

// If email injection is detected, redirect to the error page.
elseif ( isInjected($email) ) {
header( "Location: $error_page" );
}

// If we passed all previous tests, send the email then redirect
to the thank you page.
else {
mail( "$webmaster_email", "Feedback Form Results",
$Transport, "From: $email" );
header( "Location: $thankyou_page" );
}
?>
MVH
Dennis

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

 
 
Birger Sørensen (13-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 13-08-11 13:29

Dennis frembragte:
> mail( "$webmaster_email", "Feedback Form Results",
> $Transport, "From: $email" );

dokumentationen:
http://www.php.net/manual/en/function.mail.php
siger
bool mail ( string $to , string $subject , string $message [, string
$additional_headers [, string $additional_parameters ]] )

altså sender dit script kun variablen $Transport...
Du skal nok opretten meddelelses variabel, og lægge det i den du vil
have med over, og bruge den i din mail(...).

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Dennis (14-08-2011)
Kommentar
Fra : Dennis


Dato : 14-08-11 08:38

Birger Sørensen wrote in dk.edb.internet.webdesign.serverside.php:
> Dennis frembragte:
> > mail( "$webmaster_email", "Feedback Form Results",
> > $Transport, "From: $email" );
>
> dokumentationen:
> http://www.php.net/manual/en/function.mail.php
> siger
> bool mail ( string $to , string $subject , string $message [, string
> $additional_headers [, string $additional_parameters ]] )
>
> altså sender dit script kun variablen $Transport...
> Du skal nok opretten meddelelses variabel, og lægge det i den du vil
> have med over, og bruge den i din mail(...).
>
> Birger
>
> --
> http://varmeretter.dk - billig, sund og hurtig mad
> http://bbsorensen.dk
>
>
hej birger

jeg har prøvet at sætte flere på efter $Transport men så kommer der fejl
på når jeg trykker på send.....fejlen ligger i line 75.
så hvis man kunne få hjælp til at skrive den rigtig ville det være
dejligt, er også kommet så langt at jeg gerne vil bruge en anden.
MVH Dennis

--
Vil du lære at kode HTML, XHTML, CSS, SSI, ASP eller ASP.NET?
- Pædagogiske tutorials på dansk
- Kom godt i gang med koderne
KLIK HER! => http://www.html.dk/tutorials

Birger Sørensen (14-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 14-08-11 09:20

Dennis skrev:
> Birger Sørensen wrote in dk.edb.internet.webdesign.serverside.php:
>> Dennis frembragte:
>>> mail( "$webmaster_email", "Feedback Form Results",
>>> $Transport, "From: $email" );
>>
>> dokumentationen:
>> http://www.php.net/manual/en/function.mail.php
>> siger
>> bool mail ( string $to , string $subject , string $message [, string
>> $additional_headers [, string $additional_parameters ]] )
>>
>> altså sender dit script kun variablen $Transport...
>> Du skal nok opretten meddelelses variabel, og lægge det i den du vil
>> have med over, og bruge den i din mail(...).
>>
>> Birger
>>
>> --
>> http://varmeretter.dk - billig, sund og hurtig mad
>> http://bbsorensen.dk
>>
>>
> hej birger
>
> jeg har prøvet at sætte flere på efter $Transport men så kommer der fejl
> på når jeg trykker på send.....fejlen ligger i line 75.
> så hvis man kunne få hjælp til at skrive den rigtig ville det være
> dejligt, er også kommet så langt at jeg gerne vil bruge en anden.
> MVH Dennis

Nu kan jeg ikke sådan lige se hvad der står i linie 75...
Det ville måske også hjælpe, at vide, hvad fejlmeddelelsen er...

Når jeg bruger mail(), ætter jeg teksten i en variabel.
$msg = '

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Birger Sørensen (14-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 14-08-11 09:39

Den 8/14/2011, skrev Dennis:
> Birger Sørensen wrote in dk.edb.internet.webdesign.serverside.php:
>> Dennis frembragte:
>>> mail( "$webmaster_email", "Feedback Form Results",
>>> $Transport, "From: $email" );
>>
>> dokumentationen:
>> http://www.php.net/manual/en/function.mail.php
>> siger
>> bool mail ( string $to , string $subject , string $message [, string
>> $additional_headers [, string $additional_parameters ]] )
>>
>> altså sender dit script kun variablen $Transport...
>> Du skal nok opretten meddelelses variabel, og lægge det i den du vil
>> have med over, og bruge den i din mail(...).
>>
>> Birger
>>
>> --
>> http://varmeretter.dk - billig, sund og hurtig mad
>> http://bbsorensen.dk
>>
>>
> hej birger
>
> jeg har prøvet at sætte flere på efter $Transport men så kommer der fejl
> på når jeg trykker på send.....fejlen ligger i line 75.
> så hvis man kunne få hjælp til at skrive den rigtig ville det være
> dejligt, er også kommet så langt at jeg gerne vil bruge en anden.
> MVH Dennis

Ved ikke lige hvorfor den skulle sendes før jeg var færdig...
Men jeg fortsætter da bare.
Teknologiterror!

Når jeg bruger mail(), sætter jeg teksten i en variabel, f.eks. med
dine data:

define('NL', "\r\n"); // eller kun "\n" - afhænger af server
$subj = 'Feedback Form Results';
$ad_hdr = 'From:'.$email; // Hvis flere *skal* følges af \r\n
$msg = 'Afsendt af '.$Fornavn.' '.$Efternavn.NL;
$msg .= $Adresse.NL;
$msg .= $Post_nr.' '.$by.NL;
$msg .= $email.NL;
$msg .= 'Referancer: '.$Referencer.NL;
.... osv. så jeg/modtageren får en læsbar email, i stedet for en
opremsning af indtastede data.

mail( $webmaster_email, $subj, $msg, $ad_hdr);

Men jeg kan ikke lige se noget galt med det du gør.
Variable i PHP er principielt med små bogstaver, ligesom konstanter er
med STORE. Det er muligt at omgå denne best practise - men det er ikke
smart.
Går ud fra det ikke er noget du har lavet selv...

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



scootergrisen (15-08-2011)
Kommentar
Fra : scootergrisen


Dato : 15-08-11 03:33

Vi mangler at se din formular.
Altså HTML koden med <form>....</form> så vi kan sammenligne med den
kode du skrev.

Nu ved jeg ikke hvorfor nogen af dine navne starter med stor og om det
har nogen betydning men prøv engang og lav det småt alt sammen og se
om der er nogen forskel.

Altså lav dette :
$Referencer = $_REQUEST['Referencer'] ;
Om til dette :
$referencer = $_REQUEST['referencer'];

PS : Der er mellem til sidst mellem ] og ; .... prøv og fjern de
mellemrum. Ved ikke om det måske har noget at sige.

Nu ved jeg ikke hvorfor du bruger $_REQUEST men når jeg sender
modtager data fra en formular bruger jeg $_POST.

Se eventuelt koderne her : http://scootergrisen.dk/phpgrisen/kode_email.php
Måske er der et eller andet som du kan bruge.

Birger Sørensen (15-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 15-08-11 11:20

scootergrisen formulerede spørgsmålet:
> Vi mangler at se din formular.
> Altså HTML koden med <form>....</form> så vi kan sammenligne med den
> kode du skrev.
>
> Nu ved jeg ikke hvorfor nogen af dine navne starter med stor og om det
> har nogen betydning men prøv engang og lav det småt alt sammen og se
> om der er nogen forskel.
>
> Altså lav dette :
> $Referencer = $_REQUEST['Referencer'] ;
> Om til dette :
> $referencer = $_REQUEST['referencer'];

Det er "best pracitce" at burge små bogstaver til variable, og STORE
til konstanter. PHP som sådan er case insensitive, så det gør ingen
forskel - bortset fra at det forvirrer os andre, når vi skal læse
koden.

> PS : Der er mellem til sidst mellem ] og ; .... prøv og fjern de
> mellemrum. Ved ikke om det måske har noget at sige.

Mener jeg ikke har noget at sige - parseren fjerner det.

> Nu ved jeg ikke hvorfor du bruger $_REQUEST men når jeg sender
> modtager data fra en formular bruger jeg $_POST.

$_REQUEST indeholder alle data - både $_GET og $_POST - så at bruge
$_REQUEST sikrer at man kan bruge sit script som både get og post.
Til gengæld, kan man også kalde det, med get, selovom den form man
kalder fra bruger post, så det kan anvendes fra adressebaren i
browseren. Hvilket nødvendiggør check på referrer, for at forhindre
misbrug.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



Rune Jensen (15-08-2011)
Kommentar
Fra : Rune Jensen


Dato : 15-08-11 09:51

On 15 Aug., 03:19, Birger Sørensen <s...@bbsorensen.com> wrote:

> $_REQUEST indeholder alle data - b de $_GET og $_POST - s at bruge
> $_REQUEST sikrer at man kan bruge sit script som b de get og post.
> Til geng ld, kan man ogs kalde det, med get, selovom den form man
> kalder fra bruger post, s det kan anvendes fra adressebaren i
> browseren. Hvilket n dvendigg r check p referrer, for at forhindre
> misbrug.

Bedst at bruge den form man forventer og så den ikke kan misforstås.
Bruger man POST i action i formen, så skal man teste på POST
serverside (request method), og kun godtage hvis det så er POST method
man modtager.


MVH
Rune Jensen

Birger Sørensen (15-08-2011)
Kommentar
Fra : Birger Sørensen


Dato : 15-08-11 18:03

Rune Jensen formulerede spørgsmålet:
> On 15 Aug., 03:19, Birger Sørensen <s...@bbsorensen.com> wrote:
>
>> $_REQUEST indeholder alle data - b de $_GET og $_POST - s at bruge
>> $_REQUEST sikrer at man kan bruge sit script som b de get og post.
>> Til geng ld, kan man ogs kalde det, med get, selovom den form man
>> kalder fra bruger post, s det kan anvendes fra adressebaren i
>> browseren. Hvilket n dvendigg r check p referrer, for at forhindre
>> misbrug.
>
> Bedst at bruge den form man forventer og så den ikke kan misforstås.
> Bruger man POST i action i formen, så skal man teste på POST
> serverside (request method), og kun godtage hvis det så er POST method
> man modtager.
>
>
> MVH
> Rune Jensen

Helt enig.
Aktuelle tilfælde ligner noget generelt, og det må være derfor der
bruges $_REQUST. IMHO får anvendelsen af store bogstaver i
variabelnavne , og manglende validering af overførte værdier, også det
hele til at ligne venstrehåndsarbejde, eller noget hvor man er ligeglad
med hvilke ulykker man laver på lang sigt - bare tingene virker her og
nu.

Birger

--
http://varmeretter.dk - billig, sund og hurtig mad
http://bbsorensen.dk



scootergrisen (16-08-2011)
Kommentar
Fra : scootergrisen


Dato : 16-08-11 04:21

Nu har jeg jo aldrig brugt $_REQUEST men jeg vil da mene at alle sådan
nogen formular data med personlig data er bedst at sende med POST
fordi hvis man sender med GET kan de gemme i browserens historie og
sådan og det jo måske uønskeligt hvis andre der bruger computeren kan
se hvad man har skrevet.

Kan huske jeg har brugt en chat som brugte GET også kunne man lang tid
efter sidde og blive mindet om en chat samtale man har haft fordi det
dukker op i browseren når man skriver en URL.

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408924
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste