Versio

pagina systeem

Overzicht Reageren

Bas

Bas

23/02/2009 23:10:00
Quote Anchor link
ik ben bezig met een nieuw pagina systeem voor mijn website

ik wil alleen nog even weten of het wel veilig is:

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
<?
 if ( isset($_GET['id']) )
 {

  $id = mysql_real_escape_string($_GET['id']);
  $sql = 'select * from tekst where id = "'.mysql_real_escape_string($id).'"';
  $tmp = mysql_query($sql);
  while ( $list = mysql_fetch_array($tmp) )
  {

   $content = $list['tekst'];
   echo $content;
  }
 }

 else
 {
  $sql = 'select * from tekst where id = "1"';
  $tmp = mysql_query($sql);
  while ( $list = mysql_fetch_array($tmp) )
  {

   $content = $list['tekst'];
   echo $content;                            
  }
 }

?>


en de tabel:

CREATE TABLE `tekst` (
`id` int(11) NOT NULL auto_increment,
`tekst` longtext NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=0;
 
PHP hulp

PHP hulp

25/05/2012 09:33:14
Gesponsorde koppelingen:
BHosted Hosting al vanaf € 1,- per maand

Controleer nu gratis jouw domeinnaam:

  
 
Bart Tuma

Bart Tuma

23/02/2009 23:33:00
Quote Anchor link
Je zou het beter zo kunnen doen, doet precies het zelfde:

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
<?php

if( isset($_GET['id']) && !empty($_GET['id']) ) {

    $aID = mysql_real_escape_string($_GET['id']);

}
else {

    $aID = 1;

}


    $aSql = "SELECT * FROM tabelnaam WHERE id = '" . $aID . "'";
        
    if(!$aRes = mysql_query($aSql))
    {

            
        trigger_error(mysql_error().'<br />In query: '.$aSql);
                
    }
else {
            
        if(mysql_num_rows($aRes) == 1)
        {

        
            while($aRij = mysql_fetch_assoc($aRes))
            {

            
                // content kan hier
            
            }
            
        }
else {
        
            echo 'Er ging iets mis met het selecteren van de pagina.';
        
        }
    }

?>
 
Eddy Erkelens

Eddy Erkelens

24/02/2009 08:40:00
Quote Anchor link
Een id is altijd een integer, dus gebruik INTVAL() ipv mysql_real_escape_string.

Maak dan wel gebruik van het script van Bart, want dat is net iets beter (overzichtelijker/netter/veiliger).

Redenen:
* jij gaf $_GET['id'] 2x een mysql_real_escape, waar 1x echt wel genoeg is.
* jij geeft geen standaard-getal op voor $id, wat Bart wel doet (jij hebt dan 2 losse queries, waardoor je wel iets 'standaards' hebt.
* je controleert niet of de query gelukt is (Bart wel)
* je kopieert onnodig variabelen >> $content = $list['tekst'] >> echo $content;
 
PHP Newbie

PHP Newbie

24/02/2009 09:01:00
Quote Anchor link
if( isset($_GET['id']) && !empty($_GET['id']) )

In empty() zit al een isset() dus isset() mag hier weg. Gebruik nog wel ctype_digit()
 
Bas

Bas

24/02/2009 13:18:00
Quote Anchor link
ik zal het proberen
 
Steen

steen

24/02/2009 13:45:00
Quote Anchor link
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
// 'fout' 1
   $content = $list['tekst'];
   echo $content;    
// 'fout' 2
mysql_fetch_array


WaaroM?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
// goed 1
echo $list['tekst'];
// goed 2
mysql_fetch_assoc
 
Bas

Bas

24/02/2009 16:29:00
Quote Anchor link
ja dat kan ook
 



Overzicht Reageren