Notice Undefined index: krijg ik niet opgelost
Echter na lezen en testen/uitproberen van alle tutorials op dit gebied blijven, ondanks mijn vele pogingen, de volgende vier notices undefined index: naam/.../..., undefined index: mail/.../..., undefined index: onderwerp/.../... en undefined index: mssg/.../... staan. Ik heb geen idee meer waar ik de fout moet zoeken. Ik heb veel tutorials van isset, empty, POST en GET tot submit bestudeerd en kom er niet achter.
De meldingen betreffen de volgende regels:
echo "<tr><td>Naam: <input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>";
echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>";
echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>";
echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>";
Hieronder de hele code van de pagina:
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
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
<?php
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
// 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;
}
// 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($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['onderwerp']) || empty($_POST['msggs']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo 'U bent uw naam vergeten in te vullen.';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
else
echo '<p>U bent uw naam, e-mail adres, onderwerp of bericht vergeten in te vullen</p>';
}
// form + tabel
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
// naam
echo "<tr><td>Naam:</td></tr>";
echo "<tr><td>Naam: <input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
// mail
echo "<tr><td>E-mail adres:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
// mail
echo "<tr><td>Onderwerp:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
// mail
echo "<tr><td>Bericht:</td></tr>";
echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>";
// space
echo "<tr><td> </td></tr>";
// button
echo "<tr><td> </td></tr>";
echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>";
// sluit form + tabel
echo "</form>";
echo "</table>";
}
// versturen naar
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "ingevuld mailform. vanaf website";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= $_POST['msggs'] . "\n\n";
$inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n\n";
$inhoud_mail .= "===================================================\n\n";
$headers = "From: " . $_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
mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
echo "<h1>Je e-mail is verstuurd </h1>";
echo "<p>Bedankt voor het versturen van je e-mail. Alle e-mail wordt zo snel mogelijk ";
echo "behandeld.</p>";
}
?>
session_start(); // zorg ervoor dat session_start ALTIJD bovenaan ALLES van je pagina staat, anders werkt het niet!
// 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;
}
// 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($_POST['naam']) || !empty($naam_fout) || empty($_POST['mail']) || !empty($email_fout) || empty($_POST['onderwerp']) || empty($_POST['msggs']))) || $_SERVER['REQUEST_METHOD'] == 'GET')
{
if ($_SERVER['REQUEST_METHOD'] == 'POST')
{
if (!empty($naam_fout))
echo 'U bent uw naam vergeten in te vullen.';
elseif (!empty($email_fout))
echo '<p>Uw e-mailadres is niet juist.</p>';
else
echo '<p>U bent uw naam, e-mail adres, onderwerp of bericht vergeten in te vullen</p>';
}
// form + tabel
echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">";
echo "<form method='post' action='" . $_SERVER['PHP_SELF'] . "'>";
// naam
echo "<tr><td>Naam:</td></tr>";
echo "<tr><td>Naam: <input type=\"text\" name=\"naam\" value=\"" . $_POST['naam'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
echo "<tr><td>E-mail adres:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"mail\" value=\"" . $_POST['mail'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
echo "<tr><td>Onderwerp:</td></tr>";
echo "<tr><td><input type=\"text\" name=\"onderwerp\" value=\"" . $_POST['onderwerp'] . "\"></td></tr>";
// space
echo "<tr><td> </td></tr>";
echo "<tr><td>Bericht:</td></tr>";
echo "<tr><td><TEXTAREA name=\"msggs\" ROWS=\"6\" COLS=\"45\">" . htmlentities($_POST['msggs']) . "</TEXTAREA></td></tr>";
// space
echo "<tr><td> </td></tr>";
// button
echo "<tr><td> </td></tr>";
echo "<tr><td><input type=\"submit\" name=\"submit\" value=\"Versturen\"></td></tr>";
// sluit form + tabel
echo "</form>";
echo "</table>";
}
// versturen naar
else
{
// set datum
$datum = date("d.m.Y H:i");
// set ip
$ip = $_SERVER['REMOTE_ADDR'];
$inhoud_mail = "===================================================\n";
$inhoud_mail .= "ingevuld mailform. vanaf website";
$inhoud_mail .= "===================================================\n\n";
$inhoud_mail .= "Naam: " . $_POST['naam'] . "\n";
$inhoud_mail .= "E-mail adres: " . $_POST['mail'] . "\n";
$inhoud_mail .= "Bericht:\n";
$inhoud_mail .= $_POST['msggs'] . "\n\n";
$inhoud_mail .= "Verstuurd op $datum via het ip " . $ip . "\n\n";
$inhoud_mail .= "===================================================\n\n";
$headers = "From: " . $_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
mail($mail_ontv, $_POST['onderwerp'], $inhoud_mail, $headers);
echo "<h1>Je e-mail is verstuurd </h1>";
echo "<p>Bedankt voor het versturen van je e-mail. Alle e-mail wordt zo snel mogelijk ";
echo "behandeld.</p>";
}
?>
Want hij zegt dat hij $_POST['naam/../..'] niet kan vinden.
Dat is logisch, maar bestaat $_POST['naam'] wel?
En welke regel geeft de foutmelding aan?
Het beste is om bovenaan de code te testen of de $_POST variabelen beschikbaar zijn en zo niet, dan een default waarde meegeven.
Vervolgens gebruik je verder in je code de variabele $naam i.p.v. $_POST['naam'].
Gewijzigd op 12/06/2015 23:30:13 door Pipo Clown
Of overschrijf $_POST['naam'] gewoon ;)
Eddy E op 12/06/2015 22:46:10:
Toevoeging op 13/06/2015 20:34:46:
De invoeging van de code op regel drie
Geeft helaas op website pagina de volgende extra melding boven de vier notices undefined index: ..
array
(
)
De foutmelding wordt gegeven op regel 37, 44, 51 en 58
Toevoeging op 13/06/2015 20:40:48:
Pipo Clown op 12/06/2015 23:28:30:
De eerste maal dat je een pagina oproept is deze nog niet gesubmit en zijn er dus ook nog geen $_POST variabelen beschikbaar.
Het beste is om bovenaan de code te testen of de $_POST variabelen beschikbaar zijn en zo niet, dan een default waarde meegeven.
Vervolgens gebruik je verder in je code de variabele $naam i.p.v. $_POST['naam'].
Het beste is om bovenaan de code te testen of de $_POST variabelen beschikbaar zijn en zo niet, dan een default waarde meegeven.
Vervolgens gebruik je verder in je code de variabele $naam i.p.v. $_POST['naam'].
Toevoeging op 13/06/2015 20:41:13:
Pipo Clown op 12/06/2015 23:28:30:
De eerste maal dat je een pagina oproept is deze nog niet gesubmit en zijn er dus ook nog geen $_POST variabelen beschikbaar.
Het beste is om bovenaan de code te testen of de $_POST variabelen beschikbaar zijn en zo niet, dan een default waarde meegeven.
Vervolgens gebruik je verder in je code de variabele $naam i.p.v. $_POST['naam'].
Het beste is om bovenaan de code te testen of de $_POST variabelen beschikbaar zijn en zo niet, dan een default waarde meegeven.
Vervolgens gebruik je verder in je code de variabele $naam i.p.v. $_POST['naam'].
Toevoeging op 13/06/2015 20:45:18:
="Pipo Clown op 12/06/2015 23:28:30"]
De eerste maal dat je een pagina oproept is deze nog niet gesubmit en zijn er dus ook nog geen $_POST variabelen beschikbaar.
Het beste is om bovenaan de code te testen of de $_POST variabelen beschikbaar zijn en zo niet, dan een default waarde meegeven.
Quote:
Vervolgens gebruik je verder in je code de variabele $naam i.p.v. $_POST['naam'].
Hoi Pipo de Clown, dank je voor het antwoord nu begreep ik de isset opmerking direct.
Dit heeft de oplossing gegeven, had hier al veel over gelezen en geprobeerd maar kwam er niet uit hoe dit toe te passen. Notices zijn nu weg, nog ff testen of de mail aankomt. Maar dat zal denk ik wel.
Toevoeging op 13/06/2015 20:54:03:
Pipo de Clow test is uitgevoerd het formulier is zonder problemen verzonden hopen dat het is aangekomen, maar ik denk het wel.
Gelukkig heb hier al een week meerdere tutorials op nageslagen. Begrijp wel als je nog niet gesubmit hebt de variabelen beschikbaar bleven.
Nogmaals reuze bedankt. (: