天天看點

PHPcms 把盛大登陸換成人人網登陸

首先要確定你的 phpcms是比較新的版本, v9.3以後的吧

這裡說明一個函數 rawurlencode() 本函數将字元串編碼成 URL

的字元串專用格式,特殊的字元會轉換成百分比符号後面加上二個十六位數字的格式。例如,空格就會變成 %20。

修改member/class/OauthSDK.class.php

1

2

3

4

5

6

7

8

9

10

<code>protected</code>

<code>$systemParam</code> <code>=</code><code>array</code><code>(</code>

<code>        </code><code>‘connectTimeout‘</code>

<code>=&gt; 5 ,</code>

<code>        </code><code>‘timeout‘</code>

<code>=&gt; 3 ,</code>

<code>        </code><code>‘gatewayUrl‘</code>

<code>=&gt;</code><code>‘‘</code>

<code>,</code>

<code>        </code><code>‘authorizeURL‘</code>

<code>        </code><code>‘accessTokenURL‘</code>

<code>        </code><code>‘systemTokenURL‘</code>

<code>        </code><code>‘gatewayHost‘</code>

<code>=&gt;</code><code>‘api.renren.com‘</code>

<code>        </code><code>‘gatewayPort‘</code>

<code>=&gt; 8888</code>

<code>    </code><code>);</code>

11

12

13

14

15

16

17

18

19

<code>//Get accesstoken</code>

<code>    </code><code>public</code>

<code>function</code> <code>getAccessToken (</code><code>$code</code><code>)</code>

<code>    </code><code>{</code>

<code>        </code><code>$this</code><code>-&gt;_clearError();</code>

<code>        </code><code>$clientID</code>

<code>=</code><code>$this</code><code>-&gt;appId;</code>

<code>        </code><code>$redirectURI</code>

<code>=</code><code>$this</code><code>-&gt;redirectURI;</code>

<code>        </code><code>$clientSecret</code>

<code>=</code><code>$this</code><code>-&gt;appSecret;</code>

<code>        </code><code>$accessTokenURL</code>

<code>= self::accessTokenURL();</code>

<code>        </code><code>$url</code>

<code>=</code><code>"{$accessTokenURL}?&amp;grant_type=authorization_code&amp;code={$code}&amp;client_id={$clientID}&amp;client_secret={$clientSecret}&amp;redirect_uri={$redirectURI}"</code><code>;</code>

<code>       </code> 

<code>        </code><code>$result</code>

<code>= self::http(</code><code>$url</code><code>);</code>

<code>        </code><code>$access_token</code>

<code>= json_decode(</code><code>$result</code><code>, TRUE);</code>

<code>        </code><code>if</code>

<code>(</code><code>empty</code><code>(</code><code>$access_token</code><code>) || isset(</code><code>$access_token</code><code>[</code><code>‘error‘</code><code>])) {</code>

<code>            </code><code>$this</code><code>-&gt;_setOAuthError(</code><code>$access_token</code><code>);</code>

<code>            </code><code>return</code>

<code>FALSE;</code>

<code>        </code><code>}</code><code>else</code>

<code>{</code>

<code>$access_token</code><code>;</code>

<code>        </code><code>}</code>

<code>    </code><code>}</code>

 修改member/index.php 中的代碼

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

39

40

41

42

43

44

45

46

47

48

49

50

51

52

53

54

55

56

57

58

59

60

61

62

63

64

65

66

67

68

69

70

71

72

73

74

75

<code>/**</code>

<code>     </code><code>* 盛大通行證登陸  自己修改為人人登陸接口</code>

<code>     </code><code>*/</code>

<code>function</code> <code>public_snda_login() {</code>

<code>        </code><code>define(</code><code>‘SNDA_AKEY‘</code><code>, pc_base::load_config(</code><code>‘system‘</code><code>,</code><code>‘snda_akey‘</code><code>));</code>

<code>        </code><code>define(</code><code>‘SNDA_SKEY‘</code><code>, pc_base::load_config(</code><code>‘system‘</code><code>,</code><code>‘snda_skey‘</code><code>));</code>

<code>        </code><code>define(</code><code>‘SNDA_CALLBACK‘</code><code>, urlencode(APP_PATH.</code><code>‘index.php?m=member&amp;c=index&amp;a=public_snda_login&amp;callback=1‘</code><code>));</code>

<code>        </code> 

<code>        </code><code>pc_base::load_app_class(</code><code>‘OauthSDK‘</code><code>,</code><code>‘‘</code>

<code>,0);</code>

<code>        </code><code>$this</code><code>-&gt;_session_start();    </code>

<code>        </code><code>if</code><code>(isset(</code><code>$_GET</code><code>[</code><code>‘callback‘</code><code>]) &amp;&amp; trim(</code><code>$_GET</code><code>[</code><code>‘callback‘</code><code>])) {</code>

<code>                    </code> 

<code>            </code><code>$o</code>

<code>=</code><code>new</code> <code>OauthSDK(SNDA_AKEY, SNDA_SKEY, SNDA_CALLBACK);</code>

<code>            </code><code>$code</code>

<code>=</code><code>$_REQUEST</code><code>[</code><code>‘code‘</code><code>];</code>

<code>            </code> 

<code>            </code><code>$accesstoken</code>

<code>=</code><code>$o</code><code>-&gt;getAccessToken(</code><code>$code</code><code>);</code>

<code>            </code><code>//var_dump($accesstoken[‘user‘][‘id‘]);exit();</code>

<code>            </code><code>if</code><code>(</code><code>is_numeric</code><code>(</code><code>$accesstoken</code><code>[</code><code>‘user‘</code><code>][</code><code>‘id‘</code><code>])) {</code>

<code>                </code><code>$userid</code>

<code>=</code><code>$accesstoken</code><code>[</code><code>‘user‘</code><code>][</code><code>‘id‘</code><code>];</code>

<code>                </code><code>$username</code>

<code>=</code><code>$accesstoken</code><code>[</code><code>‘user‘</code><code>][</code><code>‘name‘</code><code>];</code>

<code>            </code><code>}</code><code>else</code>

<code>                </code><code>showmessage(L(</code><code>‘login_failure‘</code><code>),</code><code>‘index.php?m=member&amp;c=index&amp;a=login‘</code><code>);</code>

<code>            </code><code>}</code>

<code>            </code><code>if</code><code>(!</code><code>empty</code><code>(</code><code>$userid</code><code>)) {</code>

<code>                </code><code>//檢查connect會員是否綁定,已綁定直接登入,未綁定提示注冊/綁定頁面</code>

<code>                </code><code>$where</code>

<code>=</code><code>array</code><code>(</code><code>‘connectid‘</code><code>=&gt;</code><code>$userid</code><code>,</code><code>‘from‘</code><code>=&gt;</code><code>‘renren‘</code><code>);</code>

<code>                </code><code>$r</code>

<code>=</code><code>$this</code><code>-&gt;db-&gt;get_one(</code><code>$where</code><code>);</code>

<code>                </code> 

<code>                </code><code>//connect使用者已經綁定本站使用者</code>

<code>                </code><code>if</code><code>(!</code><code>empty</code><code>(</code><code>$r</code><code>)) {</code>

<code>                    </code><code>//讀取本站使用者資訊,執行登入操作</code>

<code>                    </code><code>$password</code>

<code>=</code><code>$r</code><code>[</code><code>‘password‘</code><code>];</code>

<code>                    </code><code>$this</code><code>-&gt;_init_phpsso();</code>

<code>                    </code><code>$synloginstr</code>

<code>=</code><code>$this</code><code>-&gt;client-&gt;ps_member_synlogin(</code><code>$r</code><code>[</code><code>‘phpssouid‘</code><code>]);</code>

<code>                    </code><code>$userid</code>

<code>=</code><code>$r</code><code>[</code><code>‘userid‘</code><code>];</code>

<code>                    </code><code>$groupid</code>

<code>=</code><code>$r</code><code>[</code><code>‘groupid‘</code><code>];</code>

<code>                    </code><code>$username</code>

<code>=</code><code>$r</code><code>[</code><code>‘username‘</code><code>];</code>

<code>                    </code><code>$nickname</code>

<code>=</code><code>empty</code><code>(</code><code>$r</code><code>[</code><code>‘nickname‘</code><code>]) ?</code><code>$username</code>

<code>:</code><code>$r</code><code>[</code><code>‘nickname‘</code><code>];</code>

<code>                    </code><code>$this</code><code>-&gt;db-&gt;update(</code><code>array</code><code>(</code><code>‘lastip‘</code><code>=&gt;ip(),</code><code>‘lastdate‘</code><code>=&gt;SYS_TIME,</code><code>‘nickname‘</code><code>=&gt;</code><code>$me</code><code>[</code><code>‘name‘</code><code>]),</code><code>array</code><code>(</code><code>‘userid‘</code><code>=&gt;</code><code>$userid</code><code>));</code>

<code>                    </code><code>if</code><code>(!</code><code>$cookietime</code><code>)</code><code>$get_cookietime</code>

<code>= param::get_cookie(</code><code>‘cookietime‘</code><code>);</code>

<code>                    </code><code>$_cookietime</code>

<code>=</code><code>$cookietime</code>

<code>?</code><code>intval</code><code>(</code><code>$cookietime</code><code>) : (</code><code>$get_cookietime</code>

<code>?</code><code>$get_cookietime</code>

<code>: 0);</code>

<code>                    </code><code>$cookietime</code>

<code>=</code><code>$_cookietime</code>

<code>? TIME +</code><code>$_cookietime</code>

<code>: 0;</code>

<code>                    </code><code>$phpcms_auth_key</code>

<code>= md5(pc_base::load_config(</code><code>‘system‘</code><code>,</code><code>‘auth_key‘</code><code>).</code><code>$this</code><code>-&gt;http_user_agent);</code>

<code>                    </code><code>$phpcms_auth</code>

<code>= sys_auth(</code><code>$userid</code><code>.</code><code>"\t"</code><code>.</code><code>$password</code><code>,</code><code>‘ENCODE‘</code><code>,</code><code>$phpcms_auth_key</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘auth‘</code><code>,</code><code>$phpcms_auth</code><code>,</code><code>$cookietime</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘_userid‘</code><code>,</code><code>$userid</code><code>,</code><code>$cookietime</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘_username‘</code><code>,</code><code>$username</code><code>,</code><code>$cookietime</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘_groupid‘</code><code>,</code><code>$groupid</code><code>,</code><code>$cookietime</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘cookietime‘</code><code>,</code><code>$_cookietime</code><code>,</code><code>$cookietime</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘_nickname‘</code><code>,</code><code>$nickname</code><code>,</code><code>$cookietime</code><code>);</code>

<code>                    </code><code>param::set_cookie(</code><code>‘_from‘</code><code>,</code><code>‘snda‘</code><code>);</code>

<code>                    </code><code>$forward</code>

<code>= isset(</code><code>$_GET</code><code>[</code><code>‘forward‘</code><code>]) &amp;&amp; !</code><code>empty</code><code>(</code><code>$_GET</code><code>[</code><code>‘forward‘</code><code>]) ?</code><code>$_GET</code><code>[</code><code>‘forward‘</code><code>] :</code><code>‘index.php?m=member&amp;c=index‘</code><code>;</code>

<code>                    </code><code>showmessage(L(</code><code>‘login_success‘</code><code>).</code><code>$synloginstr</code><code>,</code><code>$forward</code><code>);</code>

<code>                </code><code>}</code><code>else</code>

<code>{               </code>

<code>                    </code><code>//彈出綁定注冊頁面</code>

<code>                    </code><code>$_SESSION</code>

<code>=</code><code>array</code><code>();</code>

<code>                    </code><code>$_SESSION</code><code>[</code><code>‘connectid‘</code><code>] =</code><code>$userid</code><code>;</code>

<code>                    </code><code>$_SESSION</code><code>[</code><code>‘from‘</code><code>] =</code><code>‘renren‘</code><code>;</code>

<code>                    </code><code>$connect_username</code>

<code>=</code><code>$username</code><code>;</code>

<code>                    </code><code>include</code>

<code>template(</code><code>‘member‘</code><code>,</code><code>‘connect‘</code><code>);</code>

<code>                </code><code>}</code>

<code>            </code><code>}  </code>

<code>=</code><code>$o</code><code>-&gt;getSystemToken();    </code>

<code>            </code><code>$aurl</code>

<code>=</code><code>$o</code><code>-&gt;getAuthorizeURL();</code>

<code>            </code><code>include</code>

<code>template(</code><code>‘member‘</code><code>,</code><code>‘connect_snda‘</code><code>);</code>