probeem in fout afhandeling

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Niek Kasius

Niek Kasius

10/04/2014 16:18:47
Quote Anchor link
Ik heb geprobeerd een fout afhandeling in te bouwen in mijn toevoegen script, maare ik krijg het niet voor mekaar.
ik heb regel 122 echo'<H1>Error!!!!!</H!><H4>Je moet wel alle velden invullen.</H4> al door dit: if (empty($error))
Maar dan krijg ik foutmeldingen dat er ergens een } niet goed staat of een else er niet hoort te staan en zo iets dergelijks.
Ik krijg het niet werkend.
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
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
<?php
ini_set('display_errors',1); // 1 == aan , 0 == uit
    error_reporting(E_ALL | E_STRICT);

include("../includes/config.php");

$error = array();

if($_SERVER['REQUEST_METHOD'] == 'POST')
{

    if(empty($_POST['afbeelding'])){
       $error ='vul de een img in';
    }
else{
       $afbeelding = $_POST['afbeelding'];
    }

    if(empty($_POST['voornaam'])){
       $error ='vul de voornaamnaam in';
    }
else{
       $voornaam = $_POST['voornaam'];
    }

    if(empty($_POST['achternaam'])){
       $error ='vul de achternaam in';
    }
else{
       $achternaam = $_POST['achternaam'];
    }

    if(empty($_POST['gebdatum'])){
       $error ='vul de geboorte datum in';
    }
else{
       $gebdatum = $_POST['gebdatum'];
    }

    if(empty($_POST['straat'])){
       $error ='vul de straatnaam in';
    }
else{
       $straat = $_POST['straat'];
    }
    
    if(empty($_POST['huisnr'])){
       $error ='vul het huisnummer in';
    }
else{
       $huisnr = $_POST['huisnr'];
    }

    if(empty($_POST['postcode'])){
       $error ='vul de postcode in';
    }
else{
       $postcode = $_POST['postcode'];
    }

    if(empty($_POST['plaats'])){
       $error ='vul de plaatsnaam in';
    }
else{
       $plaats = $_POST['plaats'];
    }

    if(empty($_POST['telefoon'])){
       $error ='vul het telefoonnummer in of een paar nullen';
    }
else{
       $telefoon = $_POST['telefoon'];
    }

    if (empty($_POST['email'])) {
            $error = 'vul je E-mailadres';
        }
else{
           $email = $_POST['email'];
    }

    if(empty($_POST['club'])){
       $error ='vul de vereniging in';
    }
else{
       $club = $_POST['club'];
    }

    if(empty($_POST['caramboles'])){
       $error ='vul het aantal caramboles in';
    }
else{
       $caramboles = $_POST['caramboles'];
    }

    if(empty($_POST['moyenne'])){
       $error ='vul het moyenne';
    }
else{
       $moyenne = $_POST['moyenne'];
    }

    if(empty($_POST['hoogste'])){
       $error ='vul de hoogste serie in';
    }
else{
       $hoogste = $_POST['hoogste'];
    }

    if (empty($error))
    {


mysqli_query($con,"INSERT INTO spelers (id,
                                           afbeelding,
                       voornaam,
                       achternaam,
                       gebdatum,
                       straat,
                       huisnr,
                       postcode,
                       plaats,
                       telefoon,
                       email,
                       club,
                       caramboles,
                       moyenne,
                       hoogste
                    )
                                       VALUES ('',
                                               '"
.mysqli_real_escape_string($con,$_POST['afbeelding'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['voornaam'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['achternaam'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['gebdatum'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['straat'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['huisnr'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['postcode'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['plaats'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['telefoon'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['email'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['club'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['caramboles'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['moyenne'])."',
                           '"
.mysqli_real_escape_string($con,$_POST['hoogste'])."'
                         )
      "
);
 
             echo'<br /><h4>De speler is succesvol toegevoegd, Je word nu terug gestuurd</h4>
                    <meta http-equiv="refresh" content="2; URL=index.php">'
;
    }

    else{
        echo'<H1>Error!!!!!</H!><H4>Je moet wel alle velden invullen.</H4>';
    }
}
else{
?>

<br />
<center>
<table width="410px" border="1" cellspacing="2" cellpadding="2">
<form name="form" method="post" action="">
    <tr>
      <td align="left">Foto</td><td align="left"><b><input type="text" size="34" maxlength="100" name="afbeelding" value="&lt;img src&#61;&quot;&quot;&gt;"></b></td>
    </tr>
    <tr>
      <td align="left">Voornaam</td><td align="left"><input type="text" size="34" maxlength="40" name="voornaam"></td>
    </tr>
    <tr>
      <td align="left">Achternaam</td><td align="left"><input type="text" size="34" maxlength="40" name="achternaam"></td>
    </tr>
    <tr>
      <td align="left">Geboorte datum</td><td align="left"><input type="text" size="34" maxlength="20" name="gebdatum"></td>
    </tr>    
    <tr>
      <td align="left">Straat</td><td align="left"><input type="text" size="34" maxlength="40" name="straat"></td>
    </tr>
    <tr>
      <td align="left">Huisnummer</td><td align="left"><input type="text" size="34" maxlength="10" name="huisnr"></td>
    </tr>
    <tr>
      <td align="left">Postcode</td><td align="left"><input type="text" size="34" maxlength="10" name="postcode"></td>
    </tr>
    <tr>
      <td align="left">Plaats</td><td align="left"><input type="text" size="34" maxlength="40" name="plaats"></td>
    </tr>
    <tr>
      <td align="left">Telefoon</td><td align="left"><input type="text" size="34" maxlength="15" name="telefoon"></td>
    </tr>
    <tr>
      <td align="left">E-mailadres</td><td align="left"><input type="text" size="34" maxlength="50" name="email"></td>
    </tr>
    <tr>
      <td align="left">Vereniging</td><td align="left"><input type="text" size="34" maxlength="40" name="club"></td>
    </tr>
    <tr>
      <td align="left">Caramboles</td><td align="left"><input type="text" size="34" maxlength="10" name="caramboles"></td>
    </tr>
    <tr>
      <td align="left">Moyenne</td><td align="left"><input type="text" size="34" maxlength="10" name="moyenne"></td>
    </tr>
    <tr>
      <td align="left">Hoogste serie</td><td align="left"><input type="text" size="34" maxlength="30" name="hoogste"></td>
    </tr>
    <td colspan="2" align="left"><input type="submit" name="submit" value="Posten">&nbsp;&nbsp;
                                 <input type="reset" name="Reset" value="Resetten"></td>
 </tr>
</form>
</table>
<?php
}
mysqli_close($con);
?>

</div>
</div>
<div id="footer">
<a href="index.php">Terug</a>
</div>
Gewijzigd op 10/04/2014 16:23:44 door Niek Kasius
 
PHP hulp

PHP hulp

18/04/2024 14:40:39
 
- Ariën  -
Beheerder

- Ariën -

10/04/2014 16:25:57
Quote Anchor link
if (count($error)==0) {

Dat moet beter helpen. Want het blijft immers een array zonder waardes (de errors)....
 
- SanThe -

- SanThe -

10/04/2014 16:40:54
Quote Anchor link
Bij het vullen wordt $error een string.
 
- Ariën  -
Beheerder

- Ariën -

10/04/2014 17:14:54
Quote Anchor link
Dus maak er $error[] van.
 
Niek Kasius

Niek Kasius

11/04/2014 16:48:13
Quote Anchor link
probleem is opgelost! heb dit gevonden en dat werkt.
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
63
64
65
66
67
68
69
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
  {
    $aFouten = array();
    if($_POST['afbeelding'] == '')
      {
        $aFouten[] = 'Je hebt geen foto ingevuld';
      }
    if($_POST['voornaam'] == '')
      {
        $aFouten[] = 'Je hebt geen voornaam ingevuld';
      }
    if($_POST['achternaam'] == '')
      {
        $aFouten[] = 'Je hebt geen achternaam ingevuld';
      }
         if($_POST['gebdatum'] == '')
      {
        $aFouten[] = 'Je hebt geen geboorte datum ingevuld';
      }
          if($_POST['straat'] == '')
      {
        $aFouten[] = 'Je hebt geen straatnaam ingevuld';
      }
          if($_POST['huisnr'] == '')
      {
        $aFouten[] = 'Je hebt geen huisnummer ingevuld';
      }
          if($_POST['postcode'] == '')
      {
        $aFouten[] = 'Je hebt geen postcode ingevuld';
      }
          if($_POST['plaats'] == '')
      {
        $aFouten[] = 'Je hebt geen plaatsnaam ingevuld';
      }
          if($_POST['email'] == '')
      {
        $aFouten[] = 'Je hebt geen E-mailadres ingevuld';
      }
          if($_POST['club'] == '')
      {
        $aFouten[] = 'Je hebt geen clubnaam ingevuld';
      }
          if($_POST['caramboles'] == '')
      {
        $aFouten[] = 'Je hebt het aantal caramboles niet ingevuld';
      }
          if($_POST['moyenne'] == '')
      {
        $aFouten[] = 'Je hebt het moyenne niet ingevuld';
      }
          if($_POST['hoogste'] == '')
      {
        $aFouten[] = 'Je hebt de hoogste serie niet ingevuld';
      }
      
        if(count($aFouten) != 0)
          {
            echo '<table align="center" width="340px"><tr><td align="left"><table border="0" width="100%"><tr><td><b>De volgende fouten zijn opgetreden:</b></td></tr><tr><td>';
            for($Fi = 0; $Fi < count($aFouten); $Fi++)
              {
                echo $aFouten[$Fi].'</td></tr><tr><td>';
              }
            echo '<b>Klik <a href="javascript:history.go(-1);"> <u>hier</u></a> om terug te keren</b></td></tr><tr><table></td></tr></table>';
          }
        else
          {
        echo'<br /><h4>De speler is succesvol toegevoegd, Je word nu terug gestuurd</h4>
            <meta http-equiv="refresh" content="2; URL=index.php">';

Ik neem aan dat dit niet helpt tegen mysql injectie.
Of toch wel?
ik weet het niet
En het controleert niet of een emailadres correct is, maar dat hoeft eigenlijk ook niet, want het is toch alleen maar voor de Admin beschikbaar.
Gewijzigd op 11/04/2014 16:53:58 door Niek Kasius
 
- Ariën  -
Beheerder

- Ariën -

11/04/2014 17:05:32
Quote Anchor link
Voor beveiliging tegen SQL-injection is het raadzaam om mysql(i)_real_escape_string() te gebruiken op $_GET, $_POST en $_COOKIE variabelen die je in je query gebruikt. Of kijk naar 'prepared statements'

let er ook op dat je pagina niet zal valideren, omdat een metatag in de <head>-sectie hoort.
 
Niek Kasius

Niek Kasius

12/04/2014 04:12:44
Quote Anchor link
dus ik kan niet automatisch door sturen en moet het een "a href" worden.
 
- Ariën  -
Beheerder

- Ariën -

12/04/2014 10:30:35
Quote Anchor link
Tuurlijk kan het wel, je zult dan met: header('location:site.php'); de gebruiker moeten doorsturen. Let erop dat er geen HTML of witregels voor staan.
 
Niek Kasius

Niek Kasius

16/04/2014 15:15:06
Quote Anchor link
Aar bedankt
ik heb dit gedaan. header("Refresh: 2; URL=index.php");
en dat werkt.

Ik heb nog een vraag, en dat is het volgende;
Ik wil controleren of het emailadres wel een bestaand adres is.
ik heb dit al geprobeerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
function validEmail( $email ){
    return filter_var( $email, FILTER_VALIDATE_EMAIL );
}

?>


en dit:

<?php
function is_email($email) {
  return (bool)preg_match(';^([a-z0-9-_]+)(.[a-z0-9-_]+)*@([a-z0-9-]+)(.[a-z0-9-]+)*.[a-z]{2,4}$;i', $email);
}

?>

en dat zal ook wel werken op de een of andere manier, maar ik weet niet hoe en waar te plaatsen.
 
- Pepijn  -

- Pepijn -

16/04/2014 15:18:17
Quote Anchor link
Ik zou je script ook wat overzichtelijker maken,"
$aFouten[] = 'Je hebt geen plaatsnaam ingevuld';
}
if($_POST['email'] == '')" kan je beter in arrays plaatsen
 
Niek Kasius

Niek Kasius

19/04/2014 19:35:38
Quote Anchor link
pepijn---
Iedere plaats heeft toch een naam, je woont toch in Lutjebroek en niet in plaats.
Dus moet je een plaatsnaam invullen.

Ik heb het een en ander veranderd met behulp van een script van -Shan The- zonder dat die het wist, dat ergen staat op een site van Wikibooks of zo iets dergelijks.
Ik moet alleen nog iets vinden dat ook html, http,url en dergelijken tegen houd, Want nu houd die alleen <a href=""> tegen.
En een woordenfilter moet er nog bij.
Ik heb nu dit:
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
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
<?php
if($_SERVER['REQUEST_METHOD'] == 'POST' && !empty($_POST))
  {

    $aFouten = array();


   if($_POST['naam'] == '')
     {

     $aFouten[] = 'Je hebt geen naam ingevuld';
     }

    function
checkbericht($bericht)
    {

// Kijk of het bericht spam bevat, zo nee false
    if (preg_match('/<a[\s]+[^>]*?href[\s]?=[\s\""\']+(.*?)[\""\']+.*? >([^<]+|.*?)?<\/a>/', $bericht))
    {

        return false;
    }

    return true;
}

// Kijk of de POST waarde bestaat
$bericht = (isset($_POST['bericht'])) ? $_POST['bericht'] : '';
// Het aanroepen van de fundtie
    if(!checkbericht($bericht))
    {

    if(count($aFouten) != 0)
      {
      }    
    function
checkemail($email)
      {

    // Kijk of er een @ in zit, zo nee false
    if(!stristr($email, '@'))
      {

      return false;
      }

    $email_split = explode("@", $email);
    // Er mag slecht één @ inzitten dus het array moet 2 records tellen
    if(count($email_split) != 2)
      {

      return false;
      }

    $email_user = $email_split[0];
    $email_host = $email_split[1];
    // Kijk of er MX-servers zijn, zo nee false
    if(!getmxrr($email_host, $var))
      {

       return false;
      }

    // Kijk of het usergedeelte okee is, zo nee false
    if(!preg_match("/^[0-9a-z]([-_.~]?[0-9a-z])*$/i", $email_user))
      {

      return false;
      }

      return true;
     }

// Kijk of de POST waarde bestaat
$email = (isset($_POST['email'])) ? $_POST['email'] : '';
{

?>

<br />
<br />
<table align="center" width="300px" border="1">
  <tr>
    <td align="left">
      <table border="0" width="100%" cellpadding="3" cellspacing="2">
        <tr>
          <td colspan="2">
            <b>
              De volgende fouten zijn opgetreden:
            </b>
          </td>
        </tr>
          <td><?php
            }        
            if(!checkbericht($bericht))
            {

            echo 'Je bericht bevat spam'; header("Refresh: 2");
            }

            ?>
</td>
        </tr>
        <tr>
          <td><?php
            for($Fi = 0; $Fi < count($aFouten); $Fi++)
            {

            echo $aFouten[$Fi].'
          </td>
        </tr>
        <tr>
          <td>'
;
            }
        
            if(!checkemail($email))
            {

            echo 'Je emailadres is niet geldig';
        }

         ?>
</td>
        </tr>
        <tr>
      <table>
    </td>
  </tr>
</table>
<?php
header("Refresh: 5");
        }

        else
       {
        echo'<br /><h4>Je bericht is succesvol toegevoegd. Je word nu terug gestuurd</h4>'; header("Refresh: 2");
?>
Gewijzigd op 19/04/2014 20:27:11 door - Ariën -
 
Donny Wie weet

Donny Wie weet

19/04/2014 19:45:06
Quote Anchor link
Niek Kasius op 16/04/2014 15:15:06:
Ik heb nog een vraag, en dat is het volgende;
Ik wil controleren of het emailadres wel een bestaand adres is.
ik heb dit al geprobeerd:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
function validEmail( $email ){
    return filter_var( $email, FILTER_VALIDATE_EMAIL );
}

?>



Je kan ook doen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
if(filter_var($_POST['email'],FILTER_VALIDATE_EMAIL)){
echo 'Dit is een email';
}
else {
echo 'Geef een geldig email adres op!';
}

?>


Als je de functie voor het email valideren in een functie wil zetten (filter_validate() is al een functie namelijk) dan kan je deze met true or false terug geven.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php

function is_email($email){
  if(filter_var($email, FILTER_VALIDATE_EMAIL)) return true;
}


//Functie aanroepen:
if(is_email($_POST['email']) == false)
echo 'Email is niet geldig!';
?>


Zelf vind ik het een beetje overbodig om een functie voor een bestaande functie aan te maken. Denk dat meerdere het daarmee eens zijn met me.



Om te kijken of het email adres ook daadwerkelijk bestaat is als ik het goed had niet mogelijk.
 
Niek Kasius

Niek Kasius

19/04/2014 20:07:56
Quote Anchor link
nee dat kan ook niet, Want dan zou je een lijst met alle E-mailadressen moeten hebben in je database, en dat is alleen al voor Nederlandse adressen bijna onmogelijk en die moet je dan ook nog eens dagelijks bijwerken.
Maar bij mij controleert die of het een naam is jan of piet en geen ddhfhrjkwek en of er een apestaartje achter de naam staat en of het een hostnaam is dus Hotmail en geen rrjfjrfru.nl
En als dat niet goed is krijg een fout melding en als het wel goed is hoef je geen melding te geven want die komt dan vanzelf terug in het resultaat
 
- Ariën  -
Beheerder

- Ariën -

19/04/2014 20:15:20
Quote Anchor link
Met http://nl3.php.net/manual/en/function.checkdnsrr.php kan je prima kijken of een domein bestaat.
 



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.