De best/veiligste manier om verbinding te maken met database e.d.
Omdat ik op andere berichten van mij commentaar krijg dar ik foutafhandeling van query's niet goed doe, ben ik benieuwd hoe het wél moet... Ik heb de tutorial gelezen en weet nu groten deels hoe het moet. Maar daar wordt niet verteld hoe je verbinding maakt, maakt dat nog iets uit qua veiligheid???
manier die ik gebruik:
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
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
<?php
$con = mysql_connect("localhost","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("bestel", $con);
$result = mysql_query("SELECT * FROM klantengroep
WHERE code='$code'");
$row = mysql_fetch_array($result);
if(!empty($_POST['code']) && !empty($_POST['percentage'])){
mysql_query("UPDATE klantengroep SET korting = '$_POST[percentage]'
WHERE code = '$_POST' AND korting = '$row[korting]'");}
if(!empty($_POST['nieuwecode']) && !empty($_POST['nieuwepercentage'])){
mysql_query("INSERT INTO klantengroep (code, korting)
VALUES ('$_POST[nieuwecode]', '$_POST[nieuwepercentage]')");}
mysql_close($con);
header('Refresh: 3; url=settings.php');
echo 'De settings zijn aangepast.';
?>
$con = mysql_connect("localhost","***","***");
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
mysql_select_db("bestel", $con);
$result = mysql_query("SELECT * FROM klantengroep
WHERE code='$code'");
$row = mysql_fetch_array($result);
if(!empty($_POST['code']) && !empty($_POST['percentage'])){
mysql_query("UPDATE klantengroep SET korting = '$_POST[percentage]'
WHERE code = '$_POST' AND korting = '$row[korting]'");}
if(!empty($_POST['nieuwecode']) && !empty($_POST['nieuwepercentage'])){
mysql_query("INSERT INTO klantengroep (code, korting)
VALUES ('$_POST[nieuwecode]', '$_POST[nieuwepercentage]')");}
mysql_close($con);
header('Refresh: 3; url=settings.php');
echo 'De settings zijn aangepast.';
?>
code van tutorial:
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
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
<?php
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
# zet dit waar je query moet
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql = "SELECT naam
FROM leden
WHERE id='".mysql_real_escape_string($_GET['id'])."'
";
# Check of query is gelukt
if (($result = mysql_query($sql)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql,mysql_error(),'Fout met database.');
}
else
{
# De query is gelukt, we kijken of er een rij is die dit id heeft.
if(mysql_num_rows($result) == 0)
{
# Er is geen lid met dit id!
echo 'Er is geen lid met dit id!';
}
else
{
#we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
$row = mysql_fetch_assoc($result);
echo $_row['naam'];
}
}
?>
# We zetten dit volledig bovenaan
# errors weergeven
ini_set('display_errors',0); // 1 == aan , 0 == uit
error_reporting(E_ALL | E_STRICT);
# sql debug
define('DEBUG_MODE',false); // true == aan, false == uit
# functie voor sql debug
function showSQLError($sql,$error,$text='Error')
{
if (DEBUG_MODE)
{
return '<pre>Error: ' . $error . '<br />' . $sql . '</pre>';
}
else
{
return $text;
}
}
# zet dit waar je query moet
# de query | bij input: let op sql-injectie -> mysql_real_escape_string()
$sql = "SELECT naam
FROM leden
WHERE id='".mysql_real_escape_string($_GET['id'])."'
";
# Check of query is gelukt
if (($result = mysql_query($sql)) === false)
{
# als de query fout is -> foutafhandeling
echo showSQLError($sql,mysql_error(),'Fout met database.');
}
else
{
# De query is gelukt, we kijken of er een rij is die dit id heeft.
if(mysql_num_rows($result) == 0)
{
# Er is geen lid met dit id!
echo 'Er is geen lid met dit id!';
}
else
{
#we kunnen onze naam uit de database halen d.m.v. mysql_fetch_assoc
$row = mysql_fetch_assoc($result);
echo $_row['naam'];
}
}
?>
bedankt!
http://lmgtfy.com/?q=sql+injection
bij jouw manier: let op SQL-injection!!!!! Gewijzigd op 13/04/2011 20:57:52 door Kevin van Leeuwen
die daarin is niet mooi.
Toon nooit de php / sql fout aan de gebruiker.
Jou code is inderdaad een rommeltje. Wat je wel goed doet is kijken naar wat mysql_connect teruggeeft. Alleen die Toon nooit de php / sql fout aan de gebruiker.
- Bouw goede foutafhandeling in, dus ook voor select_db en query
- Fetch_array is nergens voor nodig, gebruik gewoon mysql_fetch_assoc
- * is een wildcard. Selecteer wat je wilt
- Variabelen moeten buiten quotes
- Let op SQL injection. Gebruik dus mysql_real_escape_string
- Om goede foutafhandeling in te bouwen kun je de query beter in een variabele stoppen, deze kan je dan echoën om te zien of daar de fout 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
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?php
// Mysql Connection
$connect = mysql_connect("localhost","root","password");
$select = mysql_select_db("database", $connect);
if (!$connect || !$select) {
echo '<b>Er kan momenteel geen verbinding worden gemaakt met de database. Er is al contact opgenomen met de webmaster.</b>';
mail('[email protected]', 'Mysql Error', 'Er kan momenteel geen verbinding worden gemaakt met de database.');
}
// SQL Function
function sql_query($query) {
$mysql = mysql_query($query);
if ($mysql) {
return $mysql;
} else {
echo '<b>Fout in de database bij het uitvoeren van een query!</b>';
mail('[email protected]', 'Mysql Error', 'Fout in de database bij het uitvoeren van: ' . $query . '');
}
}
?>
// Mysql Connection
$connect = mysql_connect("localhost","root","password");
$select = mysql_select_db("database", $connect);
if (!$connect || !$select) {
echo '<b>Er kan momenteel geen verbinding worden gemaakt met de database. Er is al contact opgenomen met de webmaster.</b>';
mail('[email protected]', 'Mysql Error', 'Er kan momenteel geen verbinding worden gemaakt met de database.');
}
// SQL Function
function sql_query($query) {
$mysql = mysql_query($query);
if ($mysql) {
return $mysql;
} else {
echo '<b>Fout in de database bij het uitvoeren van een query!</b>';
mail('[email protected]', 'Mysql Error', 'Fout in de database bij het uitvoeren van: ' . $query . '');
}
}
?>
Misschien heb je er wat aan ;)
Gewijzigd op 13/04/2011 23:21:37 door Sander de Vos