Geen foutmelding en geen data
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
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
<?php
$EMAIL = $_POST["EMAIL"];
if($EMAIL == ""){
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
$link = mysql_connect("localhost", "admin", "***");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
}elseif($num_rows==1){
// Verzenden e-mail//
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
}else{
echo $EMAIL; /// Krijg wel een Email output
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
$EMAIL = $_POST["EMAIL"];
if($EMAIL == ""){
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
$link = mysql_connect("localhost", "admin", "***");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
}elseif($num_rows==1){
// Verzenden e-mail//
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
}else{
echo $EMAIL; /// Krijg wel een Email output
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
Als ik de e-mail insla krijg ik de melding dat deze niet bestaat, wel deze dat wel dergelijk doet
Ik weet niet of jullie heb probleem zien,
Alvast gelukkig nieuwjaar gewenst iedereen ;)
Als er dus geen email is ingevuld, ga je proberen een email te versturen
Anders, als er dus wel een email is, maar er niets gedaan wordt, kijk je of je 1 rij uit je database hebt gehaald. Wat dus niet gebeurt is, dus deze optie kom je nooit.
En hier kom je dus uit als er een email is ingevuld.
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
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
<?php
$EMAIL = $_POST["EMAIL"];
if($EMAIL == ""){
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
$link = mysql_connect("localhost", "admin", "**");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
}elseif($num_rows==1){
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
}else{
echo $EMAIL;
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
$EMAIL = $_POST["EMAIL"];
if($EMAIL == ""){
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
$link = mysql_connect("localhost", "admin", "**");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
}elseif($num_rows==1){
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
}else{
echo $EMAIL;
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
Dus:
Code (php)
1
2
3
4
2
3
4
- als er een emailadres is ingevuld, dan ....
- als er een record is, dan...
- als er geen record is, dan...
- anders, als er geen emailadres is ingevuld, dan...
- als er een record is, dan...
- als er geen record is, dan...
- anders, als er geen emailadres is ingevuld, dan...
Gewijzigd op 31/12/2012 15:36:14 door Erwin H
Daan tje op 31/12/2012 15:02:49:
Ik weet niet of jullie heb probleem zien,
Ja hoor. Zoals Erwin aangeeft: de opbouw van je script.
Doe er zelf wat moeite voor. Zo moeilijk is het niet, als je logisch nadenkt. Ook daarin geeft Erwin al een hele mooie voorzet.
Verder controleer je nergens of $_POST["EMAIL"] bestaat, maar maak je direct een nieuwe variabele aan.
mysql_real_escape_string gebruik je overigens in een query.
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
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
<?php
$EMAIL = $_POST["EMAIL"];
$link = mysql_connect("localhost", "admin", "***");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
if (empty($EMAIL)) {
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
}
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows==1){
// Verzenden e-mail/ gedeelte/
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
}else{
echo $EMAIL;
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
$EMAIL = $_POST["EMAIL"];
$link = mysql_connect("localhost", "admin", "***");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
if (empty($EMAIL)) {
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
}
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if($num_rows==1){
// Verzenden e-mail/ gedeelte/
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
}else{
echo $EMAIL;
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
De situatie waar Obelix al voor waarschuwde bestaat nog steeds. Wat als $_POST['EMAIL'] helemaal niet bestaat? Nu krijg je een lelijke foutmelding op regel 2, dat wil je niet.
Daarna vind ik het nog wel vreemd dat als er geen email opgegeven is, je toch gaat proberen om die query uit te voeren. Van te voren weet je dan al dat het geen resultaat gaat opleveren, dus waarom dan uitvoeren? Ook krijg je dan nog de melding 'Uw e-mail staat niet in ons systeem', terwijl er dus nog helemaal geen email is opgegeven.
Je krijgt nu geen melding 'Uw E-mail staat niet in ons systeem, als deze nog niet is opgeven, maar hoe kan ik er voor zorgen dat de querty pas uigevoerd wordt als het e-mail adres er in staat
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
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
<?php
$EMAIL = $_POST["EMAIL"];
$link = mysql_connect("localhost", "admin", "kdasdas***");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if (empty($EMAIL)) {
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
}elseif($num_rows==1){
// Verzenden e-mail/ gedeelte/
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
$to .= $EMAIL;
// subject
$subject = "Wachtwoord vergeten $websitetitle";
// message
$message = "
<p>Beste gebruikers </p>
<p>Je kunt een nieuw wachtwoord instellen door op de volgende link te klikken.</p>
<p> </p>
<p>Met vriendelijke groet,</p>
<p> </p>
<p>Het $websitetitle team</p>
<p> </p>
<p>$websiteurl<br />
$websiteslogan</p>
";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: Pass resset <[email protected]>" . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
}else{
echo $EMAIL;
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
$EMAIL = $_POST["EMAIL"];
$link = mysql_connect("localhost", "admin", "kdasdas***");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
if (empty($EMAIL)) {
print' <body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
}elseif($num_rows==1){
// Verzenden e-mail/ gedeelte/
echo '<p>Er is een e-mail verzonder voor verdere instructies</p>';
$to .= $EMAIL;
// subject
$subject = "Wachtwoord vergeten $websitetitle";
// message
$message = "
<p>Beste gebruikers </p>
<p>Je kunt een nieuw wachtwoord instellen door op de volgende link te klikken.</p>
<p> </p>
<p>Met vriendelijke groet,</p>
<p> </p>
<p>Het $websitetitle team</p>
<p> </p>
<p>$websiteurl<br />
$websiteslogan</p>
";
// To send HTML mail, the Content-type header must be set
$headers = 'MIME-Version: 1.0' . "\r\n";
$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
$headers .= "From: Pass resset <[email protected]>" . "\r\n";
// Mail it
mail($to, $subject, $message, $headers);
}else{
echo $EMAIL;
echo '<p>Uw e-mail staat niet in ons systeem</p>';
} ?>
Gewijzigd op 01/01/2013 15:38:02 door Daan s
isset().
Daarna gaat het er nog steeds om dat je gewoon duidelijk voor jezelf uitschrijft welke situaties je allemaal hebt en onder welke voorwaarden je wat moet doen. Laat ik het iets verder voor je uitwerken:
Eerste aanroep van de pagina
Hier wil je alleen het form laten zien, er moet nog niets gedaan worden.
Je weet dat dit de situatie is als er geen post actie is (check je met $_SERVER['REQUEST_METHOD'])
Er is wel een post actie geweest en email is ingevuld
Hier moet je dus het email adres uitlezen, beveiligen en controleren. Als het email adres klopt stuur je de email, als het niet klopt geef je een melding
Er is wel een post actie geweest, maar geen emailadres opgegeven
Hier hoef je dus niets met het emailadres te doen, je hoeft alleen de melding te geven dat er een emailadres moet worden opgegeven.
In grote lijnen (functionaliteit mag je zelf verder uitwerken)
Verder wil je mogelijk ook nog het form tonen op het moment dat het email adres wel klopte. Ga dan dus niet op twee plekken in je script de html code plaatsen, maar zet dat in een functie zodat je alleen die functie op dat moment hoeft aan te roepen.
Ten eerste moet je het probleem opvangen dat Obelix al aangaf. Als je namelijk voor het eerst de pagina oproept en er geen post actie is geweest krijg je de foutmelding dat $_POST["EMAIL"] niet bestaat. Controleren of het bestaat kan op verschillende manieren, ik gebruik meestal de functie Daarna gaat het er nog steeds om dat je gewoon duidelijk voor jezelf uitschrijft welke situaties je allemaal hebt en onder welke voorwaarden je wat moet doen. Laat ik het iets verder voor je uitwerken:
Eerste aanroep van de pagina
Hier wil je alleen het form laten zien, er moet nog niets gedaan worden.
Je weet dat dit de situatie is als er geen post actie is (check je met $_SERVER['REQUEST_METHOD'])
Er is wel een post actie geweest en email is ingevuld
Hier moet je dus het email adres uitlezen, beveiligen en controleren. Als het email adres klopt stuur je de email, als het niet klopt geef je een melding
Er is wel een post actie geweest, maar geen emailadres opgegeven
Hier hoef je dus niets met het emailadres te doen, je hoeft alleen de melding te geven dat er een emailadres moet worden opgegeven.
In grote lijnen (functionaliteit mag je zelf verder uitwerken)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
<?php
if ( $_SERVER['REQUEST_METHOD'] != 'POST' ){
//geen post actie, dus laat alleen het form zien
} else {
if ( isset( $_POST['EMAIL'] ) && ( $_POST['EMAIL'] != '' ) ){
//email is opgegeven en niet leeg, kan je dus controleren tegen de gegevens in je database
//als het bestaat stuur je de mail, bestaat het niet dan geef je een melding.
} else {
//geen email opgegeven, laat dus een melding zien dat dit wel moet gebeuren
}
}
?>
if ( $_SERVER['REQUEST_METHOD'] != 'POST' ){
//geen post actie, dus laat alleen het form zien
} else {
if ( isset( $_POST['EMAIL'] ) && ( $_POST['EMAIL'] != '' ) ){
//email is opgegeven en niet leeg, kan je dus controleren tegen de gegevens in je database
//als het bestaat stuur je de mail, bestaat het niet dan geef je een melding.
} else {
//geen email opgegeven, laat dus een melding zien dat dit wel moet gebeuren
}
}
?>
Verder wil je mogelijk ook nog het form tonen op het moment dat het email adres wel klopte. Ga dan dus niet op twee plekken in je script de html code plaatsen, maar zet dat in een functie zodat je alleen die functie op dat moment hoeft aan te roepen.
Gewijzigd op 01/01/2013 15:58:30 door Erwin H
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
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
<?php
if ( $_SERVER['REQUEST_METHOD'] != 'POST' ){
print '<body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
} else {
if ( isset( $_POST['EMAIL'] ) && ( $_POST['EMAIL'] != '' ) ){
$link = mysql_connect("localhost", "admin", "**");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
}elseif($num_rows==1){
echo 'email verzondern';
}else{
echo 'email bestaat niet';
} ?>
if ( $_SERVER['REQUEST_METHOD'] != 'POST' ){
print '<body>
<form id="form1" name="form1" method="post" action="">
<p>
<label>Email
<input type="text" name="EMAIL" id="EMAIL" />
</label>
</p>
<p>
<input type="submit" name="button" id="button" value="Resset Wachtwoord" />
</p>
</form>
</body>
</html>';
} else {
if ( isset( $_POST['EMAIL'] ) && ( $_POST['EMAIL'] != '' ) ){
$link = mysql_connect("localhost", "admin", "**");
mysql_select_db("controle-online", $link) or die(mysql_error());
$EMAIL = stripslashes($EMAIL);
$EMAIL = mysql_real_escape_string($EMAIL);
$result = mysql_query("SELECT * FROM Gebruikers WHERE Email = '$EMAIL'", $link) or die(mysql_error());
$num_rows = mysql_num_rows($result);
}elseif($num_rows==1){
echo 'email verzondern';
}else{
echo 'email bestaat niet';
} ?>
Verder klopt deze constructie natuurlijk nog steeds niet. Deze elseif hoort bij 'if ( isset( $_POST['EMAIL'] ) && ( $_POST['EMAIL'] != '' ) ){'. Binnen die if ga je je database check uitvoeren, dan kan in je in de else natuurlijk nooit naar het aantal rijen kijken. Als je in die else terecht komt is die hele database check juist niet uitgevoerd! Wel ook nog zelf blijven nadenken svp.