正在加载...
2006-10
5
发表于: 未分类 | 作者: xurenlu
标签:

这是自己分离出来的代码,没有自己测试,所以很可能无法正常运行。主要是示例wordpress.mu注册和登陆时的一些操作.

  1. <?php
  2.     /**
  3.     这个wp_应该跟wp里设的前缀是一样的.
  4.     */
  5.    
  6.     define("WP_DB_PREFIX_FORXOOPS","wp_");
  7.     /**
  8.     这是运行WP.mu的主站的域名.
  9.     */
  10.     define("WP_BLOG_HOST_FORXOOPS","www.example.com");
  11.     class xoops_mu{
  12.         /**
  13.        
  14.         在Xoops登陆成功后,请调用一下这个函数,这样在Wordpress中也就能登陆了。
  15.         注意,这个pass是实际用户输入的pass的两次md5加密。
  16.        @author renlu xu<helloasp@hotmail.com>
  17.         */
  18.         function userLogin($user,$pass,$expire,$path="/",$domain="")
  19.         {
  20.             if(!($expire>60))
  21.                 {
  22.                     /**
  23.                     如果没有指定cookie保存时间,默认保存1年。
  24.                     */
  25.                     $expire=365*24*3600;
  26.                 }
  27.             if($domain=="")
  28.                 {
  29.                     /**
  30.                     如果没有指定cookie的域名,默认用机器的域名。不过要做多子站的话,要设置一下。比如,设为".example.com"。
  31.                     */
  32.                     $domain=$_SERVER["HTTP_HOST"];
  33.                 }
  34.             setcookie("wordpressuser",$user,$expire,$path,$domain);
  35.             setcookie("wordpresspass",$pass,$expire,$path,$domain);
  36.         }
  37.         function changepass($uname,$newpass)
  38.         {
  39.             global $xoopsDB;
  40.             $xoopsDB->queryF("update ".WP_DB_PREFIX_FORXOOPS."users set user_pass='".md5($newpass)."' where user_login='".$uname."'");
  41.         }
  42.        
  43.         function logout($expire,$path="/",$domain="")
  44.         {
  45.             if(!($expire>60))
  46.                 {
  47.                     /**
  48.                     如果没有指定cookie保存时间,默认保存1年。
  49.                     */
  50.                     $expire=365*24*3600;
  51.                 }
  52.             if($domain=="")
  53.                 {
  54.                     /**
  55.                     如果没有指定cookie的域名,默认用机器的域名。不过要做多子站的话,要设置一下。比如,设为".example.com"。
  56.                     */
  57.                     $domain=$_SERVER["HTTP_HOST"];
  58.                 }
  59.             setcookie("wordpressuser","",$expire,$path,$domain);
  60.             setcookie("wordpresspass","",$expire,$path,$domain);
  61.         }
  62.         /**
  63.         往Wp中插中新用户的语句.在XOOPS中注册后,应该调用这一个函数。
  64.         只加用户,不加博客设置。
  65.         */
  66.         function addNewWPUser($uname,$upass,$email,$domain="",$path="/",$url="",$nickname="")
  67.         {
  68.             global $xoopsDB;
  69.             if($domain=="")
  70.             {
  71.                 $domain=$uname;
  72.             }
  73.             if($nickname=="")
  74.             {
  75.                 $nickname=$uname;
  76.             }
  77.             if($url=="")
  78.             {
  79.                 $url="http://".$domain.$path;
  80.             }
  81.             $wpInsert["user_login"]=$uname;
  82.             $wpInsert["user_pass"]=$upass;
  83.             $wpInsert["user_nicename"]=$nickname;
  84.             $wpInsert["user_email"]=$email;
  85.             $wpInsert["user_url"]=$url;
  86.             $wpInsert["user_registered"]=date("Y-m-d H:i:s");
  87.             $wpInsert["user_status"]=0;
  88.             $wpInsert["display_name"]=$uname;
  89.             $wpInsert["spam"]=0;
  90.             $wpInsert["deleted"]=0;
  91.             /**
  92.             生成插入数据的sql 语句.
  93.             */
  94.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."users",$wpInsert);
  95.            
  96.             $xoopsDB->queryF($sql);
  97.            
  98.             $AffectedRows=$xoopsDB->getAffectedRows();
  99.             if(!$AffectedRows)
  100.             else
  101.             {
  102.                 return false;
  103.             }   
  104.            
  105.            
  106.             $wpInsert=array();
  107.             $wpInsert["domain"]=$domain;
  108.             $wpInsert["path"]=$path;
  109.             $wpInsert["title"]=$_POST["title"];
  110.             $wpInsert["user_login"]=$uname;
  111.             $wpInsert["user_email"]=$email;
  112.             $wpInsert["registered"]=date("Y-m-d H:i:s");
  113.             $wpInsert["active"]=1;
  114.             $wpInsert["activation_key"]="000000";
  115.             $wpInsert["meta"]='a:2:{s:7:"lang_id";s:2:"en";s:6:"public";i:1;}';
  116.             $wpInsert["activated"]=date("Y-m-d H:i:s");
  117.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."signups",$wpInsert);
  118.            
  119.             $xoopsDB->queryF($sql);
  120.             $AffectedRows=0;
  121.             $AffectedRows=$xoopsDB->getAffectedRows();
  122.             if(!$AffectedRows)
  123.             else
  124.             {
  125.                 return false;
  126.             }
  127.            
  128.         }
  129.         /**
  130.         创建 WP的blog.如果添加WP用户成功,还应调用这一个函数。
  131.         */
  132.         function CreateBlog($uname,$udomain,$nickname='',$path="/")
  133.         {
  134.            
  135.             global $xoopsDB;
  136.            
  137.             if($domain=="")
  138.             {
  139.                 $domain=$uname;
  140.             }
  141.             /**
  142.             这一段还不太懂...
  143.             */
  144.             $wpInsert=array();
  145.             $wpInsert["site_id"]=1;
  146.             $wpInsert["domain"]=$udomain;
  147.             $wpInsert["path"]=$path;
  148.             $wpInsert["registered"]=date("Y-m-d H:i:s");
  149.             $wpInsert["public"]=1;
  150.             $wpInsert["archived"]=0;
  151.             $wpInsert["mature"]=0;
  152.             $wpInsert["spam"]=0;
  153.             $wpInsert["deleted"]=0;
  154.             $wpInsert["lang_id"]=0;
  155.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."blogs",$wpInsert);
  156.             $xoopsDB->queryF($sql);
  157.            
  158.            
  159.            
  160.        
  161.             /**
  162.             得到wp中的uid
  163.             */
  164.             $sql=("select * from ".WP_DB_PREFIX_FORXOOPS."users where user_login='".$uname."'");
  165.             $rs=$xoopsDB->query($sql);
  166.             $row=$xoopsDB->FetchArray($rs);
  167.            
  168.             $id=$row["ID"];
  169.             $url=$row["user_url"];
  170.             $email=$row["user_email"];
  171.            
  172.            
  173.             $sql=fileoper::readover("wp_newblog.sql");
  174.            
  175.             /**
  176.             得到了一系统插入乱七八糟的数据的SQL,我还没有去分析这些都是做什么的。
  177.             不过我试着删除了几条记录,再创建的用户就无法登陆了,看来不要随便改。
  178.             为了提示数据库性能,可以试探着删一些东西去,毕竟WP不知道都插入了一些什么东东。
  179.             */
  180.            
  181.             $sql=str_replace("{WP}",WP_DB_PREFIX_FORXOOPS."$id",$sql);
  182.             $sql=str_replace("{WP_SITE_URL}","http://".WP_BLOG_HOST_FORXOOPS.$path,$sql);
  183.             $sql=str_replace("{WP_HISSITE_URL}",$url,$sql);
  184.             $sql=str_replace("{WP_HISEMAIL}",$email,$sql);
  185.             $sql=str_replace("{WP_AUTHOR}",$id,$sql);
  186.             $sql=str_replace("\r","",$sql);
  187.             $a=explode(";\n",$sql);
  188.             while(list($k,$v)=each($a)){
  189.                 $xoopsDB->queryF($v);
  190.             }
  191.            
  192.             /**
  193.             现在插入的这几个是比较重要的,好像缺少了就无法运行。
  194.             */
  195.             $wpInsert["user_id"]=$id;
  196.             $wpInsert["meta_key"]="nickname";
  197.             $wpInsert["meta_value"]=$nickname;
  198.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
  199.        
  200.            
  201.             $wpInsert["user_id"]=$id;
  202.             $wpInsert["meta_key"]="primary_blog";
  203.             $wpInsert["meta_value"]=$id;
  204.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
  205.        
  206.            
  207.             $wpInsert["user_id"]=$id;
  208.             $wpInsert["meta_key"]="source_domain";
  209.             $wpInsert["meta_value"]="$udomain";
  210.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
  211.            
  212.            
  213.             $wpInsert["user_id"]=$id;
  214.             $wpInsert["meta_key"]="wp_".$id."_capabilities";
  215.             $wpInsert["meta_value"]='a:1:{s:13:"administrator";b:1;}';
  216.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
  217.            
  218.            
  219.             $wpInsert["user_id"]=$id;
  220.             $wpInsert["meta_key"]="wp_".$id."_user_level";
  221.             $wpInsert["meta_value"]="10";
  222.             $sql=sqlgenerator::insert(WP_DB_PREFIX_FORXOOPS."usermeta",$wpInsert);
  223.            
  224.         }
  225.    
  226.     }
  227.     ?>

: http://www.162cm.com/archives/272.html

本文相关评论 - 1条评论都没有呢

还没有评论。