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-
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-
Ja, sie sind definiert in wp-config.php
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
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
, dbpassword
und 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
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