Array Problem

erlauben ist ein gutes Stichwort. Wenn ich nun zwei oder mehrere Begriffe zusammen anzeigen möchte. Zum Beispiel Wallpaper und Bilder.

Wie muss ich es dann in der Adressleiste eingeben?
Wie muss es im Script stehen?

Adressleiste index.php?cat=wallpaper&bilder

Oder wie macht man das

Mein momentaner Code:

PHP:
<?PHP

include 'config.php';

$sort = addslashes($_GET['sort']);
$cat = addslashes($_GET['cat']);
$go = addslashes($_GET['go']);

    $query = '
        SELECT
                *
          FROM
                `fi`
               WHERE `cat`="'.$cat.'"
          ORDER BY
                '.$sort.' '.$go.'
              
        ';
    $result = mysql_query($query);
    $tmp = null;
    while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
        if( $tmp != $row[$sort] ) {
            if( !is_null($tmp) ) {
               
            }
             echo "<table border='0' class='tdtd' width='688' width='95%' cellspacing='0' cellpadding='0'><tr bgcolor='D9D9D9'>";
           echo "<td colspan='10'>$row[$sort]</td></tr><br>";
            
 
        
            $tmp = $row[$sort];
            
 
            
        }
        echo "

<tr><td width='5'></td>
<td><a href='".$row['http4']."' target='_self'><img src='../icons/".$row['icon']."' align='absbottom' alt='' border='0' /></a>&nbsp;&nbsp;&nbsp;
<a href='".$row['http4']."' target='_self'>".$row['name']."</a></td>
		<td width='6'></td>
		<td>'".$row['res']."'</td>
		<td width='6'></td>
		<td>'".$row['size']."'</td>
		<td width='6'></td>
		<td>'".$row['count']."'</td>
		<td width='6'></td>
		<td>'".$row['date']."'</td>
	</tr>";
    }
    if( !is_null($tmp) ) {
    }
    
    echo "</table>";

?>
 
Beispielsweise so:
PHP:
<?php

include 'config.php';

// Erlaubte Werte für $sort
$sort_values = array(
	'date',
	'res',
	'size',
);
// Erlaubte Werte für $go
$go_values = array(
	'DESC',
	'ASC',
);

// Benutze übergebenen Wert, falls erlaubt, sonst Standardwert ('date' bzw. 'DESC')
$sort = in_array($_GET['sort'], $sort_values) ? $_GET['sort'] : 'date';
$go = in_array($_GET['go'], $go_values) ? $_GET['go'] : 'DESC';

if (isset($_GET['cat'])) {
	// Übergebene Kategorienliste aufsplitten, für Query sicher machen
	// und wieder zusammensetzen
	$cat = explode(',', $_GET['cat']);
	$cat = array_map('mysql_real_escape_string', $cat);
	$cat = "'".implode("','", $cat)."'";
} else {
	// Wenn keine Liste übergeben wurde, Standardwert verwenden
	$cat = "'bilder'";
}

    $query = '
        SELECT
                *
          FROM
                `fi`
               WHERE `cat` IN ('.$cat.')
          ORDER BY
                '.$sort.' '.$go.'
        ';
…
Den Rest sollte man vermutlich unverändert lassen können.

Beispiel-URL: http://www.example.com/index.php?sort=date&go=DESC&cat=wallpaper,bilder
 
Lassen wir dass erst mal mit mehreren Kategorien. Und da ich keine Relevanten Daten in dieser Tabelle integriert habe, und in meinem Script keine anderen Tabellen angesteuert werden können erachte ich diesen Vorgang als momentan nicht notwendig. Sieht dass jemand anders?

Ich habe hierbei noch zwei Fragen. Wenn ich ..download.php eingebe, was muss ich tun damit ein Standartwert geladen wird, wie zB. download.php?go=asc&sort=date&cat=wallpaper ?

Hier mein Script:
PHP:
<?php

    include './lab/config.php';

    $row_classes = array(
        'roweven',
        'rowodd',
    );

    $query = '
        SELECT
                *
          FROM
                `fi`
          WHERE
                `cat` = "'.mysql_real_escape_string($_GET['cat']).'"
          ORDER BY
                '.mysql_real_escape_string($_GET['sort']).' '.mysql_real_escape_string($_GET['go']).'
        ';
    $result = mysql_query($query);
    $tmp = null;
    $row_num = 0;
    while( $row = mysql_fetch_array($result, MYSQL_ASSOC) ) {
        $row_class = ++$row_num % 2 == 0 ? 'roweven' : 'rowodd';
        if( $tmp != $row[$sort] ) {
            echo '<table border="0" width="688" width="95%" cellspacing="0" cellpadding="0">';
            echo '<tr bgcolor="D9D9D9"><td colspan="10">'.$row[$sort].'</td></tr>';
            $tmp = $row[$sort];
        }
        echo '<tr class="'.$row_class.'"><td width="5"></td>
<td><a href="'.$row['http4'].'" target="_self"><img src="../03/icons/'.$row['icon'].'" align="absbottom" alt="" border="0" /></a>&nbsp;&nbsp;&nbsp;
<a href="'.$row['http4'].'" target="_self">'.$row['name'].'</a></td>
        <td width="6"></td>
        <td>'.$row['res'].'</td>
        <td width="6"></td>
        <td>'.$row['size'].'</td>
        <td width="6"></td>
        <td>'.$row['count'].'</td>
        <td width="6"></td>
        <td>'.$row['date'].'</td>
    </tr>';
    }
    echo '</table>';

?>

Und...

dann stelle ich mir noch oft die Frage, wieso dieses Script nicht richtig funktioniert. Es sollte meine PHP-Dateien includieren, und als Standartwert eine Standartseite includieren. Diese Script hat niemals richtig funktioniert, und ich habe niemals verstanden wieso. Hier sehe ich auch eher Handlungsbedarf in Bezug auf Sicherheit

Das Script:

PHP:
<?php      include '../03/header.php';
?>

<?php 

    $_GET['id'] = ( isset($_GET['id']) ) 
        ? $_GET['id'].'.php' 
        : null; 

    if( !is_null($_GET['id']) ) { 
        if( file_exists($_GET['id']) ) 
            include_once $_GET['id']; 
        }  

else { 
        include 'home2.php'; 
    } 

?> 

<?php      include '../03/footer.php';
?>
 
Zurück