jeg har en fungerende query her
mysql_query("select * from scripts where cat = $cat order by $sort $dir")
...men for at den skal virke skal alle variablerne jo være defineret og det er lidt irriterende at man skal skrive side.php?cat=2&sort=name&dir=asc bare for at vise en side...
er der ikke en måde at indstille en "default" ligesom når man laver en switch i php?
håber nogen kan svare mig på det . Mange tak
Det ville være meget dumt sikkerhedsmæssigt hvis du henter de variabler direkte ind fra brugeren. Her er et eksempel på hvordan du kan gøre, så brugeren ikke får fri adgang til databasen:
// gør kategorien sikker at bruge i en SQL query
$cat = mysql_escape_string($_GET['cat']);
// alle kolonner som der kan sorteres efter
$allowed_sorts = array('name', 'blah', 'noget');
// hvis vi har defineret en sorteringkolonne, og den er lovlig, så brug den. Ellers brug kolonnen "default"
if (isset($_GET['sort']) && in_array($_GET['sort'], $allowed_sorts)) {
$sort = $_GET['sort'];
} else {
$sort = 'default';
}
// brug DESC hvis det er angivet, ellers brug ASC
$dir = isset($_GET['dir']) && $_GET['dir'] == 'DESC' ? 'DESC': 'ASC';
// udfør forespørgslen
$result = mysql_query("select * from scripts where cat = $cat order by $sort $dir");