Geen foutmelding en geen data

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Daan s

Daan s

31/12/2012 15:02:49
Quote Anchor link
voor het ressetten van de desbetreffende account ben ik bezig met een controleer code met mail (deze komt nog), maar deze werkt op een of andere manier niet. Ook krijg ik geen fout melding

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
}
?>


Als ik de e-mail insla krijg ik de melding dat deze niet bestaat, wel deze dat wel dergelijk doet

Afbeelding

Ik weet niet of jullie heb probleem zien,



Alvast gelukkig nieuwjaar gewenst iedereen ;)
 
PHP hulp

PHP hulp

24/12/2024 15:16:53
 
Erwin H

Erwin H

31/12/2012 15:25:21
Quote Anchor link
je if..elseif..else klopt voor geen meter.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if($EMAIL == ""){
?>

Als er dus geen email is ingevuld, ga je proberen een email te versturen
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}elseif($num_rows==1){
?>

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
}else{
?>

En hier kom je dus uit als er een email is ingevuld.
 
Daan s

Daan s

31/12/2012 15:33:18
Quote Anchor link
Hoe zou ik hem dan verder moeten herschijven


Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
}
?>
 
Erwin H

Erwin H

31/12/2012 15:35:47
Quote Anchor link
Schrijf uit wat je wilt, gewoon in woorden, dan komt het vanzelf.

Dus:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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...
Gewijzigd op 31/12/2012 15:36:14 door Erwin H
 
Obelix Idefix

Obelix Idefix

31/12/2012 15:52:53
Quote Anchor link
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.
 
Daan s

Daan s

01/01/2013 15:04:28
Quote Anchor link
Zo beter?
Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>';
}
?>
 
Erwin H

Erwin H

01/01/2013 15:26:56
Quote Anchor link
Als eerste kan je het natuurlijk zelf testen, ik neem aan dat je dat gedaan hebt.

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.
 
Daan s

Daan s

01/01/2013 15:36:08
Quote Anchor link
Het script is functioneel, maar ik had mn woord al klaar voordat ik het grootste gedeelte klaar had,
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)
PHP script in nieuw venster Selecteer het PHP script
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
<?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>&nbsp;</p>
<p>Met vriendelijke groet,</p>
<p>&nbsp;</p>
<p>Het $websitetitle team</p>
<p>&nbsp;</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
 
Erwin H

Erwin H

01/01/2013 15:57:30
Quote Anchor link
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 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)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
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
  }
}

?>

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
 
Daan s

Daan s

01/01/2013 16:14:44
Quote Anchor link
Ik probeer het, maar ik krijg een witte pagina

Code (php)
PHP script in nieuw venster Selecteer het PHP script
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
<?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';
    }
?>
 
Erwin H

Erwin H

01/01/2013 16:25:34
Quote Anchor link
Wanneer krijg je een witte pagina?

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.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
}elseif($num_rows==1){
    echo 'email verzondern';
    }
else{
        echo 'email bestaat niet';
    }

?>
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.