Heinz: not a valid MySQL result resource ?

Beitrag lesen

Hallo,

Danke schon mal für die Infos.

Wenn $sort einfach leer ist (da nicht gesetzt), dann steht da am Ende der Select-Anweisung ".. ORDER BY " und da ist sie dann schon vorbei. Das gibt einen Mysql-Syntaxfehler (direkt nach der mysql_query-Zeile ein echo mysql_error(); einfügen und dann siehst Du das)

Ok, das funkt.

Du hast 2 Möglichkeiten:

  1. QUICK&DIRTY-Lösung:

am Anfang des Scripts:

if (!isset($sort)) $sort = "standard_spalte";

Das hat auch funktioniert.

  1. Wirkliche Lösung:
  1. register_globals in der php.ini auf Off stellen.

Tja, das kann ich leider nicht, da ich keinen Zugriff auf die php.ini bei meinem Provider habe.

  1. Alle übergebenen Parameter (da sie jetzt nicht mehr global registriert werden) über $_GET und $_POST (bzw. $HTTP_GET_VARS und $HTTP_POST_VARS bei PHP < 4.1) - siehe http://www.php.net/manual/en/reserved.variables.php
  1. Alle Eingaben validieren. (also sehen, ob sie plausibel sind) Dazu sind regexps ganz geeignet: http://www.php.net/manual/en/ref.regex.php, http://www.php.net/manual/en/ref.pcre.php
  1. Falls eine Eingabe leer ist, dann soll ein Default-Wert zugewiesen werden:

if (!isset($_GET["variable"])) {
  $wert_zu_verwenden = _default_wert_;
} else {
  if (ist_valide($_GET["variable"])) {
    $wert_zu_verwenden = $_GET["variable"];
  } else {
    spucke_fehler_aus;
    $wert_zu_verwenden = _default_wert_;
  }
}

  1. Auf jeden Fall das SQL-Statement noch mal mit addslashes absichern, man weiß ja nie:

$sql = "SELECT .... FROM " . addslashes ($tabelle) . " ORDER BY " . addslashes ($sort);

Hier kommt nun eine schöne Fehlermeldung: You have an error in your SQL syntax near 'FROM ....' at line 1

Zu Sicherheit und PHP siehe auch noch http://www.php.net/manual/en/security.php

Grüße,

Christian

Danke jedenfalls für deine Mühe.

LG
Heinz