2011
Nov
02
wordpree 會員登入使用到 Cookie 功能,而且前後台的 Cookie讀的路徑不太一樣,所以登入後每個路徑都要設 Cookie。
- wordpress 的登入的cookie資料,必需設定以下路徑
/ 主目錄
/wp前端目錄
/wp/wp-admin 後台目錄
/wp/wp-content/plugin 外掛目錄
- cookie名稱長得像這樣:wordpress_logged_in_XXXXXXXXXX
登入整合
- 需要的include的檔案
Example
- require_once(/wp/wp-includes/class-phpass.php');
- require_once(/wp/wp-includes/cache.php');
- 比對登入帳密是否正確
Example
- function user_password($username,$password=false){
- //抓 user的資料
- $u=*get user Data
- $wp_hasher = new PasswordHash(8, TRUE);
- $check = $wp_hasher->CheckPassword($password, $u[0]['user_pass']);
- return $check;
- }
- 儲存user 的 cookie
Example
- //設定 cookie的名稱
- define('COOKIEHASH', md5 ( wp_options的 siteurl );
- define('AUTH_COOKIE','wordpress_logged_in_'.COOKIEHASH);
- //設定$current_user
- $user=getUserID(); //抓user ID;
- wp_set_current_user($user);
- //設定cookie路徑
- $cookie = AUTH_COOKIE;
- $s =
- setcookie($cookie,$s,$time,COOKIEPATH, COOKIE_DOMAIN, '', true);
- setcookie($cookie,$s,$time,SITECOOKIEPATH, COOKIE_DOMAIN, '', true);
- setcookie($cookie,$s,$time,ADMIN_COOKIE_PATH, COOKIE_DOMAIN, '', true);
- setcookie($cookie,$s,$time,PLUGINS_COOKIE_PATH, COOKIE_DOMAIN, '', true);
wordpress POST 被阻擋
在wordpress中,自已的post form 常常被wordpress阻擋
解決方式:建立一個新的post.php檔案
Example
- if ( !isset($wp_did_header) ) {
- $wp_did_header = true;
- require_once( dirname(__FILE__) . '/wp-load.php' );
- wp();
- require_once( ABSPATH . WPINC . '/template-loader.php' );
- }
- //導到目標檔案
- require(TEMPLATEPATH.'/index.php');