Ik ben bezig met het 'beveiligen' van een script door te zorgen dat sql injections niet meer mogelijk zijn. Op php.net staat een stukje code die hier voor zou moeten zorgen:
Zie: http://nl3.php.net/manual...ql-real-escape-string.php
Daar heb ik zelf het volgende van gemaakt:
Als ik vervolgens $id print, print hij dit:
Dus niet de inhoud 5, maar de variabele naam.
Ik kom er niet echt uit wat ik fout doe...
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
| <?php // Quote variable to make safe function quote_smart($value) { // Stripslashes if (get_magic_quotes_gpc()) { $value = stripslashes($value); } // Quote if not integer if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } // Connect $link = mysql_connect('mysql_host', 'mysql_user', 'mysql_password') OR die(mysql_error()); // Make a safe query $query = sprintf("SELECT * FROM users WHERE user=%s AND password=%s", quote_smart($_POST['username']), quote_smart($_POST['password'])); mysql_query($query); ?> |
Zie: http://nl3.php.net/manual...ql-real-escape-string.php
Daar heb ik zelf het volgende van gemaakt:
PHP:
1
2
3
4
5
6
7
8
9
10
11
| function prvinj($value) { if (get_magic_quotes_gpc()) { $value = stripslashes($value); } if (!is_numeric($value)) { $value = "'" . mysql_real_escape_string($value) . "'"; } return $value; } $id = 5; $id = prvinj($id); |
Als ik vervolgens $id print, print hij dit:
code:
1
| '$id' |
Dus niet de inhoud 5, maar de variabele naam.
Ik kom er niet echt uit wat ik fout doe...