mysqli_real_escape_string gaat niet goed
Op aangeven van 'deskundigen' heb ik de input van mijn invulformulier afgevangen met een mysqli_real_escape_string. Het probleem was eerder dat een record niet werd opgeslagen door o.a. de aanwezigheid een een single-quote. Dat probleem is nu opgelost maar nu zie ik in de opgeslagen info drie keer een backslash verschijnen. Dat is natuurlijk niet de bedoeling.
Wellicht staat er ergens een instelling (nog) niet goed.
Mijn html-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
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
<form action="index.php?naamgegevens=samenvatting" method="POST">
<article class="kolom_links">
<table>
<tr>
<td><label>Geslacht: </label><sup>*</sup></td>
<td>
<?php
while($rowGeslacht = mysqli_fetch_array($cResultGeslacht)) {
?>
<input type="radio" name="geslacht" value="<?php echo $rowGeslacht['waarde'] ; ?>" /><span class="tekst"><?php echo $rowGeslacht['inhoud'] ; ?></span>
<?php } ?>
</td>
</tr>
<tr>
<td><label>Voorletter(s): </label><sup>*</sup></td>
<td><input id="verplicht" type="text" name="voorletters" class="upper" placeholder="Uw voorletters" required="" /></td>
</tr>
<tr>
<td><label>Evt. tussenvoeging:</label></td>
<td><input id="verplicht" type="text" name="tussenvoeg" placeholder="Eventuele tussenvoeging" /></td>
</tr>
<tr>
<td><label>Achternaam: </label><sup>*</sup></td>
<td><input id="verplicht" type="text" name="achternaam" placeholder="Uw familienaam" required="" /></td>
</tr>
</article>
</form>
<article class="kolom_links">
<table>
<tr>
<td><label>Geslacht: </label><sup>*</sup></td>
<td>
<?php
while($rowGeslacht = mysqli_fetch_array($cResultGeslacht)) {
?>
<input type="radio" name="geslacht" value="<?php echo $rowGeslacht['waarde'] ; ?>" /><span class="tekst"><?php echo $rowGeslacht['inhoud'] ; ?></span>
<?php } ?>
</td>
</tr>
<tr>
<td><label>Voorletter(s): </label><sup>*</sup></td>
<td><input id="verplicht" type="text" name="voorletters" class="upper" placeholder="Uw voorletters" required="" /></td>
</tr>
<tr>
<td><label>Evt. tussenvoeging:</label></td>
<td><input id="verplicht" type="text" name="tussenvoeg" placeholder="Eventuele tussenvoeging" /></td>
</tr>
<tr>
<td><label>Achternaam: </label><sup>*</sup></td>
<td><input id="verplicht" type="text" name="achternaam" placeholder="Uw familienaam" required="" /></td>
</tr>
</article>
</form>
De gebruikte php-code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
2
3
4
5
6
7
8
9
10
11
12
13
14
<?php
if($cAkkoord == "Ja" ) {
include "include/connectie.inc.php";
$_SESSION['voorletters'] = mysqli_real_escape_string($verbinding,$_POST['voorletters']);
$_SESSION['tussenvoeg'] = mysqli_real_escape_string($verbinding,$_POST['tussenvoeg']);
$_SESSION['achternaam'] = mysqli_real_escape_string($verbinding,$_POST['achternaam']);
$cClassHoogte = "hoogte500";
$lTest = 3;
} else {
$lTest = 1;
}
?>
if($cAkkoord == "Ja" ) {
include "include/connectie.inc.php";
$_SESSION['voorletters'] = mysqli_real_escape_string($verbinding,$_POST['voorletters']);
$_SESSION['tussenvoeg'] = mysqli_real_escape_string($verbinding,$_POST['tussenvoeg']);
$_SESSION['achternaam'] = mysqli_real_escape_string($verbinding,$_POST['achternaam']);
$cClassHoogte = "hoogte500";
$lTest = 3;
} else {
$lTest = 1;
}
?>
Er wordt nu getoond/opgeslagen: Geachte heer Van \\\'t Baasbank,
Gewijzigd op 26/08/2014 16:24:01 door George van Baasbank
Het zou makkelijker gaan als je gewoon class aanriep.
Code (php)
1
2
3
4
5
6
2
3
4
5
6
<?php
$db = new mysqli("localhost", "gebruiker", "wachtwoord", "database");
// En dan real_escape_string zo doen
$db->real_escape_string($var);
?>
$db = new mysqli("localhost", "gebruiker", "wachtwoord", "database");
// En dan real_escape_string zo doen
$db->real_escape_string($var);
?>
Post ook even foutmeldingen, dat zou namelijk makkelijker maken om je te helpen..
Gewijzigd op 26/08/2014 16:54:12 door Goto Learn
Ik denk eerder dat je dubbel escaped, bij het opslaan in de sessie én bij het opslaan in de db?