2011
Nov
02

wordpree 會員登入使用到 Cookie 功能,而且前後台的 Cookie讀的路徑不太一樣,所以登入後每個路徑都要設 Cookie。

  • wordpress 的登入的cookie資料,必需設定以下路徑

/ 主目錄

/wp前端目錄

/wp/wp-admin 後台目錄

/wp/wp-content/plugin 外掛目錄

  • cookie名稱長得像這樣:wordpress_logged_in_XXXXXXXXXX

登入整合

  • 需要的include的檔案
Example
  1. require_once(/wp/wp-includes/class-phpass.php');
  2. require_once(/wp/wp-includes/cache.php');
  • 比對登入帳密是否正確
Example
  1. function user_password($username,$password=false){
  2. //抓 user的資料
  3. $u=*get user Data
  4. $wp_hasher = new PasswordHash(8, TRUE);
  5. $check = $wp_hasher->CheckPassword($password, $u[0]['user_pass']);
  6. return $check;
  7. }
  • 儲存user 的 cookie
Example
  1. //設定 cookie的名稱
  2. define('COOKIEHASH', md5 ( wp_options siteurl );
  3. define('AUTH_COOKIE','wordpress_logged_in_'.COOKIEHASH);
  4.  
  5. //設定$current_user
  6. $user=getUserID(); //抓user ID;
  7. wp_set_current_user($user);
  8.  
  9. //設定cookie路徑
  10. $cookie = AUTH_COOKIE;
  11. $s =
  12. setcookie($cookie,$s,$time,COOKIEPATH, COOKIE_DOMAIN, '', true);
  13. setcookie($cookie,$s,$time,SITECOOKIEPATH, COOKIE_DOMAIN, '', true);
  14. setcookie($cookie,$s,$time,ADMIN_COOKIE_PATH, COOKIE_DOMAIN, '', true);
  15. setcookie($cookie,$s,$time,PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, '', true);

wordpress POST 被阻擋

在wordpress中,自已的post form 常常被wordpress阻擋

解決方式:建立一個新的post.php檔案
Example
  1. if ( !isset($wp_did_header) ) {
  2. $wp_did_header = true;
  3. require_once( dirname(__FILE__) . '/wp-load.php' );
  4. wp();
  5. require_once( ABSPATH . WPINC . '/template-loader.php' );
  6. }
  7. //導到目標檔案
  8. require(TEMPLATEPATH.'/index.php');

回應 (Leave a comment)