[PHP] code opruimen / verbeteren

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ok ik ben een mega beginner met php, dus schrik niet van mijn code :D Wat ik met de volgende code doe is het sorteren van de uitkomst van de data uit een MySQL databeesje. Als de $order 'naam' is sorteerd hij alles op naam, dus: http://217.19.22.180/cds/index.php?order=naam. Doe ik naam2 dan doet hij het DESC.

Alleen volgens mij is het een mega omslachtige methode op deze manier. Maar ik wil dat als je op de pagina bent die oplopend gesorteerd is op naam dat als je op naam drukt dat hij dan aflopend sorteert(en omgekeerd ook). Heeft iemand een idee hoe ik dit ongeveer kan doen? Dus geen code ofzo, maar gewoon dat ik weer een beetje kan gaan prutsen en zorgen dat deze code iets kleiner wordt 8)

oops topic titel vergeten verder in te vullen 8)7

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
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
<?
include('../dbcon.inc.php');
mysql_select_db('meuk');

    if ($order == "") { $query = mysql_query('SELECT * FROM cds ORDER BY naam'); }

    elseif ($order == "nummer_cd")      { $query = mysql_query('SELECT * FROM cds ORDER BY nummer_cd'); }
    elseif ($order == "aantal_cds")     { $query = mysql_query('SELECT * FROM cds ORDER BY aantal_cds'); }
    elseif ($order == "type")       { $query = mysql_query('SELECT * FROM cds ORDER BY type'); }
    elseif ($order == "naam")       { $query = mysql_query('SELECT * FROM cds ORDER BY naam'); }
    elseif ($order == "nummer_cd2")     { $query = mysql_query('SELECT * FROM cds ORDER BY nummer_cd DESC'); }
    elseif ($order == "aantal_cds2")    { $query = mysql_query('SELECT * FROM cds ORDER BY aantal_cds DESC'); }
    elseif ($order == "type2")      { $query = mysql_query('SELECT * FROM cds ORDER BY type DESC'); }
    elseif ($order == "naam2")      { $query = mysql_query('SELECT * FROM cds ORDER BY naam DESC'); }
?>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>



<?
    if ($order == "naam") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam2">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    elseif ($order == "naam2") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    if ($order == "aantal_cds") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds2">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    elseif ($order == "aantal_cds2") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    if ($order == "type") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type2">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    elseif ($order == "type2") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    if ($order == "nummer_cd") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd2">Nummer cd:    </a></b></td>
"); }

    elseif ($order == "nummer_cd2") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd">Nummer cd: </a></b></td>
"); }

    if ($order == "") { echo
("
        <td><b><a href="$base/cds/index.php?order=naam2">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=aantal_cds2">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=type2">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php?order=nummer_cd2">Nummer cd:    </a></b></td>
"); }

?>  

</tr>

<?
 while ($row = mysql_fetch_array($query))
            
    {
        echo("  <tr>    ");
            echo("  <td>$row[naam]</td>         ");
            echo("  <td>$row[aantal_cds]</td>   ");
            echo("  <td>$row[type]</td>         ");
            echo("  <td>$row[nummer_cd]</td>    ");
        echo("  </tr>   ");     
    }
?>

</table>

[ Voor 84% gewijzigd door Y0ur1 op 16-11-2003 15:58 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Zoiets? :*)

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
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
    $sortBy = $_GET[sortBy];
    $sortMethod = $_GET[sortMethod];

    switch ($sortBy) {
        case nummer_cd:
        $sortBy = "nummer_cd";
        break;
        case aantal_cds:
        $sortBy = "aantal_cds";
        break;
        case type:
                    $sortBy = "type";
                    break;
        case naam:
                    $sortBy = "naam";
                    break;
        default:
        $sortBy =  NULL;
    }

    switch ($sortMethod) {
    
    case ASC:
        $sortMethod = "ASC";
        break;
        
    case DESC:
        $sortMethod = "DESC";
        break;
    
    default:
        $sortMethod = NULL;

    }
    if (isset($sortBy) && isset($sortMethod)) {
    $query = "SELECT * FROM `cds` ORDER BY `$sortBy` $sortMethod";
    } else {
    $query = "SELECT * FROM `cds`";
    }

    include('../dbcon.inc.php'); 
    mysql_select_db('meuk'); 
    $result = mysql_query ($query);

    if ($sortMethod == "ASC") {
    $sortMethod = "DESC";
    $sortText = "Sorteer aflopend";
    } else {
    $sortMethod = "ASC";
    $sortText = "Sorteer oplopend";
    }

    echo("
        <td><b><a href=\"$base/cds/index.php?orderBy=naam&sortMethod=$sortMethod\">Naam:</a></b></td> 
        <td><b><a href=\"$base/cds/index.php?orderBy=aantal_cds&sortMethod=$sortMethod\">Aantal cd's:</a></b></td> 
        <td><b><a href=\"$base/cds/index.php?orderBy=type&sortMethod=$sortMethod\">Type:</a></b></td> 
        <td><b><a href=\"$base/cds/index.php?orderBy=nummer_cd&sortMethod=$sortMethod\">Nummer cd:</a></b></td> 
    ");
    

while ($row = mysql_fetch_array($result)) 
             
    { 
        echo("    <tr>    "); 
            echo("    <td>$row[naam]</td>         "); 
            echo("    <td>$row[aantal_cds]</td>   "); 
            echo("    <td>$row[type]</td>         "); 
            echo("    <td>$row[nummer_cd]</td>    "); 
        echo("    </tr>   ");         
    }

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
oef dit gaat wel erg hard ;) Ik ga het effe bestuderen, het werkt namelijk nog niet.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
hij komt de eerste if niet door... hij doet nu altijd gewoon SELECT * FROM 'cds'

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
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
mysql_select_db('meuk');

$order = $_GET["order"] ? $_GET["order"] : "naam";
$ad = $_GET["ad"] ? $_GET["ad"] : "asc";

$query = mysql_query("SELECT * FROM cds ORDER BY $order $ad;");
?>

<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
<tr>

<?
$naampje = $order == "naam" ? "?order=naam&ad=desc" : "?order=naam";
$aantaltje = $order == "aantal_cds" ? "?order=aantal_cds&ad=desc" : "?order=aantal_cds";
$typetje = $order == "type" ? "?order=type&ad=desc" : "?order=type";
$nummertje = $order == "nummer_cd" ? "?order=nummer_cd&ad=desc" : "?order=nummer_cd";
echo
("
        <td><b><a href="$base/cds/index.php$naampje">Naam:</a></b></td>
        <td><b><a href="$base/cds/index.php$aantaltje">Aantal cd's:</a></b></td>
        <td><b><a href="$base/cds/index.php$typetje">Type:</a></b></td>
        <td><b><a href="$base/cds/index.php$nummertje">Nummer cd:    </a></b></td>
")
?>    

</tr>

<?
while ($row = mysql_fetch_array($query))
            
    {
        echo("    <tr>    ");
            echo("    <td>$row[naam]</td>         ");
            echo("    <td>$row[aantal_cds]</td>   ");
            echo("    <td>$row[type]</td>         ");
            echo("    <td>$row[nummer_cd]</td>    ");
        echo("    </tr>   ");        
    }
?>

</table>


[updated]
Dit lijkt me het makkelijkste..

[ Voor 168% gewijzigd door Grijze Vos op 16-11-2003 17:07 ]

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Grijze Vos schreef op 16 november 2003 @ 16:53:
phpcode
[updated]
Dit lijkt me het makkelijkste..
ok die werkt... maaar als ik op een link een paar keer klik dan doet hij het niet meer... want dan is hij al DESC geladen en dan kan ik niet meer terug klikken naar ASC, en daar gaat het mij om...

[ Voor 74% gewijzigd door Y0ur1 op 16-11-2003 17:12 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
ja, klopt idd.

PHP:
1
2
3
4
$naampje = $order == "naam" ? "?order=naam&ad=desc" : "?order=naam";
$aantaltje = $order == "aantal_cds" ? "?order=aantal_cds&ad=desc" : "?order=aantal_cds";
$typetje = $order == "type" ? "?order=type&ad=desc" : "?order=type";
$nummertje = $order == "nummer_cd" ? "?order=nummer_cd&ad=desc" : "?order=nummer_cd";


Dit moet nog wat veranderd worden, maar daar mag je eerst zelf mee aanklooien ;)

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Ok ik heb het nu gereduceerd tot het volgende, maaar het gedeelte war hij gaat kijken of het DESC is en dan ASC geeft als URL moet ook nog anders kunnen...

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
<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%"> 
<tr> 

<?
include('../dbcon.inc.php'); 
mysql_select_db('meuk'); 
?>

<?
if ($sortMethod == DESC) { echo(" <td><a href=\"test2.php?sortBy=naam&sortMethod=ASC\">Naam</a></td> ");}
    else { echo(" <td><a href=\"test2.php?sortBy=naam&sortMethod=DESC\">Naam</a></td> ");}

if ($sortMethod == DESC) { echo(" <td><a href=\"test2.php?sortBy=type&sortMethod=ASC\">Aantal cd's</a></td> ");}
    else { echo(" <td><a href=\"test2.php?sortBy=aantal_cds&sortMethod=DESC\">Aantal cd's</a></td> ");}

if ($sortMethod == DESC) { echo(" <td><a href=\"test2.php?sortBy=type&sortMethod=ASC\">Type</a></td> ");}
    else { echo(" <td><a href=\"test2.php?sortBy=type&sortMethod=DESC\">Type</a></td> ");}

if ($sortMethod == DESC) { echo(" <td><a href=\"test2.php?sortBy=nummer_cd&sortMethod=ASC\">Nummer cd</a></td> ");}
    else { echo(" <td><a href=\"test2.php?sortBy=nummer_cd&sortMethod=DESC\">Nummer cd</a></td> ");}
?>

<?
if (isset($sortBy) && isset($sortMethod)) {
    $query = "SELECT * FROM cds ORDER BY $sortBy $sortMethod"; 
        }else{ 
            echo ("jij bent een eihoofd"); }

$result = mysql_query($query);
     

while ($row = mysql_fetch_array($result)) 
              
    { 
        echo("    <tr>    "); 
            echo("    <td>$row[naam]</td>         "); 
            echo("    <td>$row[aantal_cds]</td>   "); 
            echo("    <td>$row[type]</td>         "); 
            echo("    <td>$row[nummer_cd]</td>    "); 
        echo("    </tr>   ");          
    }
?> 

</table> 

Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22:59

chem

Reist de wereld rond

Waarom zet je alles tussen haakjes bij echo :?
Je controleert niet wat voor waarden $sortBy $sortMethod hebben, en je gooit ze klakkeloos in een query naar de database (bad!)
Je echo't met if ($sortMethod == DESC) .. else ... 2x vrijwel hetzelfde. Met de trinairy operator kan dat mooier, en duidelijker:
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
include('../dbcon.inc.php');
mysql_select_db('meuk');

echo '<table border="1" cellpadding="0" cellspacing="0" style="border-collapse: collapse" bordercolor="#111111" width="100%">
        <tr>';
        
foreach(array('naam'=>'Naam', 'type' => 'Type', 'aantal_cds' => 'Aantal CDs', 'nummer_cd' => 'Nummer CD') as $column => $name)
    echo '<td><a href="test2.php?sortBy='.$column.'&sortMethod='.($sortMethod == 'DESC' ? 'ASC' : 'DESC').'">'.$name.':</a></td>';

if (isset($sortBy) && isset($sortMethod)) 
{
    $query = "SELECT * FROM cds ORDER BY $sortBy $sortMethod";
    $result = mysql_query($query); 
    while ($row = mysql_fetch_array($result))    
    {
        echo "    <tr>    ";
            echo "    <td>$row['naam']</td>         ";
            echo "    <td>$row['aantal_cds']</td>   ";
            echo "    <td>$row['type']</td>         ";
            echo "    <td>$row['nummer_cd']</td>    ";
        echo "    </tr>   ";          
    } 
}
else
{
    echo "<tr><td>jij bent een eihoofd</td></tr>"; 
} 

echo '</tr></table>';

[ Voor 3% gewijzigd door chem op 16-11-2003 18:38 ]

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
chem schreef op 16 november 2003 @ 18:37:
Waarom zet je alles tussen haakjes bij echo :?
Je controleert niet wat voor waarden $sortBy $sortMethod hebben, en je gooit ze klakkeloos in een query naar de database (bad!)
Je echo't met if ($sortMethod == DESC) .. else ... 2x vrijwel hetzelfde. Met de trinairy operator kan dat mooier, en duidelijker:
Oh sorry hoor, ik ben net begonnen met php dus zo goed kan ik het nog niet. Ik ga jouw code even bekijken want hij werkt nog niet.

[ Voor 90% gewijzigd door Y0ur1 op 16-11-2003 19:16 ]


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Doorgaans geven we hier oplossingen uit ons hoofd, dus kunnen er wel eens ; niet goed staan, of andere zaken. We testen onze gegeven oplossingen niet. Het is de bedoeling dat we jou een duwtje in de goeie richting geven, niet om je kant en klaar een antwoord te geven.

Tenminste, dat is mijn visie erover.

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Grijze Vos schreef op 16 november 2003 @ 19:01:
Doorgaans geven we hier oplossingen uit ons hoofd, dus kunnen er wel eens ; niet goed staan, of andere zaken. We testen onze gegeven oplossingen niet. Het is de bedoeling dat we jou een duwtje in de goeie richting geven, niet om je kant en klaar een antwoord te geven.

Tenminste, dat is mijn visie erover.
Ja ok maar aangezien ik nog nooit met zo'n array heb gewerkt ga ik het nu uitzoeken hoe het werkt. Maar de code die chem gaf werkt niet omdat waar $row[naam] eerst stond heeft bij $row['naam'] van gemaakt en dat werkt niet. Afgezien van dat werkt hij sowieso niet

[ Voor 8% gewijzigd door Y0ur1 op 16-11-2003 19:19 ]


Acties:
  • 0 Henk 'm!

  • chem
  • Registratie: Oktober 2000
  • Laatst online: 22:59

chem

Reist de wereld rond

als jij $row[naam] neerzet, dan is dat fout. Ik heb er ['naam'] van gemaakt, maar dat clasht nog met de echo; zet het tussen { }, of onderbreek de string.
Zo ook bij if if (.. == DESC), je moet DESC tussen ' zetten, anders vertraag je de parser enorm, en krijg je daarbij ws last van spontane errors.

Klaar voor een nieuwe uitdaging.


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
chem schreef op 16 november 2003 @ 19:22:
als jij $row[naam] neerzet, dan is dat fout. Ik heb er ['naam'] van gemaakt, maar dat clasht nog met de echo; zet het tussen { }, of onderbreek de string.
Zo ook bij if if (.. == DESC), je moet DESC tussen ' zetten, anders vertraag je de parser enorm, en krijg je daarbij ws last van spontane errors.
eh hoe onbreek ik een string? Of waar moet ik die { } precies zetten?

Acties:
  • 0 Henk 'm!

  • Brakkie
  • Registratie: Maart 2001
  • Niet online

Brakkie

blaat

PHP:
1
$string = $row['waa']." meukee! bla bla bla ".$row['waa'];


http://nl.php.net/manual/nl/language.operators.string.php

[ Voor 53% gewijzigd door Brakkie op 16-11-2003 19:49 ]

Systeem | Strava


Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
Brakkie schreef op 16 november 2003 @ 19:49:
PHP:
1
$string = $row['waa']." meukee! bla bla bla ".$row['waa'];


http://nl.php.net/manual/nl/language.operators.string.php
dus zo
code:
1
2
3
4
5
6
7
8
    { 
        echo('    <tr>    '); 
            echo "<td>" .$row['naam'].          "</td>"; 
            echo "<td>" .$row['aantal_cds'].    "</td>"; 
            echo "<td>" .$row['type'].          "</td>"; 
            echo "<td>" .$row['nummer_cd'].     "</td>"; 
        echo('    </tr>   ');           
    }

[ Voor 26% gewijzigd door Y0ur1 op 16-11-2003 20:02 ]


Acties:
  • 0 Henk 'm!

  • Stilgar
  • Registratie: Maart 2002
  • Niet online
Grijze Vos schreef op 16 november 2003 @ 16:53:
PHP:
1
2
3
4
$order = $_GET["order"] ? $_GET["order"] : "naam";
$ad = $_GET["ad"] ? $_GET["ad"] : "asc";

$query = mysql_query("SELECT * FROM cds ORDER BY $order $ad;");
Dit lijkt me niet veilig. Je gebruikt hier zonder controle de input in een SQL query, en daardoor kunnen mensen gebruik maken van SQL injection.

Wat als iemand de pagina bijvoorbeeld als volgt opvraagt?

http://server/script.php?order=naam;DELETE FROM &ad=cds;

Je zal dus wel moeten kijken of de opgegeven waarden voor "order" en "ad" wel overeenkomen met een geldige kolomnaam. Bijvoorbeeld met een case statement.

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:51
Geen kant en klare code voor je maar misschien is het een idee om gewoon alle velden in een array te zetten? Dan kun je met in_array kijken of het een geldige waarde is, en kun je ook eenvoudiger aanpassingen doen.

Acties:
  • 0 Henk 'm!

  • Tux
  • Registratie: Augustus 2001
  • Laatst online: 21:53

Tux

PHP:
1
2
$order = $_GET["order"] ? mysql_escape_string ($_GET["order"]) : "naam";
$ad = $_GET["ad"] ? mysql_escape_string ($_GET["ad"]) : "asc";


Misschien is zoiets wel handig :P

The NS has launched a new space transportation service, using German trains which were upgraded into spaceships.


Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
Ik haal mijn SQL door een eigengeschreven functie heen, die dat al redelijk goed controleert, dus vandaar dat ik het er niet ingooi.

Voor een basic site lijkt me dit soort beveiliging nog niet echt aan de orde, tbh, als je net met PHP bezig bent...

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:51
Toch lijkt het me wel heel fijn dat de ts probeerd zijn beveiliging zo goed mogelijk te maken. Overigens lijkt met mij verstandig dat je gebruik maakt van de beveiligings mogelijkheden binnen mysql zelf. Je kunt daarmee namelijk al de grootste beveiligingsproblemen oplossen. Ik heb zelf momenteel een systeempje die afhankelijk van de login een bepaalde mysql gebruiker kiest. Ik kan dus niet dingen deleten zonder in te loggen.

Acties:
  • 0 Henk 'm!

  • Y0ur1
  • Registratie: Oktober 2000
  • Niet online
djluc schreef op 17 november 2003 @ 18:57:
Toch lijkt het me wel heel fijn dat de ts probeerd zijn beveiliging zo goed mogelijk te maken. Overigens lijkt met mij verstandig dat je gebruik maakt van de beveiligings mogelijkheden binnen mysql zelf. Je kunt daarmee namelijk al de grootste beveiligingsproblemen oplossen. Ik heb zelf momenteel een systeempje die afhankelijk van de login een bepaalde mysql gebruiker kiest. Ik kan dus niet dingen deleten zonder in te loggen.
ja dat is opzich ook al een goede, het publieke gedeelte alleen het recht select te geven en als je dan ingelogd bent dan moet het wel goed beveiligt zijn

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:51
Je geeft de mysql users alleen maar de rechten die ze ook echt nodig hebben. Ik ben momenteel aan het kijken hoe ik dit wat generieker op kan lossen maar mijn huidige methode voldoet ook erg goed. Verder laat ik alle query's via een functie lopen zodat ik daar eventueel ook nog een controle in kan bouwen.

Acties:
  • 0 Henk 'm!

  • Grijze Vos
  • Registratie: December 2002
  • Laatst online: 28-02 22:17
djluc schreef op 17 november 2003 @ 19:20:
Je geeft de mysql users alleen maar de rechten die ze ook echt nodig hebben. Ik ben momenteel aan het kijken hoe ik dit wat generieker op kan lossen maar mijn huidige methode voldoet ook erg goed. Verder laat ik alle query's via een functie lopen zodat ik daar eventueel ook nog een controle in kan bouwen.
Mijn database systemen gaan er altijd vanuit dat de webserver niet mag deleten. Dus, ik gebruik standaard een mysql user zonder delete rechten ;)

Maar insert gevaar blijft altijd, bij dit soort dingen. Moet de 'hacker' wel je database kennen..

TS moet eerst fatsoenlijk leren PHP-en, vooraleer hij zich echt druk moet maken over eventuele flaws in zn code, mbt dit soort security-dingetjes. Dingen die ie nu bouwt moet ie waarschijnlijk toch gaan recoden, komt ie over een paar maanden achter..

Op zoek naar een nieuwe collega, .NET webdev, voornamelijk productontwikkeling. DM voor meer info


Acties:
  • 0 Henk 'm!

Verwijderd

Alle mogelijke waarden in een array zetten, vervolgens een GET variabele mee sturen in je linkjes, controleren of deze GET-waarde in de array zit en vervolgens de GET waarde achter of in je query plaatsen?

Acties:
  • 0 Henk 'm!

  • djluc
  • Registratie: Oktober 2002
  • Laatst online: 18-09 16:51
Dat is in andere woorden het idee dat ik opperde...

Ik vind dat het toch wel verstandig is om zijn code ook op beveiliging te beoordelen omdat hij uiteindelijk toch vraagt om code opruimen en verbeteren.

  • Stilgar
  • Registratie: Maart 2002
  • Niet online
Grijze Vos schreef op 17 november 2003 @ 23:46:
[...]
Mijn database systemen gaan er altijd vanuit dat de webserver niet mag deleten. Dus, ik gebruik standaard een mysql user zonder delete rechten ;)
Dat is een goede manier van werken, je kan dit zelfs tot op tabel niveau doen in MySQL. Maar het is niet in alle situatues bruikbaar. Soms wil je dat een gebruiker wel zijn eigen records kan weggooien, maar niet die van een ander. Dat voorkom je niet met rechten.
Maar insert gevaar blijft altijd, bij dit soort dingen. Moet de 'hacker' wel je database kennen..
Klopt, maar vaak maak je toch gebruik van bepaalde standaard namen voor tabellen en velden. Vrijwel iedereen die iets met authenticatie doet gebruikt een tabel 'users' of 'gebruikers'. Het is vaak dus gewoon een kwestie van proberen.
Ik geloof niet zo in het concept 'security through obscurity'.
TS moet eerst fatsoenlijk leren PHP-en, vooraleer hij zich echt druk moet maken over eventuele flaws in zn code, mbt dit soort security-dingetjes. Dingen die ie nu bouwt moet ie waarschijnlijk toch gaan recoden, komt ie over een paar maanden achter..
Daar ben ik het niet mee eens. Ik vind dat juist beginnende programmeurs gewezen moeten worden op de common pitfalls, zowel wat betreft ontwerpen van een applicatie als de security. Maar dit is natuurlijk gewoon een mening.

Maar ik denk dat we nu te ver off topic gaan, dus ik zal mijn mond nu verder houden ;) .
Pagina: 1