Tutorial: Bijlage veld in form verwerken
Ik ben hierzelf al een tijdje mee bezig geweest en er zijn voor zover ik weet ook al aardig wat topicjes enz. over geweest, maar ik kom er niet helemaal uit. Ik heb ook bestaande scripts doorgeplozen. en van alles nog wat op google gevonden maar niks kon mij helpen :(
Mijn vraag is dan ook:
Is/kan er ook een tutorialtje gemaakt worden waarin staat hoe je te werk moet gaan om dit in je bestaande formulier te verwerken, waar je op moet letten enz. en hoe het eigenlijk werkt.
?
http://www.phphulp.nl/forum/showtopic.php?cat=2&id=2026&q=bijlage%20bij%20mailform maar eens bij kan je hulp uit halen
kijk Gewijzigd op 17/10/2005 19:23:00 door Niels Beckers
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
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
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?
ob_start(); // Voor Cookie setten
// Config Gedeelte
$site = "http://www.google.nl"; // Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$wm_naam = "jopie"; // Webmaster naam
$wm_email = "[email protected]"; // Webmaster E-mail
$datum = date("d-m-Y H:i:s"); // Datum wanneer verstuurd
$Anti_Spam = "0"; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$fout_text = FALSE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$fout_vakje = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
// Hierna hoef je niks meer te veranderen!
$naam = $_POST['naam'];
$email = $_POST['email'];
$onderwerp = $_POST['onderwerp'];
$bericht = $_POST['bericht'];
$bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
// IP van de verstuurder
if(getenv($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = getenv($_SERVER['HTTP_X_FORWARDED_FOR']);
} elseif(getenv($_SERVER['HTTP_CLIENT_IP'])) {
$ip = getenv($_SERVER['HTTP_CLIENT_IP']);
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$host = gethostbyaddr($ip); // Host van verstuurder
$layout = "
<html>
<head>
<title>Opdracht bon</title>
</head>
<body>
<table border='0' cellpadding='0' cellspacing='0' width='752'>
<tr>
<td bgcolor='#000000'>
<p align='center'><font color='#FFFFFF'>ALGEMENE GEGEVENS</font></td>
</tr>
</table>
</body>
</html>
Naam: ".$naam." \n
E-mail: ".$email." \n
Bericht:\n".$bericht_wrap." \n
\n
Verstuurd op: ".$datum."
------------------------------------------------------- \n
IP: ".$ip." \n
Host: ".$host." \n
";
$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Reply-To: mailform <[email protected]>\r\n";
// Mail Checker
function checkmail($mail)
{
// explode het e-mail adres op een @
$email_host = explode("@", $mail);
// pak alles na de @
$email_host = $email_host['1'];
// zet een var met de (eventuele) DNS van de domein
$email_resolved = gethostbyname($email_host);
// kijk of er een DNS aan zit en of alles voor en na het e-mail adres klopt
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
// wanneer het geldig is, is $valid = 1, zo niet, dan geeft hij geen result (NULL)
return $valid;
}
// Alles Controleren Wanneer er op Verzenden wordt gedrukt
if(isset($_POST['verzenden']))
{
$fout = "";
if((empty($naam)) OR (strlen($naam) < 3))
{
$fout .= "U bent vergeten je naam in te vullen! <BR>";
unset($naam);
$fout_vakje_naam = "input_fout";
$fout_text_naam = "#FF0000";
}
if((empty($email)) OR (strlen($email) < 7))
{
$fout .= "U bent vergeten uw e-mail adres in te vullen! <BR>";
unset($email);
$fout_vakje_email = "input_fout";
$fout_text_email = "#FF0000";
}
elseif(checkmail($email) == 0)
{
$fout .= "Vul een correct e-mail adres in! <BR>";
$fout_vakje_email = "input_fout";
$fout_text_email = "#FF0000";
}
if(empty($onderwerp))
{
$fout .= "U bent vergeten een onderwerp in te vullen! <BR>";
unset($onderwerp);
$fout_vakje_onderwerp = "input_fout";
$fout_text_onderwerp = "#FF0000";
}
if(empty($bericht))
{
$fout .= "U bent vergeten een bericht in te vullen!";
unset($bericht);
$fout_vakje_bericht = "input_fout";
$fout_text_bericht = "#FF0000";
}
elseif(strlen($bericht) < 6)
{
$fout .= "Uw bericht is tekort! <BR>";
$fout_vakje_bericht = "input_fout";
$fout_text_bericht = "#FF0000";
}
if(!$fout_text)
{
unset($fout_text_naam);
unset($fout_text_email);
unset($fout_text_onderwerp);
unset($fout_text_bericht);
}
if(!$fout_vakje)
{
unset($fout_vakje_naam);
unset($fout_vakje_email);
unset($fout_vakje_onderwerp);
unset($fout_vakje_bericht);
}
if(!empty($fout))
{
echo "<font color=\"#FF0000\"> $fout </font>"; // Weergeven van de fout(en)
}
else
{
mail($wm_email,$onderwerp,$layout,$headers);
// Bericht als mail succesvol is verzonden
echo "<head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"></head>";
echo "<BR>Uw contact bericht is succesvol verzonden!<BR>";
echo "Er word zo snel mogelijk gereageerd.<BR><BR>";
echo "Met vriendelijke groeten,<BR>";
echo "<B>".$wm_naam."</B>";
echo "$naam";
// cookie zetten tegen spam
setcookie("mailformulier",1,time()+($Anti_Spam*60));
// formulier wordt niet weer getoond
$Formulier = TRUE;
}
}
// kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond.
if(isset($_COOKIE['mailformulier']))
{
$Formulier = TRUE;
echo "<head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"></head>";
echo "<center><h2> Spam Beveiliging </h2><BR>";
echo "Je kunt maar eens in de $Anti_Spam minuten een e-mail versturen!</center>";
header("refresh:3;url=".$site."");
}
if(!isset($Formulier))
{
?>
ob_start(); // Voor Cookie setten
// Config Gedeelte
$site = "http://www.google.nl"; // Site waarnaar je terug gaat als je een bericht hebt achtergelaten
$wm_naam = "jopie"; // Webmaster naam
$wm_email = "[email protected]"; // Webmaster E-mail
$datum = date("d-m-Y H:i:s"); // Datum wanneer verstuurd
$Anti_Spam = "0"; // Anti Spam Tijd in Minuten ( Voer "0" om de Spam Beveiliging uit te zetten )
$fout_text = FALSE; // Bij Fout Text Rood maken ( TRUE voor aan, FALSE voor uit )
$fout_vakje = TRUE; // Bij Fout Border om Vakje Rood maken ( TRUE voor aan, FALSE voor uit )
// Hierna hoef je niks meer te veranderen!
$naam = $_POST['naam'];
$email = $_POST['email'];
$onderwerp = $_POST['onderwerp'];
$bericht = $_POST['bericht'];
$bericht_wrap = wordwrap ($bericht, 40, "\n", 1);
// IP van de verstuurder
if(getenv($_SERVER['HTTP_X_FORWARDED_FOR'])) {
$ip = getenv($_SERVER['HTTP_X_FORWARDED_FOR']);
} elseif(getenv($_SERVER['HTTP_CLIENT_IP'])) {
$ip = getenv($_SERVER['HTTP_CLIENT_IP']);
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
$host = gethostbyaddr($ip); // Host van verstuurder
$layout = "
<html>
<head>
<title>Opdracht bon</title>
</head>
<body>
<table border='0' cellpadding='0' cellspacing='0' width='752'>
<tr>
<td bgcolor='#000000'>
<p align='center'><font color='#FFFFFF'>ALGEMENE GEGEVENS</font></td>
</tr>
</table>
</body>
</html>
Naam: ".$naam." \n
E-mail: ".$email." \n
Bericht:\n".$bericht_wrap." \n
\n
Verstuurd op: ".$datum."
------------------------------------------------------- \n
IP: ".$ip." \n
Host: ".$host." \n
";
$headers = "MIME-Version: 1.0\r\n";
$headers.= "Content-type: text/html; charset=iso-8859-1\r\n";
$headers .= "Reply-To: mailform <[email protected]>\r\n";
// Mail Checker
function checkmail($mail)
{
// explode het e-mail adres op een @
$email_host = explode("@", $mail);
// pak alles na de @
$email_host = $email_host['1'];
// zet een var met de (eventuele) DNS van de domein
$email_resolved = gethostbyname($email_host);
// kijk of er een DNS aan zit en of alles voor en na het e-mail adres klopt
if ($email_resolved != $email_host && eregi("^[0-9a-z]([-_.~]?[0-9a-z])*@[0-9a-z]([-.]?[0-9a-z])*\\.[a-z]{2,4}$",$mail))
$valid = 1;
// wanneer het geldig is, is $valid = 1, zo niet, dan geeft hij geen result (NULL)
return $valid;
}
// Alles Controleren Wanneer er op Verzenden wordt gedrukt
if(isset($_POST['verzenden']))
{
$fout = "";
if((empty($naam)) OR (strlen($naam) < 3))
{
$fout .= "U bent vergeten je naam in te vullen! <BR>";
unset($naam);
$fout_vakje_naam = "input_fout";
$fout_text_naam = "#FF0000";
}
if((empty($email)) OR (strlen($email) < 7))
{
$fout .= "U bent vergeten uw e-mail adres in te vullen! <BR>";
unset($email);
$fout_vakje_email = "input_fout";
$fout_text_email = "#FF0000";
}
elseif(checkmail($email) == 0)
{
$fout .= "Vul een correct e-mail adres in! <BR>";
$fout_vakje_email = "input_fout";
$fout_text_email = "#FF0000";
}
if(empty($onderwerp))
{
$fout .= "U bent vergeten een onderwerp in te vullen! <BR>";
unset($onderwerp);
$fout_vakje_onderwerp = "input_fout";
$fout_text_onderwerp = "#FF0000";
}
if(empty($bericht))
{
$fout .= "U bent vergeten een bericht in te vullen!";
unset($bericht);
$fout_vakje_bericht = "input_fout";
$fout_text_bericht = "#FF0000";
}
elseif(strlen($bericht) < 6)
{
$fout .= "Uw bericht is tekort! <BR>";
$fout_vakje_bericht = "input_fout";
$fout_text_bericht = "#FF0000";
}
if(!$fout_text)
{
unset($fout_text_naam);
unset($fout_text_email);
unset($fout_text_onderwerp);
unset($fout_text_bericht);
}
if(!$fout_vakje)
{
unset($fout_vakje_naam);
unset($fout_vakje_email);
unset($fout_vakje_onderwerp);
unset($fout_vakje_bericht);
}
if(!empty($fout))
{
echo "<font color=\"#FF0000\"> $fout </font>"; // Weergeven van de fout(en)
}
else
{
mail($wm_email,$onderwerp,$layout,$headers);
// Bericht als mail succesvol is verzonden
echo "<head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"></head>";
echo "<BR>Uw contact bericht is succesvol verzonden!<BR>";
echo "Er word zo snel mogelijk gereageerd.<BR><BR>";
echo "Met vriendelijke groeten,<BR>";
echo "<B>".$wm_naam."</B>";
echo "$naam";
// cookie zetten tegen spam
setcookie("mailformulier",1,time()+($Anti_Spam*60));
// formulier wordt niet weer getoond
$Formulier = TRUE;
}
}
// kijken of het cookie bestaat, zoja dan wordt het formulier niet getoond.
if(isset($_COOKIE['mailformulier']))
{
$Formulier = TRUE;
echo "<head><link href=\"style.css\" rel=\"stylesheet\" type=\"text/css\"></head>";
echo "<center><h2> Spam Beveiliging </h2><BR>";
echo "Je kunt maar eens in de $Anti_Spam minuten een e-mail versturen!</center>";
header("refresh:3;url=".$site."");
}
if(!isset($Formulier))
{
?>
<link href="style.css" rel="stylesheet" type="text/css">
</head>
<form method="POST" action="">
<table>
<tr><td> </td><td> </td></tr>
<tr><td><font color="">Naam:</font></td><td><input type="text" class="" name="naam" maxlength="20" value=""></td></tr>
<tr><td><font color="">Email:</font></td><td><input type="text" class="" name="email" maxlength="30" value=""></td></tr>
<tr><td><font color="">Onderwerp:</font></td><td><input type="text" class="" name="onderwerp" maxlength="30" value="">
<input name="bijlage" type="file">
</td>
</tr>
<tr><td valign=top><font color="">Bericht:</font></td><td><textarea name="bericht" class="" cols="30" rows="4"></textarea></td></tr>
<tr><td></td><td><input type="submit" name="verzenden" value="Verzenden">
<input type="reset" name="reset" value="Reset"></td></tr>
</table>
</from>
Gewijzigd op 18/10/2005 08:51:00 door jonathan
@ Jonathan ik ga dr zelf wel even naar kijke
Okeey thijs, dat is mooi! Kvind het namelijk een erg handig mooi scriptje en makkelijk uit te breiden. behalve dat bijlage gedeelte daar snap ik nie veel van:S
Gaat het denkje lukken thijs? of kan iemand anders thijs en mij opweg helpen? ;)
Ik heb het even geprobeerd maar het is me niet egt glukt :Ss
is er iemand anders die me op weg kan helpen? Kom er niet uit.
Plaats deze 2 scripts in een map, en maak in dezelfde map een mapje genaamd upload waarin de webserver mag scrijven.
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
<?php
# FILENAME: upload.php
# Hierin word alleen een formulier gemaakt.
echo "<H3>Een bestand uploaden</H3>\n";
/* Vooral deze regel is belangrijk en staat niet in jouw script!:
echo "<form action='upload2.php' method='post' enctype='multipart/form-data'>\n";
*/
echo "<form action='upload2.php' method='post' enctype='multipart/form-data'>\n";
echo "Bestand:<input type='file' name='file'><br />\n";
echo "Bestandsnaam:<input type='text' name='filename'><br />\n";
echo "<input type='submit' name='submit' value='Upload'>\n";
echo "</form>\n";
?>
# FILENAME: upload.php
# Hierin word alleen een formulier gemaakt.
echo "<H3>Een bestand uploaden</H3>\n";
/* Vooral deze regel is belangrijk en staat niet in jouw script!:
echo "<form action='upload2.php' method='post' enctype='multipart/form-data'>\n";
*/
echo "<form action='upload2.php' method='post' enctype='multipart/form-data'>\n";
echo "Bestand:<input type='file' name='file'><br />\n";
echo "Bestandsnaam:<input type='text' name='filename'><br />\n";
echo "<input type='submit' name='submit' value='Upload'>\n";
echo "</form>\n";
?>
-----------------------------------------
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
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
<?php
# FILENAME: upload2.php
# Hierin word het bestand verwerkt.
# Ja, is handiger om $_POST te gebruiken, maar moet dan even uitzoeken hoe ik de file er dan doorkrijg.
if (ISSET($file) && ISSET($submit) && ($filename != '')
{
# Gebruik deze gegevens om te controleren of de data goed doorkomt!
# echo "FILE: $file <br />\n";
# echo "FILENAME: $filename <br />\n";
# Verplaats het bestand naar de map 'upload' in de map waarin ook deze scripts staan!
if (copy($file, "upload/".$filename))
{
# Als ok.
echo "Bestand $filename bewaard.<br />\n";
} else {
# Als fout. (Check error_log).
echo "Er is een probleem opgereden.<br />\n";
}
} else {
echo "De gegevens waren niet compleet, probeer opnieuw.<br />\n";
}
?>
# FILENAME: upload2.php
# Hierin word het bestand verwerkt.
# Ja, is handiger om $_POST te gebruiken, maar moet dan even uitzoeken hoe ik de file er dan doorkrijg.
if (ISSET($file) && ISSET($submit) && ($filename != '')
{
# Gebruik deze gegevens om te controleren of de data goed doorkomt!
# echo "FILE: $file <br />\n";
# echo "FILENAME: $filename <br />\n";
# Verplaats het bestand naar de map 'upload' in de map waarin ook deze scripts staan!
if (copy($file, "upload/".$filename))
{
# Als ok.
echo "Bestand $filename bewaard.<br />\n";
} else {
# Als fout. (Check error_log).
echo "Er is een probleem opgereden.<br />\n";
}
} else {
echo "De gegevens waren niet compleet, probeer opnieuw.<br />\n";
}
?>
Gewijzigd op 21/10/2005 00:33:00 door - Jim -
Dat is een upload script jim.
Het gaat over een bestand als bijlage emailen, niet een bestand uploaden..
En dan het bestand wegflikkeren....
Het bestand wordt geupload en dan wordt er automatisch een link meegestuurd? ofzo?
als iemand nog suggesties/tips heeft, voor e-mail met bijlage.....>------v
neen jim bedoelt dat je het bestand selecteerd en dit word dan verzonder naa rde map uploads
--------------------------------------------------
Kijk hier eens.....
http://www.phphulp.nl/php/scripts/1/262
Alleen '</textarea>' (sluiten). En een beetje aanpassen zodat het juiste mail adres wordt gebruikt e.d.
iemand nog tips/suggesties?