Mijn contactformulier!
Mijn contactformulier wordt aan de voorkant gecheckt d.m.v. javascript en aan de achterkant d.m.v PHP.
En ik heb een aantal vragen over het PHP gedeelte:
Ik gebruik dezelfde regex-en in Javascript en PHP. In Javascript werkt het perfect, maar in PHP worden mij a-z of A-Z genegeerd en worden beide geaccepteerd. Iemand een idee?
Hoe neem ik de door PHP gecreëerde tekst onderhanden d.m.v. CSS?
Hoe voeg ik een terug button toe aan de door PHP gecreëerde tekst?
En ben ik zo goed op weg?
contact.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
<?php
include("global.inc.php");
$errors=0;
$error="U heeft één of meerdere velden niet naar behoren ingevuld:<ul>";
pt_register('POST','contact');
pt_register('POST','titel');
pt_register('POST','voorletters');
pt_register('POST','naam');
pt_register('POST','adres');
pt_register('POST','postcode');
pt_register('POST','plaats');
pt_register('POST','telefoon');
pt_register('POST','email');
pt_register('POST','fax');
pt_register('POST','vraag');
$vraag=preg_replace("/(\015\012)|(\015)|(\012)/"," <br />", $vraag);
if(!eregi("^[A-Z. ]+$",$voorletters)){
$errors=1;
$error.="<li>Voorletters";
}
if($naam==""){
$errors=1;
$error.="<li>Naam";
}
if($adres==""){
$errors=1;
$error.="<li>Adres";
}
if(!eregi("^[1-9]{1}[0-9]{3}[A-Z]{2}$",$postcode)){
$errors=1;
$error.="<li>Postcode";
}
if($plaats==""){
$errors=1;
$error.="<li>Plaats";
}
if(!eregi("^[0-9]{10}$",$telefoon)){
$errors=1;
$error.="<li>Telefoon";
}
if(!eregi("^([a-z0-9üöä]+([\._%-]?[a-z0-9üöä]+)*@[a-z0-9üöä]+([\._%-]?[a-z0-9üöä]+)*\.[a-z]{2,6})?$",$email)){
$errors=1;
$error.="<li>Email";
}
if(!eregi("^([0-9]{10})?$",$fax)){
$errors=1;
$error.="<li>Fax";
}
if($vraag==""){
$errors=1;
$error.="<li>Vraag";
}
if($errors==1) echo $error;
else{
$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));
$message="contact: ".$contact."
titel: ".$titel."
voorletters: ".$voorletters."
naam: ".$naam."
adres: ".$adres."
postcode: ".$postcode."
plaats: ".$plaats."
telefoon: ".$telefoon."
email: ".$email."
fax: ".$fax."
vraag: ".$vraag."
";
$message = stripslashes($message);
mail("[email protected]","Contactformulier",$message,"From: [email protected]");
header("Refresh: 0;url=http://localhost/test/phpform/use/contact/bedankt.html");
?>
include("global.inc.php");
$errors=0;
$error="U heeft één of meerdere velden niet naar behoren ingevuld:<ul>";
pt_register('POST','contact');
pt_register('POST','titel');
pt_register('POST','voorletters');
pt_register('POST','naam');
pt_register('POST','adres');
pt_register('POST','postcode');
pt_register('POST','plaats');
pt_register('POST','telefoon');
pt_register('POST','email');
pt_register('POST','fax');
pt_register('POST','vraag');
$vraag=preg_replace("/(\015\012)|(\015)|(\012)/"," <br />", $vraag);
if(!eregi("^[A-Z. ]+$",$voorletters)){
$errors=1;
$error.="<li>Voorletters";
}
if($naam==""){
$errors=1;
$error.="<li>Naam";
}
if($adres==""){
$errors=1;
$error.="<li>Adres";
}
if(!eregi("^[1-9]{1}[0-9]{3}[A-Z]{2}$",$postcode)){
$errors=1;
$error.="<li>Postcode";
}
if($plaats==""){
$errors=1;
$error.="<li>Plaats";
}
if(!eregi("^[0-9]{10}$",$telefoon)){
$errors=1;
$error.="<li>Telefoon";
}
if(!eregi("^([a-z0-9üöä]+([\._%-]?[a-z0-9üöä]+)*@[a-z0-9üöä]+([\._%-]?[a-z0-9üöä]+)*\.[a-z]{2,6})?$",$email)){
$errors=1;
$error.="<li>Email";
}
if(!eregi("^([0-9]{10})?$",$fax)){
$errors=1;
$error.="<li>Fax";
}
if($vraag==""){
$errors=1;
$error.="<li>Vraag";
}
if($errors==1) echo $error;
else{
$where_form_is="http".($HTTP_SERVER_VARS["HTTPS"]=="on"?"s":"")."://".$SERVER_NAME.strrev(strstr(strrev($PHP_SELF),"/"));
$message="contact: ".$contact."
titel: ".$titel."
voorletters: ".$voorletters."
naam: ".$naam."
adres: ".$adres."
postcode: ".$postcode."
plaats: ".$plaats."
telefoon: ".$telefoon."
email: ".$email."
fax: ".$fax."
vraag: ".$vraag."
";
$message = stripslashes($message);
mail("[email protected]","Contactformulier",$message,"From: [email protected]");
header("Refresh: 0;url=http://localhost/test/phpform/use/contact/bedankt.html");
?>
en global.inc.php
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
<?php
function pt_register()
{
$num_args = func_num_args();
$vars = array();
if ($num_args >= 2) {
$method = strtoupper(func_get_arg(0));
if (($method != 'SESSION') && ($method != 'GET') && ($method != 'POST') && ($method != 'SERVER') && ($method != 'COOKIE') && ($method != 'ENV')) {
die('The first argument of pt_register must be one of the following: GET, POST, SESSION, SERVER, COOKIE, or ENV');
}
$varname = "HTTP_{$method}_VARS";
global ${$varname};
for ($i = 1; $i < $num_args; $i++) {
$parameter = func_get_arg($i);
if (isset(${$varname}[$parameter])) {
global $$parameter;
$$parameter = ${$varname}[$parameter];
}
}
} else {
die('You must specify at least two arguments');
}
}
?>
function pt_register()
{
$num_args = func_num_args();
$vars = array();
if ($num_args >= 2) {
$method = strtoupper(func_get_arg(0));
if (($method != 'SESSION') && ($method != 'GET') && ($method != 'POST') && ($method != 'SERVER') && ($method != 'COOKIE') && ($method != 'ENV')) {
die('The first argument of pt_register must be one of the following: GET, POST, SESSION, SERVER, COOKIE, or ENV');
}
$varname = "HTTP_{$method}_VARS";
global ${$varname};
for ($i = 1; $i < $num_args; $i++) {
$parameter = func_get_arg($i);
if (isset(${$varname}[$parameter])) {
global $$parameter;
$$parameter = ${$varname}[$parameter];
}
}
} else {
die('You must specify at least two arguments');
}
}
?>
(Het tot nu toe gefabriceerde gedeelte is gebaseerd op phpformgenerator)
Alvast bedankt..
Gewijzigd op 01/01/1970 01:00:00 door Stipje
Gewijzigd op 01/01/1970 01:00:00 door Nick Mulder
Voor de error text die PHP weergeeft zou je bijv <span id="error"> error bericht </span> kunnen gebruiken en dmv van een stylesheet een stijl maken voor error.
Ik heb eregi veranderd in preg_match en probleem is opgelost. Ik snap niet dat andere dit niet opmerken in hun script want eregi wordt toch in het algemeen gebruikt.
De button is ook welkom.
En betreft Stylesheet snap ik wel dat ik moet linken naar een tag, maar waar komt de stylesheet of verwijzing stylesheet zelf te staan?
Want als ik hem in het desbetreffende PHP bestand zet doet tie het niet!
en maak je een bestand aan "style.css" met je stylesheet
Maar nu het volgende:
De beveiliging tegen o.a. hacken en spam.
Je moet o.a. alles in je formulier “”. (dit is volgens mij in orde)
Je moet o.a. gebruik maken van stripslashes. (dit is volgens mij ook in orde)
Je moet o.a. alles /n en /r. (waar moet ik dit doen)
Daarnaast zijn er meerdere oplossingen tegen spam.
Waaronder bv:
http://www.sitemasters.be/?pagina=scripts/scripts&cat=15&id=695
en
http://ravora.com/tutorial/1/anti-spam-bot-form/
Maar wat is hier aan te raden om te gebruiken.
(captcha vind ik teveel van het goede dus die liever niet)
http://www.sitemasters.be/?pagina=scripts/scripts&cat=15&id=695
( http://www.phphulp.nl/php/scripts/1/331/ )
Lol dat is mijn scriptje ^^
Zelf gebruik wel een Catpcha bij mijn Contact formulieren.
(Klik)
(Zolang het een redelijk goeie is en niet dat je 100 chars moet typen is hij wel gebruiks vriendelijk imo)
Dan gewoon gebruik maken van Cookies en Sessies, maar als je cookies hebt uitgeschakeld en hij start een nieuwe IE op oid dan kan hij gewoon weer Spammen. Oplossing is de captcha :p
( http://www.phphulp.nl/php/scripts/1/331/ )
Lol dat is mijn scriptje ^^
Zelf gebruik wel een Catpcha bij mijn Contact formulieren.
(Klik)
(Zolang het een redelijk goeie is en niet dat je 100 chars moet typen is hij wel gebruiks vriendelijk imo)
Dan gewoon gebruik maken van Cookies en Sessies, maar als je cookies hebt uitgeschakeld en hij start een nieuwe IE op oid dan kan hij gewoon weer Spammen. Oplossing is de captcha :p
oke dus toch captcha, maar hoe moet ik omgaan met de /n/r, waar moet ik die plaatsen.
Trouwens een nieuw probleem door onderstaand aan mijn contact.php toegevoegd te hebben:
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Untitled Document</title>
<link href="../../../../css/contactformphp.css" rel="stylesheet" type="text/css" />
</head>
<body>
<div id="container">
<div id="php">
(hier php)
</div>
</div>
</body>
</html>
Nu krijg ik de melding:
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\test\phpform\use\contact\process.php:10) in C:\wamp\www\test\phpform\use\contact\process.php on line 83
Gewijzigd op 01/01/1970 01:00:00 door stipje
zet alle bewerkingen van php bevonaan in je paginas (validatie, cookies, start van een sessie, ophalen van gegevens en weet ik veel wat nog meer) en waar je de output mee wilt geven op de gewenste plek, dan zou het geen probleem moeten zijn.
Het werkte dus niet naar behoren, na toevoegen stylesheet met toebehoren.
Daarna krijg ik dus de melding:
Warning: Cannot modify header information - headers already sent by (output started at C:\wamp\www\test\phpform\use\contact\process.php:10) in C:\wamp\www\test\phpform\use\contact\process.php on line 83
Als ik contact.php enkel laat bestaan uit werkt het weer.
Ik zie dat jou voorbeeld daar zonder problemen mee omgaat, maar ik kan het probleem niet vinden.
ps. welke captcha gebruik jij als ik vragen mag.
">
en ik verwijs naar contact.php, dacht ik dat het anders was.
... af en toe...
Shit dat dacht ik dus al Crawlbackwards, maar omdat zijn action in form was: action="en ik verwijs naar contact.php, dacht ik dat het anders was.
... af en toe...
Gewijzigd op 01/01/1970 01:00:00 door stipje
ok.. maar t gaat er in elk geval om dat alle headers eerst komen voor andere output, dus cookies, start van een sessie, en andere headers altijd als eerst outputten,. dit alles hoort dus ook nog boven de dtd regel.