De best/veiligste manier om verbinding te maken met database e.d.

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Timo Kleinhout

Timo Kleinhout

13/04/2011 20:25:09
Quote Anchor link
Hallo,

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)
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
<?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.';

?>



code van tutorial:
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
<?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'];
    }
}

?>


bedankt!
 
PHP hulp

PHP hulp

23/04/2024 20:04:35
 
Kevin van Leeuwen

Kevin van Leeuwen

13/04/2011 20:56:47
Quote Anchor link
bij jouw manier: let op SQL-injection!!!!! http://lmgtfy.com/?q=sql+injection
Gewijzigd op 13/04/2011 20:57:52 door Kevin van Leeuwen
 

13/04/2011 21:34:49
Quote Anchor link
Jou code is inderdaad een rommeltje. Wat je wel goed doet is kijken naar wat mysql_connect teruggeeft. Alleen die die daarin is niet mooi.
Toon nooit de php / sql fout aan de gebruiker.
 
Wouter J

Wouter J

13/04/2011 23:14:40
Quote Anchor link
Nog wat puntjes:
- 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.
 
Sander de Vos

Sander de Vos

13/04/2011 23:21:11
Quote Anchor link
Zelf gebruik ik altijd 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
<?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 . '');
    }
}

?>


Misschien heb je er wat aan ;)
Gewijzigd op 13/04/2011 23:21:37 door Sander de Vos
 
Wouter J

Wouter J

14/04/2011 08:56:58
 



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.