Abrufen von WordPress-Datenbankname/Benutzername/Passwort mit PHP

Lesezeit: 2 Minuten

Benutzer-Avatar
Yarin

Ich schreibe ein WordPress-Plug-In und muss den Datenbanknamen, den Benutzernamen und das Passwort lesen (um einen SQL-Dump zu erstellen). Ist das möglich?

Vielen Dank-

  • Warum nicht einfach die aktuelle Datenbankverbindung wiederverwenden?

    – Pekka

    28. Februar 2011 um 16:50 Uhr

  • @Pekka- Ich mache einen PHP-System()-Aufruf mysqldump- Ich muss diese Variablen übergeben.

    – Jarin

    28. Februar 2011 um 17:20 Uhr

Ja, sie sind definiert in wp-config.php

  1. Datenbankname: DB_NAME
  2. Datenbankbenutzer: DB_USER
  3. Datenbankpasswort: DB_PASSWORD
  4. Datenbankhost: DB_HOST

Sie sind definiert. Siehe wp-config.php im Root-Verzeichnis von WordPress

  • Wenn dies ein Plugin ist, das Sie öffentlich verfügbar machen oder an das WP-Plugin-Repository senden möchten, würde ich vorschlagen, nicht nur hart zu codieren, um im Stammverzeichnis nach wp-config.php zu suchen, sondern auch nach wp-config ein Verzeichnis darüber zu suchen die Wurzel WordPress wp-config Sicherheitsdokumentation Sehen Sie sich ungefähr in Zeile 26 von wp-load.php an, wie sie nachschlagen und die Datei wp-config.php einschließen

    – Terri Ann

    1. März 2011 um 16:43 Uhr

Benutzer-Avatar
Schnellschaltung

WordPress hat einige ziemlich alberne Dinge, die im gesamten OO-Code vor sich gehen, dies ist nicht das erste, auf das ich stoße, wenn wir bei jedem aufeinanderfolgenden Projekt tiefer in die Interna eintauchen Moxune. Sehen WP_User::__set behält benutzerdefinierte Felder nicht bei, wie es behauptet.

Die Dummheit, auf die ich mich hier beziehe, ist natürlich, dass so etwas wie das Tabellenpräfix, auch bekannt als wpdb::prefix ist ein public Mitgliedsvariable, aber Dinge wie dbname, dbpasswordund dbhost sind protected und es gibt keine public Zugriffsmethoden.

Ich bin mir sicher, dass einer der WordPress-Core-Entwickler versuchen wird, eine Begründung dafür zu finden, aber in der Zwischenzeit kann er auch ein gutes altes OO verwenden, um damit fertig zu werden. Mein Vorschlag, ein Dekorateur.

class SaneDb
{
    private $_oDb;

    public function __construct(wpdb $oDb)
    {
        $this->_oDb = $oDb;
    }

    public function __get($sField)
    {
        if($sField != '_oDb')
            return $this->_oDb->$sField;
    }

    public function __set($sField, $mValue)
    {
        if($sField != '_oDb')
            $this->_oDb->$sField = $mValue;
    }

    public function __call($sMethod, array $aArgs)
    {
        return call_user_func_array(array($this->_oDb, $sMethod), $aArgs);
    }

    public function getDbName() { return $this->_oDb->dbname;     }
    public function getDbPass() { return $this->_oDb->dbpassword; }
    public function getDbHost() { return $this->_oDb->dbhost;     }
}

Dann oben auf Ihrem Plugin-Code (Funktionen.php) Einrichtung a global in ähnlicher Weise zu wpdb.

global $sanedb;
$sanedb = new SaneDb($wpdb);

Von dort aus einfach verwenden $sanedb innerhalb Ihres Plugins statt $wpdb.

Schließlich den Datenbanknamen et al.

$sanedb->getDbName();

  • Um den DB-Benutzernamen zu erhalten, fügen Sie Folgendes hinzu: public function getDbUser() { return $this->_oDb->dbuser; }

    – Amit

    28. Dezember 2015 um 16:16 Uhr

1376540cookie-checkAbrufen von WordPress-Datenbankname/Benutzername/Passwort mit PHP

This website is using cookies to improve the user-friendliness. You agree by using the website further.

Privacy policy