locaal script
Ik ben een echte leek in php en hoop dat iemand mij kan helpen.
We maken een website met het programma Studio Webdesign. Voor een reactieformulier willen we een php script gebruiken. De host van de website support geen externe scriptbestanden. Ik wil dus werken met een lokaal script, maar krijg dit niet aan de praat..
Kan iemand mij op weg helpen in Jip en Janneke-taal?
Alvast enorm bedankt!
Gewijzigd op 07/04/2011 14:20:39 door Ozzie PHP
de code:
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
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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (!preg_match('/[ a-zA-Z-]$/', $_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam mag alleen letters bevatten.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">Naam:</label><br />
<input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
<label for="mail">E-mailadres:</label><br />
<input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
<label for="onderwerp">Onderwerp:</label><br />
<input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
<label for="bericht">Bericht:</label><br />
<textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Het contactformulier is verzonden</h1>
<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>
<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
/*******************************
* CONTACT FORMULIER *
* contactformulier.php *
* *
* Author: Miranda Verburg *
* Datum: 10 september 2010 *
* *
* Pas het e-mail adres aan *
* bij $mail_ontv en upload *
* het naar je webserver.. *
********************************/
// E-mailadres van de ontvanger
$mail_ontv = '[email protected]'; // <<<----- voer jouw e-mailadres hier in!
// Speciale checks voor naam en e-mailadres
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
// naam controle
if (!preg_match('/[ a-zA-Z-]$/', $_POST['naam']))
$naam_fout = 1;
// e-mail controle
if (function_exists('filter_var') && !filter_var($_POST['mail'], FILTER_VALIDATE_EMAIL))
$email_fout = 1;
// antiflood controle
if (!empty($_SESSION['antiflood']))
{
$seconde = 20; // 20 seconden voordat dezelfde persoon nog een keer een e-mail mag versturen
$tijd = time() - $_SESSION['antiflood'];
if($tijd < $seconde)
$antiflood = 1;
}
}
// Kijk of alle velden zijn ingevuld - naam mag alleen uit letters bestaan en het e-mailadres moet juist zijn
if (($_SERVER['REQUEST_METHOD'] == 'POST' && (!empty($antiflood) || empty($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['bericht']) || empty($_POST['onderwerp']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo '<p>Uw naam mag alleen letters bevatten.</p>';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
elseif (!empty($antiflood))
echo '<p>U mag slechts één bericht per ' . $seconde . ' seconde versturen.</p>';
else
echo '<p>U bent uw naam, e-mailadres, onderwerp of bericht vergeten in te vullen.</p>';
}
// HTML e-mail formlier
echo '<form method="post" action="' . $_SERVER['REQUEST_URI'] . '" />
<p>
<label for="naam">Naam:</label><br />
<input type="text" id="naam" name="naam" value="' . (isset($_POST['naam']) ? htmlspecialchars($_POST['naam']) : '') . '" /><br />
<label for="mail">E-mailadres:</label><br />
<input type="text" id="mail" name="mail" value="' . (isset($_POST['mail']) ? htmlspecialchars($_POST['mail']) : '') . '" /><br />
<label for="onderwerp">Onderwerp:</label><br />
<input type="text" id="onderwerp" name="onderwerp" value="' . (isset($_POST['onderwerp']) ? htmlspecialchars($_POST['onderwerp']) : '') . '" /><br />
<label for="bericht">Bericht:</label><br />
<textarea id="bericht" name="bericht" rows="8" style="width: 400px;">' . (isset($_POST['bericht']) ? htmlspecialchars($_POST['bericht']) : '') . '</textarea><br />
<input type="submit" name="submit" value=" Versturen " />
</p>
</form>';
}
// versturen naar
else
{
// set datum
$datum = date('d/m/Y H:i:s');
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "Ingevulde contact formulier " . $_SERVER['HTTP_HOST'] . "\n";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . htmlspecialchars($_POST['naam']) . "\n";
$inhoud_mail .= "E-mail adres: " . htmlspecialchars($_POST['mail']) . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= htmlspecialchars($_POST['bericht']) . "\n\n";
$inhoud_mail .= "Verstuurd op " . $datum . " via het IP adres " . $_SERVER['REMOTE_ADDR'] . "\n\n";
$inhoud_mail .= "===================================================\n\n";
// --------------------
// spambot protectie
// ------
// van de tutorial: http://www.phphulp.nl/php/tutorial/beveiliging/spam-vrije-contact-formulieren/340/
// ------
$headers = 'From: ' . htmlspecialchars($_POST['naam']) . ' <' . $_POST['mail'] . '>';
$headers = stripslashes($headers);
$headers = str_replace('\n', '', $headers); // Verwijder \n
$headers = str_replace('\r', '', $headers); // Verwijder \r
$headers = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $headers)); // Slashes van quotes
$_POST['onderwerp'] = str_replace('\n', '', $_POST['onderwerp']); // Verwijder \n
$_POST['onderwerp'] = str_replace('\r', '', $_POST['onderwerp']); // Verwijder \r
$_POST['onderwerp'] = str_replace("\"", "\\\"", str_replace("\\", "\\\\", $_POST['onderwerp'])); // Slashes van quotes
if (mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers))
{
// zorg ervoor dat dezelfde persoon niet kan spammen
$_SESSION['antiflood'] = time();
echo '<h1>Het contactformulier is verzonden</h1>
<p>Bedankt voor het invullen van het contactformulier. We zullen zo spoedig mogelijk contact met u opnemen.</p>';
}
else
{
echo '<h1>Het contactformulier is niet verzonden</h1>
<p><b>Onze excuses.</b> Het contactformulier kon niet verzonden worden.</p>';
}
}
?>
welke fout krijg je?
Gewijzigd op 07/04/2011 14:59:30 door Luuk Mulder
Quote:
De host van de website support geen externe scriptbestanden. Ik wil dus werken met een lokaal script, maar krijg dit niet aan de praat..
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Ik wilde net zeggen wat -Aar- ook heeft gezegd, maar moet me er maar bij aansluiten. Het is handiger om een daadwerkelijke hosting aan te vragen. Deze ondersteunt (vrijwel) altijd PHP en dus kun je het meteen testen. Vaak zijn de standaard instellingen van je eigen "server" ook anders dan die van een provider. Dus of het erna nog werkt is ook nog maar de vraag. Je hebt al een hosting voor €29,00 p/jaar (3GB opslag en 60GB dataverkeer).
@Luuk: mss beetje domme vraag, maar hoe zet je PHP aan? zodat je de source niet meer ziet?
alvast bedankt!
Gebruik dit script niet meer, het is slecht en onveilig!
Yearupie Achternaamloos op 08/04/2011 08:50:23:
Ik zou dit een leek niet aanbevelen om dit publiekelijk te draaien.
Een webserver beheren is al een vak apart, het is wel leuk voor je eigen, maar de veiligheid is van groot belang.
Voor zover ik kan zien ondersteunt Hostnet gewoon PHP.
Karl Karl op 08/04/2011 09:03:04:
Gebruik dit script niet meer, het is slecht en onveilig!
Karl, als je ook eens argumenten opnoemt, dan is ook meteen duidelijk waarom het onveilig is, en waarom het beter kan?
Voor zover ik zie is header injection al niet eens meer mogelijk.
Gewijzigd op 08/04/2011 09:42:44 door - Ariën -
- Aar - op 08/04/2011 09:30:35:
(...)
Karl, als je ook eens argumenten opnoemt, dan is ook meteen duidelijk waarom het onveilig is, en waarom het beter kan?
Voor zover ik zie is header injection al niet eens meer mogelijk.
Karl Karl op 08/04/2011 09:03:04:
Gebruik dit script niet meer, het is slecht en onveilig!
Karl, als je ook eens argumenten opnoemt, dan is ook meteen duidelijk waarom het onveilig is, en waarom het beter kan?
Voor zover ik zie is header injection al niet eens meer mogelijk.
Mail injections zijn volgens mij nog gewoon mogelijk.
- Aar - op 07/04/2011 15:18:42:
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Quote:
De host van de website support geen externe scriptbestanden. Ik wil dus werken met een lokaal script, maar krijg dit niet aan de praat..
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Hoe wil je een lokaal script op je computer aan de buitenwereld tonen dan?
Jack Sierkstra op 09/04/2011 09:35:10:
Hoe wil je een lokaal script op je computer aan de buitenwereld tonen dan?
- Aar - op 07/04/2011 15:18:42:
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Quote:
De host van de website support geen externe scriptbestanden. Ik wil dus werken met een lokaal script, maar krijg dit niet aan de praat..
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Hoe wil je een lokaal script op je computer aan de buitenwereld tonen dan?
Port forwardig.
Karl Karl op 09/04/2011 09:39:47:
Port forwardig.
Jack Sierkstra op 09/04/2011 09:35:10:
Hoe wil je een lokaal script op je computer aan de buitenwereld tonen dan?
- Aar - op 07/04/2011 15:18:42:
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Quote:
De host van de website support geen externe scriptbestanden. Ik wil dus werken met een lokaal script, maar krijg dit niet aan de praat..
Is het niet raadzamer om PHP-ondersteuning bij je webhosting aan te vragen, of desnoods te verhuizen?
je kan wel zelf een webserver en PHP op je eigen computer installeren, maar die moet dan wel continu aan staan.
Hoe wil je een lokaal script op je computer aan de buitenwereld tonen dan?
Port forwardig.
Vergt dat niet meer kennis dan op je hosting de Apache-module :PHP aanvragen?
Toevoeging op 09/04/2011 11:33:26:
Marjolein,
Als ik jou was zal ik informeren bij je host of ze PHP ondersteunen. Is dit niet zo? Ga naar een andere hosting.
De reden dat je het php script op het scherm ziet is omdat php het niet verwerkt. dus geeft hij het terug zoals je het erin heb gestopt.
Gewijzigd op 09/04/2011 09:48:54 door Jack Sierkstra