PHP

2011-02-28 25 views
5

के साथ वर्डप्रेस डेटाबेस नाम/उपयोगकर्ता नाम/पासवर्ड प्राप्त करना मैं एक वर्डप्रेस प्लग-इन लिख रहा हूं और डेटाबेस नाम, उपयोगकर्ता नाम और पासवर्ड (एसक्यूएल डंप करने के लिए) को पढ़ने की आवश्यकता है। क्या यह संभव है?PHP

धन्यवाद

+0

क्यों नहीं वर्तमान डेटाबेस कनेक्शन का पुनः उपयोग करें? –

+0

@ पेक्का- मैं एक php प्रणाली कर रहा हूं() mysqldump को कॉल करें- मुझे उन चरों में गुजरने की आवश्यकता है। – Yarin

उत्तर

13

हाँ, वे में wp-config.php

  1. डेटाबेस नाम परिभाषित कर रहे हैं: DB_NAME
  2. डाटाबेस उपयोगकर्ता: DB_USER
  3. डाटाबेस पासवर्ड: DB_PASSWORD
  4. डाटाबेस मेजबान: DB_HOST

वे परिभाषित हैं। वर्डप्रेस

+3

यदि यह एक प्लगइन है जिसे आप सार्वजनिक रूप से उपलब्ध कराने जा रहे हैं या 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 फ़ाइल –

3

वर्डप्रेस में अपने ओओ कोड में कुछ काफी मूर्खतापूर्ण चीजें चल रही हैं, यह पहली बार नहीं है जैसा कि मैंने सामना किया है क्योंकि हम प्रत्येक के साथ आंतरिक में गहरी खुदाई करते हैं 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(); 
+0

डीबी उपयोगकर्ता नाम प्राप्त करने के लिए, इसे जोड़ें: सार्वजनिक फ़ंक्शन getDbUser() {$ $ -> _ oDb-> dbuser; } – Amit

संबंधित मुद्दे