Seite 1 von 1

[erledigt]mysql sys.

Verfasst: 14.11.2006 16:30
von Ambience
also erstmal der code, dann die frage:

Code: Alles auswählen

<?php
if (!defined('IN_GREATBOOK'))
{
  die('Hacking attempt');
}

class Database
{

  var $connection_id;
  var $resource_id;
  
  function Database($sql_server, $sql_user, $sql_password, $sql_database)
  {
    $this->server = trim($sql_server);
    $this->user = trim($sql_user);
    $this->password = trim($sql_password);
    $this->database = trim($sql_database);
    
    $this->connection_id = mysql_connect($this->server, $this->user, $this->password);
    
    if ($this->connection_id)
    {
    
      $this->connection_id = mysql_select_db($sql_database);
      
      if (!$this->connection_id)
      {
        return false;
      }
      else
      {
        return $this->connection_id;
      }
    }
    else
    {
      return false;
    }
  }    
  
  function sql_query($sql)
  {
    $this->resource_id = mysql_query($sql);
    
    if (!$this->resource_id)
    {
      return false;
    }
    else
    {
      return $this->resource_id;
    }
  }
  
  function sql_fetchassoc($result)
  {
    $this->resource_id = mysql_fetch_assoc($result);
    
    if (!$this->resource_id)
    {
      return false;
    }
    else
    {
      return $this->resource_id;
    }
  }
  
  function sql_error($error, $error_descripton, $file, $line, $sql)
  {
      
    die('GreatBook: <b>' . $error . '</b>
         <br />
         <br />
        ' . $error_descripton . '
         <br />
         <br />
         <b><u>DEBUG MODE</u></b>
         <br />
         <br />
         SQL Error: ' . mysql_errno() . ' ' . mysql_error() . '
         <br />
         <br />
        ' . $sql . '
         <br />
         <br />
         Linie: ' . $line . '
         <br />
         File: ' . basename($file)
      );
      
  }
} // end class
?>
könnte mir einer verraten warum in der sql_error function :

Code: Alles auswählen

mysql_errno() und mysql_error()
funktioniert aber nicht:

Code: Alles auswählen

mysql_errno($this->connection_id);
da läuft ja irgendwas falsch oder?

und bei der sql_query function funktioniert:

Code: Alles auswählen

mysql_query($sql);
aber nicht:

Code: Alles auswählen

mysql_query($sql, $this->connection_id);
Danke

Verfasst: 14.11.2006 19:14
von S2B

Code: Alles auswählen

      $this->connection_id = mysql_select_db($sql_database); 
[php:mysql_select_db] :wink:

Verfasst: 14.11.2006 21:07
von Ambience
oh lol... gar nicht gesehen ^^

Verfasst: 14.11.2006 23:46
von Ambience
so, nun hab ich diesen schönen code.. dachte mir(sicherheit muss sein) aber anscheinend will mysql nicht ganz:

Code: Alles auswählen

function db_query($sql)
  {
    $query = mysql_query(mysql_real_escape_string($sql, $this->connection_id), $this->connection_id);
    
    if (!$query)
    {
      return false;
    }
    else
    {
      $this->resource_id = $query;
      
      //
      // count query
      //
      $this->queries++;
      
      return $this->resource_id;
    }
  }
1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '\r\n FROM gb_config' at line 1
das liegt an dem mysql_real_escape_string...

so sieht die abfrage aus:

Code: Alles auswählen

$sql = 'SELECT config_name, config_value
  FROM ' . CONFIG_TABLE;
ES HANDELT SICH HIERBEI NICHT UM EIN PHPBB

Verfasst: 15.11.2006 06:57
von Jensemann
Doku lesen bitte: http://de2.php.net/mysql_real_escape_string

Es ist nicht Sinn und Zweck den ganzen Query zu escapen! Dann gibt es solche Meldungen wie du sie bekommst - ganz so einfach ist Sicherheit dann doch nicht ;-)

Verfasst: 15.11.2006 17:58
von Ambience
doku hab ich ja gelesen.. hab den befehl ja von da...

Auch nach nochmaligen lesen, weiß ich nicht wie ich da anders vorgehen soll...

edit: könntest du mir dazu vllt. noch erklären wie phpbb 3 * das mit dem query "cache" macht?

also am anfang steht im footer z.B. 12 querys und wenn man reloaded nur noch 8. WIe funktioniert das denn? Danke

Danke

Verfasst: 15.11.2006 18:59
von Jensemann
Ambience hat geschrieben:doku hab ich ja gelesen.. hab den befehl ja von da...

Auch nach nochmaligen lesen, weiß ich nicht wie ich da anders vorgehen soll...
Im Zweifel geht man so vor, wie in den Beispielen. Schau dir bitte Beispiele 1-3 an, diese zeigen eine gute Verwendung der Funktion. Wenn du den Code einfach nur nicht nachvollziehen kannst, hast du erstmal andere Probleme als SQL-Queries.
Ambience hat geschrieben: edit: könntest du mir dazu vllt. noch erklären wie phpbb 3 * das mit dem query "cache" macht?

also am anfang steht im footer z.B. 12 querys und wenn man reloaded nur noch 8. WIe funktioniert das denn? Danke
Mit der Implementation habe ich mich noch nicht beschäftigt. Meine phpBB3 Saison fängt mit RC-1, alles was vorher kommt, zieht an mir vorbei.

Verfasst: 15.11.2006 19:19
von Ambience
so, ok nun weiß ich wie das funktioniert. dann bastel ich mir noch eine parser klasse die die strings dann parst.

so hab keine idee gehabt wie ich es parsen soll. also schon ne idee nur nciht wie ich es umsetzen kann. naja habs jetzt so:

Code: Alles auswählen

$sql = '
SELECT * 
  FROM config 
    WHERE config_name = "' . $db->db_escape('language') . '"';
    
if (!($result = $db->db_query($sql)))
{
  die('geht fucking nicht');
}
und siehe da es geht...

ist das jetzt sicher?