Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Kan ikke for denne kode til at virke

0 views
Skip to first unread message

Kim Schmidt Wind

unread,
Jun 21, 2009, 4:26:21 PM6/21/09
to
Hej NG
kan ikke f� dette til at virke p�
http://juxwebdesign.oz1jux.dk/kontakt.html
har brugt kontaktformular fra Ludvigs hj�rne

/* Her hentes oplysningerne fra de udfyldte felter */
$navn = $_REQUEST['navn'] ;
$email = $_REQUEST['email'] ;
$epost = $_REQUEST['epost'] ;
$besked = $_REQUEST['besked'];
$spamfaelde = $_REQUEST['spamfaelde'];
$kopi = $_REQUEST['kopi'];
$emne = $_REQUEST['emne'];

/* Her tjekkes, om det skjulte spamf�lde-felt er udfyldt */
if ($email > '') {
echo "Du er havnet i formularens spamf�lde. Det burde ikke v�re
muligt at havne her ved et uheld, s� skam dig!";
exit ();
}

/* Her tjekkes, om der er forbudte tegn i felterne */
if (eregi("[\]",$navn) || eregi("[\]",$epost) ||
eregi("[\]",$emne) || eregi("[@]",$navn)){
echo "Formularen er ikke udfyldt korrekt, tryk p�
tilbage-knappen og pr�v igen. Tjek, at du har skrevet din
mail-adresse korrekt, og at du har skrevet den i det rigtige
felt.";
exit();
}

/* Her tjekkes, om afsenderen har indtastet sin mail-adresse, og
i s� fald bruges den som afsendeeradresse, s� der kan svares p�
mailen */
if (epost > '') {
$headers="From: $navn <$epost>\r\n";
}
else {
$headers="From: Kontaktformular <$afsendermail>\r\n";
}

/* Her inds�ttes din mailadresse, s� afsenderen kan svare p�
kopimailen */
$formularheaders="From: $hjemmeside <$afsendermail>\r\n";

/* Her samles afsenderens navn, mailadresse og besked i en enkelt
variabel */
$oplysninger="F�lgende er sendt via kontaktformularen p�
$hjemmeside:\r\n\r\nNavn: $navn\r\nE-mail:
$epost\r\nBesked:\r\n$besked";

/* Her samles oplysningerne til afsenderens kopi af mailen */
$kopimail="Hej $navn\r\nDu har sendt f�lgende via
kontaktformularen p� $hjemmeside:\r\n$besked";

if ($kopi > '') {
/* Her sendes til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);

/* Her sendes en kopimail til afsenderen */
mail($epost, $emne, $kopimail, $formularheaders);
}

else {
/* Her sendes mailen til modtageradressen */
mail($mail, $emne, $oplysninger, $headers);
}

/* N�r mailen er sendt, viderestilles til denne hjemmeside */
header( "Location: $viderestil" );

kan ikke lige gennemskue hvad der mangler

med venlig hilsen

Kim

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

Kim Ludvigsen

unread,
Jun 21, 2009, 4:57:14 PM6/21/09
to
Kim Schmidt Wind skrev:

> Hej NG
> kan ikke f� dette til at virke p�
> http://juxwebdesign.oz1jux.dk/kontakt.html
> har brugt kontaktformular fra Ludvigs hj�rne
>
> kan ikke lige gennemskue hvad der mangler

Pr�v at omd�be filen "kontakt.html" til "kontakt.php".

--
Mvh. Kim Ludvigsen
http://ordforklaring.dk

Kim Schmidt Wind

unread,
Jun 21, 2009, 5:31:28 PM6/21/09
to
Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:

Hej

Det sker dette at n�r der bliver trykt p� send s� skulle den ikke
hoppe til forsiden, n�r der ikke udfyldt noget i nogen af
felterne.
S� der m� mangle noget i filen kontaktformular

mvh.

KiM

Kim Ludvigsen

unread,
Jun 21, 2009, 6:13:12 PM6/21/09
to
Kim Schmidt Wind skrev:

> Det sker dette at n�r der bliver trykt p� send s� skulle den ikke
> hoppe til forsiden, n�r der ikke udfyldt noget i nogen af
> felterne.

Scriptet indeholder ikke et tjek for, om felterne er
udfyldt. Det er med vilje, fordi det ikke er sikkert,
afsenderen har lyst til at oplyse sit navn, sin mail-adresse
osv. Det er nemt at tilf�je et tjek.

Hvis du fx vil forlange, at navnefeltet skal v�re udfyldt,
kan du tilf�je denne kode:

/* Her tjekkes, om navnefeltet er udfyldt */
if ($navn == '') {
echo "Du skal udfylde navnefeltet med dit navn, tryk p�
tilbage-knappen og udfyld feltet.";
exit ();
}

Tilsvarende, hvis du vil forlange, at der udfyldes med en
e-mail-adresse:

/* Her tjekkes, om der er angivet en e-mail-adresse */
if ($epost == '') {
echo "Du skal angive din e-mail-adresse, tryk p�
tilbage-knappen og udfyld feltet.";
exit ();
}

Koderne kan fx inds�ttes efter linjen:
$emne = $_REQUEST['emne'];

--
Mvh. Kim Ludvigsen
http://kimludvigsen.dk

Kim Schmidt Wind

unread,
Jun 22, 2009, 5:14:44 AM6/22/09
to
Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:
> Kim Schmidt Wind skrev:

> /* Her tjekkes, om der er angivet en e-mail-adresse */
> if ($epost == '') {
> echo "Du skal angive din e-mail-adresse, tryk p�
> tilbage-knappen og udfyld feltet.";
> exit ();
> }
>
> Koderne kan fx inds�ttes efter linjen:
> $emne = $_REQUEST['emne'];
>
> --
> Mvh. Kim Ludvigsen
> http://kimludvigsen.dk

Hej

Disse felt var ogs� tilf�jet, men i det som var i den zipfil stod der
andet end nu, der stod if ($epost > '')
men nu virker det

Mvh.

Kim

Kim Ludvigsen

unread,
Jun 22, 2009, 6:18:51 AM6/22/09
to
Kim Schmidt Wind skrev:

> Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:
>
>> /* Her tjekkes, om der er angivet en e-mail-adresse */
>> if ($epost == '') {

> Disse felt var ogs� tilf�jet, men i det som var i den zipfil stod der


> andet end nu, der stod if ($epost > '')

Nej, der stod:
if ($email > '') {
Det er en spamf�lde, der tjekker, om feltet email er
udfyldt. Feltet email er et skjult felt, s� hvis det er
udfyldt, s� tyder det p�, at en spambot har v�ret p� spil.
Det rigtige e-mail-felt epost.

--
Mvh. Kim Ludvigsen
Lidt om php og nogle praktiske scripts:
http://kimludvigsen.dk/programmer-internet-kompozer-trin-php.php

Kim Schmidt Wind

unread,
Jun 22, 2009, 8:28:01 AM6/22/09
to
Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:
> Kim Schmidt Wind skrev:
> > Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:
>
> Nej, der stod:
> if ($email > '') {
> Det er en spamf�lde, der tjekker, om feltet email er
> udfyldt. Feltet email er et skjult felt, s� hvis det er
> udfyldt, s� tyder det p�, at en spambot har v�ret p� spil.
> Det rigtige e-mail-felt epost.
>
> --
> Mvh. Kim Ludvigsen
> Lidt om php og nogle praktiske scripts:
> http://kimludvigsen.dk/programmer-internet-kompozer-trin-php.php

Hej

Det virker, men jeg kan godt skrive noget og undlade at skrive noget i
feltet hvor man afsenderen indtaster sin Email adresse s� fors�tter den
alligevel hvis der er sat et flueben i felt send mig en mail.

Kim Ludvigsen

unread,
Jun 22, 2009, 8:52:48 AM6/22/09
to
Kim Schmidt Wind skrev:

> jeg kan godt skrive noget og undlade at skrive noget i
> feltet hvor man afsenderen indtaster sin Email adresse s� fors�tter den
> alligevel hvis der er sat et flueben i felt send mig en mail.

Jeg forst�r ikke, hvad du mener.

Johan Holst Nielsen

unread,
Jun 22, 2009, 10:19:11 AM6/22/09
to
Kim Ludvigsen wrote:
> Kim Schmidt Wind skrev:
>> Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:
>>
>>> /* Her tjekkes, om der er angivet en e-mail-adresse */ if ($epost ==
>>> '') {
>
>> Disse felt var ogs� tilf�jet, men i det som var i den zipfil stod der
>> andet end nu, der stod if ($epost > '')
>
> Nej, der stod:
> if ($email > '') {
> Det er en spamf�lde, der tjekker, om feltet email er udfyldt. Feltet
> email er et skjult felt, s� hvis det er udfyldt, s� tyder det p�, at en
> spambot har v�ret p� spil. Det rigtige e-mail-felt epost.

Hvad er �rsagen til du bruger > i stedet for != ?

Jeg har gennem mine - en hel del �r - set en god slat linjer kode, men
har aldrig (l�s: meget sj�ldent) set greater/less than brugt p� den m�de.

Enten ville jeg skrive den linje som

if($email != '') {
eller m�ske mere "l�svenligt"
if(!empty($email)) {

/Johan

Johan Holst Nielsen

unread,
Jun 22, 2009, 10:47:55 AM6/22/09
to
Kim Ludvigsen wrote:
> Kim Schmidt Wind skrev:
>> Kim Ludvigsen wrote in dk.edb.internet.webdesign.serverside.php:
>>
>>> /* Her tjekkes, om der er angivet en e-mail-adresse */ if ($epost ==
>>> '') {
>
>> Disse felt var ogs� tilf�jet, men i det som var i den zipfil stod der
>> andet end nu, der stod if ($epost > '')
>
> Nej, der stod:
> if ($email > '') {
> Det er en spamf�lde, der tjekker, om feltet email er udfyldt. Feltet
> email er et skjult felt, s� hvis det er udfyldt, s� tyder det p�, at en
> spambot har v�ret p� spil. Det rigtige e-mail-felt epost.

Nu n�r jeg er i gang med at brokke mig over dine scripts (eller komme
med forbedringer om man vil...). S� er det alts� ikke p�nt at bruge
eregi til at test for \ og @.

- Det er fuldst�ndig ligegyldigt om du bruger ereg eller eregi - da case
insensitive er ligegyldig n�r der er tale om tegn som disse.

- Det er ikke best practice, at bruge eregi, som er en regular
expression funktion, til at teste om et tegn eksisterer i en streng.

Brug i stedet strpos med noget ala

if(strpos($navn,'@')!==false || ...)

--
Johan Holst Nielsen
www.phpgeek.dk

Kim Ludvigsen

unread,
Jun 22, 2009, 11:02:06 AM6/22/09
to
Johan Holst Nielsen skrev:

> Nu n�r jeg er i gang med at brokke mig over dine scripts (eller komme
> med forbedringer om man vil...). S� er det alts� ikke p�nt at bruge
> eregi til at test for \ og @.

Jeg er altid glad for forslag til forbedringer. Jeg er ikke
s�rlig skrap til php, og mine script er da ogs� henvendt til
dem, der ved mindre end jeg g�r.

> - Det er fuldst�ndig ligegyldigt om du bruger ereg eller eregi - da case
> insensitive er ligegyldig n�r der er tale om tegn som disse.

Jeg anede ikke, at der findes b�de ereg og eregi.

> - Det er ikke best practice, at bruge eregi, som er en regular
> expression funktion, til at teste om et tegn eksisterer i en streng.
>
> Brug i stedet strpos med noget ala
> if(strpos($navn,'@')!==false || ...)

Det vil jeg pr�ve at kigge lidt n�rmere p�, tak!

Kim Ludvigsen

unread,
Jun 22, 2009, 11:05:50 AM6/22/09
to
Johan Holst Nielsen skrev:
> Kim Ludvigsen wrote:

>> if ($email > '') {


> Hvad er �rsagen til du bruger > i stedet for != ?

Jeg tror, jeg har set det et eller andet sted, men jeg
husker ikke hvor. Mine scripts er oftest sammensat af
stumper, jeg finder andre steder, eftersom jeg ikke selv er
s�rlig skrap til php.

> eller m�ske mere "l�svenligt"
> if(!empty($email)) {

Jeg vil pr�ve at f� opdateret scriptet ved lejlighed.

Johan Holst Nielsen

unread,
Jun 22, 2009, 11:16:40 AM6/22/09
to
Kim Ludvigsen wrote:
> Johan Holst Nielsen skrev:
>
>> Nu n�r jeg er i gang med at brokke mig over dine scripts (eller komme
>> med forbedringer om man vil...). S� er det alts� ikke p�nt at bruge
>> eregi til at test for \ og @.
>
> Jeg er altid glad for forslag til forbedringer. Jeg er ikke s�rlig skrap
> til php, og mine script er da ogs� henvendt til dem, der ved mindre end
> jeg g�r.

;) Helt fint.

>> - Det er fuldst�ndig ligegyldigt om du bruger ereg eller eregi - da case
>> insensitive er ligegyldig n�r der er tale om tegn som disse.
>
> Jeg anede ikke, at der findes b�de ereg og eregi.

B�de ereg(_*) og eregi(_*) er reelt "outdated" for bedre performance b�r
man bruge pcre funktionerne (preg_*). www.php.net/pcre - som giver flere
muligheder :)

>> - Det er ikke best practice, at bruge eregi, som er en regular
>> expression funktion, til at teste om et tegn eksisterer i en streng.
>>
>> Brug i stedet strpos med noget ala
>> if(strpos($navn,'@')!==false || ...)
>
> Det vil jeg pr�ve at kigge lidt n�rmere p�, tak!

Igen - det er prim�rt sm� ting der ikke giver en funktionsm�ssig forskel
- men en fordel i performance (som ingen kan m�rke ;)) og s� at det er
korrekt rent "best-practice".

/Johan

Kim Schmidt Wind

unread,
Jun 22, 2009, 1:03:14 PM6/22/09
to
Johan Holst Nielsen wrote in dk.edb.internet.webdesign.serverside.php:


Jeg takker for input. Dog lige et sp�rgsm�l til kan man inds�tter et charset i
formularen s� man ikke skal �ndre �,� og � til koder.

Johan Holst Nielsen

unread,
Jun 22, 2009, 3:37:22 PM6/22/09
to
Kim Schmidt Wind wrote:
> Jeg takker for input. Dog lige et sp�rgsm�l til kan man inds�tter et charset i
> formularen s� man ikke skal �ndre �,� og � til koder.

Det g�r man helt oppe i <head> sektionen. Det virker ogs� i formularen.

Alt efter hvorledes dine data er encoded skal du enten inds�tte:
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
eller
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />

(Og m�ske en helt trejde, men vil v�re lidt underligt).

/Johan

0 new messages