के साथ वर्डप्रेस डेटाबेस नाम/उपयोगकर्ता नाम/पासवर्ड प्राप्त करना मैं एक वर्डप्रेस प्लग-इन लिख रहा हूं और डेटाबेस नाम, उपयोगकर्ता नाम और पासवर्ड (एसक्यूएल डंप करने के लिए) को पढ़ने की आवश्यकता है। क्या यह संभव है?PHP
धन्यवाद
के साथ वर्डप्रेस डेटाबेस नाम/उपयोगकर्ता नाम/पासवर्ड प्राप्त करना मैं एक वर्डप्रेस प्लग-इन लिख रहा हूं और डेटाबेस नाम, उपयोगकर्ता नाम और पासवर्ड (एसक्यूएल डंप करने के लिए) को पढ़ने की आवश्यकता है। क्या यह संभव है?PHP
धन्यवाद
हाँ, वे में wp-config.php
वे परिभाषित हैं। वर्डप्रेस
यदि यह एक प्लगइन है जिसे आप सार्वजनिक रूप से उपलब्ध कराने जा रहे हैं या WP प्लगइन रिपॉजिटरी में सबमिट करने जा रहे हैं, तो मैं रूट में wp-config.php के लिए एक नज़र डालने के लिए कड़ी मेहनत नहीं करना चाहता हूं बल्कि wp-config एक निर्देशिका की भी तलाश करता हूं रूट के ऊपर [वर्डप्रेस wp-config सुरक्षा दस्तावेज़ीकरण] (http://codex.wordpress.org/Hardening_WordPress#Securing_wp-config.php) wp-load.php की लाइन 26 के आसपास देखें कि वे कैसे दिखते हैं और wp- config.php फ़ाइल –
वर्डप्रेस में अपने ओओ कोड में कुछ काफी मूर्खतापूर्ण चीजें चल रही हैं, यह पहली बार नहीं है जैसा कि मैंने सामना किया है क्योंकि हम प्रत्येक के साथ आंतरिक में गहरी खुदाई करते हैं Moxune पर लगातार परियोजना। WP_User::__set doesn't persist custom fields as it claims देखें।
goofiness मैं निश्चित रूप से यहाँ का उल्लेख है कि तालिका उपसर्ग की तरह कुछ, उर्फ wpdb::prefix
एक public
सदस्य चर रहा है, फिर भी बातें dbname
, dbpassword
, और dbhost
तरह protected
कर रहे हैं और वहाँ कोई public
एक्सेसर तरीके हैं है।
मुझे यकीन है कि वर्डप्रेस कोर देवों में से एक इसके लिए कुछ तर्क देने का प्रयास करेगा, लेकिन इसके साथ ही सामना करने के लिए कुछ अच्छे 'ओएल ओओ का भी उपयोग कर सकते हैं। मेरा सुझाव, एक सजावट।
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; }
}
फिर wpdb
करने के लिए अपने प्लगइन कोड (functions.php) सेटअप एक global
समान नस में ऊपर।
global $sanedb;
$sanedb = new SaneDb($wpdb);
वहाँ से, बस अपने बजाय प्लगइन $wpdb
भीतर $sanedb
का उपयोग करें।
आखिरकार, डेटाबेस नाम एट अल की रोकथाम प्राप्त करना।
$sanedb->getDbName();
डीबी उपयोगकर्ता नाम प्राप्त करने के लिए, इसे जोड़ें: सार्वजनिक फ़ंक्शन getDbUser() {$ $ -> _ oDb-> dbuser; } – Amit
क्यों नहीं वर्तमान डेटाबेस कनेक्शन का पुनः उपयोग करें? –
@ पेक्का- मैं एक php प्रणाली कर रहा हूं() mysqldump को कॉल करें- मुझे उन चरों में गुजरने की आवश्यकता है। – Yarin