ホームページ バックエンド開発 PHPチュートリアル phpcms Weibo にログインした後は、セッション停止の詳細な説明が表示されますので、再度登録しないでください。

phpcms Weibo にログインした後は、セッション停止の詳細な説明が表示されますので、再度登録しないでください。

Mar 31, 2017 pm 03:37 PM

phpcms Weibo にログインした後、二度登録しないでください。そうしないと、セッションが古くなります。
そのアイデアは、Weibo にログインした後、ユーザーのニックネームとその他の情報をデータベースに直接書き込むというものです。登録されているかどうかを確認するために再度実行しますが、ログインが要求されます。成功すると、セッションが期限切れになったことを示すメッセージが表示されます。これは正常です。コードは少し長いので、確認してください。


1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

76

77

78

79

80

81

82

83

84

85

86

87

88

89

90

91

92

93

94

95

96

97

98

99

100

101

102

103

104

105

106

107

108

109

110

111

112

113

114

115

116

117

118

119

120

121

122

123

124

125

126

127

128

129

130

131

132

133

134

135

136

137

138

139

140

141

142

143

144

145

146

147

148

149

150

151

152

153

154

155

156

157

158

159

160

161

162

163

164

165

166

167

168

169

170

171

172

173

174

175

176

177

178

179

180

181

182

183

184

185

186

187

188

189

190

191

192

193

194

195

196

197

198

199

200

201

202

203

204

205

206

207

208

209

210

211

212

213

214

215

216

public function public_sina_login() {

        define('WB_AKEY', pc_base::load_config('system', 'sina_akey'));

        define('WB_SKEY', pc_base::load_config('system', 'sina_skey'));

        define('WEB_CALLBACK', APP_PATH.'index.php?m=member&c=index&a=public_sina_login&callback=1');

        pc_base::load_app_class('saetv2.ex', '' ,0);

        $this->_session_start();

 

        if(isset($_GET['callback']) && trim($_GET['callback'])) {

            $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);

            if (isset($_REQUEST['code'])) {

                $keys = array();

                $keys['code'] = $_REQUEST['code'];

                $keys['redirect_uri'] = WEB_CALLBACK;

                try {

                    $token = $o->getAccessToken('code', $keys);

                } catch (OAuthException $e) {

                }

            }

            if ($token) {

                $_SESSION['token'] = $token;

            }

            $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token'] );

            $ms  = $c->home_timeline(); // done

            $uid_get = $c->get_uid();

            $uid = $uid_get['uid'];

            $me = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息

            if(CHARSET != 'utf-8') {

                $me['name'] = iconv('utf-8', CHARSET, $me['name']);

                $me['location'] = iconv('utf-8', CHARSET, $me['location']);

                $me['description'] = iconv('utf-8', CHARSET, $me['description']);

                $me['screen_name'] = iconv('utf-8', CHARSET, $me['screen_name']);

            }

            if(!empty($me['id'])) {

                //检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面

                $where = array('connectid'=>$me['id'], 'from'=>'sina');

                $r = $this->db->get_one($where);

 

                //connect用户已经绑定本站用户

                if(!empty($r)) {

                    //读取本站用户信息,执行登录操作

 

                    $password = $r['password'];

                    $this->_init_phpsso();

                    $synloginstr = $this->client->ps_member_synlogin($r['phpssouid']);

                    $userid = $r['userid'];

                    $groupid = $r['groupid'];

                    $username = $r['username'];

                    $nickname = empty($r['nickname']) ? $username : $r['nickname'];

                    $this->db->update(array('lastip'=>ip(), 'lastdate'=>SYS_TIME, 'nickname'=>$me['name']), array('userid'=>$userid));

 

                    if(!$cookietime) $get_cookietime = param::get_cookie('cookietime');

                    $_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0);

                    $cookietime = $_cookietime ? TIME + $_cookietime : 0;

 

                    $phpcms_auth = sys_auth($userid."\t".$password, 'ENCODE', get_auth_key('login'));

 

                    param::set_cookie('auth', $phpcms_auth, $cookietime);

                    param::set_cookie('_userid', $userid, $cookietime);

                    param::set_cookie('_username', $username, $cookietime);

                    param::set_cookie('_groupid', $groupid, $cookietime);

                    param::set_cookie('cookietime', $_cookietime, $cookietime);

                    param::set_cookie('_nickname', $nickname, $cookietime);

                    $forward = isset($_GET['forward']) && !empty($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index';

                        showmessage(L('login_success').$synloginstr, $forward);

 

                } else {

                    //弹出绑定注册页面

                    $_SESSION = array();

                    $_SESSION['connectid'] = $me['id'];

                    $_SESSION['from'] = 'sina';

                    $connect_username = $me['name'];

                    //SELECT max(userid) maxid FROM user

 

                    $where="SELECT MAX(phpssouid) maxid FROM `v9_member` WHERE 1";

                    $info = $this->db->query($where);

                    $row = mysql_fetch_object($info);

                        //  $row =Myspl_fetch_array($info,MYSQL_NUM);

                    $maxid = $row->maxid;

                    $phpssouid = $maxid+1;

 

                    //写入数据库

                    $this->db->insert(array('nickname'=>$me['name'],'regip'=>ip(),'regdate'=>SYS_TIME,'img'=>$me['avatar_large'],'phpssouid'=>$phpssouid,'password'=>'','groupid' =>'2','lastdate'=>SYS_TIME, 'lastip'=>ip(),'connectid'=>$me['id'],'from'=>'sina'));

 

                    //加载用户模块配置

                    $member_setting = getcache('member_setting');

                    if(!$member_setting['allowregister']) {

                        showmessage(L('deny_register'), 'index.php?m=member&c=index&a=login');

                    }

 

 

                    //获取用户siteid

                    $siteid = isset($_REQUEST['siteid']) && trim($_REQUEST['siteid']) ? intval($_REQUEST['siteid']) : 1;

                    //过滤非当前站点会员模型

                    $modellist = getcache('member_model', 'commons');

                    foreach($modellist as $k=>$v) {

                        if($v['siteid']!=$siteid || $v['disabled']) {

                            unset($modellist[$k]);

                        }

                    }

                    if(empty($modellist)) {

                        showmessage(L('site_have_no_model').L('deny_register'), HTTP_REFERER);

                    }

 

                    $modelid = 10; //设定默认值

                    if(array_key_exists($modelid, $modellist)) {

                        //获取会员模型表单

                        require CACHE_MODEL_PATH.'member_form.class.php';

                        $member_form = new member_form($modelid);

                        $this->db->set_model($modelid);

                        $forminfos = $forminfos_arr = $member_form->get();

 

                        //万能字段过滤

                        foreach($forminfos as $field=>$info) {

                            if($info['isomnipotent']) {

                                unset($forminfos[$field]);

                            } else {

                                if($info['formtype']=='omnipotent') {

                                    foreach($forminfos_arr as $_fm=>$_fm_value) {

                                        if($_fm_value['isomnipotent']) {

                                            $info['form'] = str_replace('{'.$_fm.'}',$_fm_value['form'], $info['form']);

                                        }

                                    }

                                    $forminfos[$field]['form'] = $info['form'];

                                }

                            }

                        }

 

                        //$formValidator = $member_form->formValidator;

 

 

 

                        //zaizai再次调用

                        define('WB_AKEY', pc_base::load_config('system', 'sina_akey'));

                        define('WB_SKEY', pc_base::load_config('system', 'sina_skey'));

                        define('WEB_CALLBACK', APP_PATH.'index.php?m=member&c=index&a=public_sina_login&callback=1');

                        pc_base::load_app_class('saetv2.ex', '' ,0);

                        $this->_session_start();

                            $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);

                            if (isset($_REQUEST['code'])) {

                                $keys = array();

                                $keys['code'] = $_REQUEST['code'];

                                $keys['redirect_uri'] = WEB_CALLBACK;

                                try {

                                    $token = $o->getAccessToken('code', $keys);

                                } catch (OAuthException $e) {

                                }

                            }

                            if ($token) {

                                $_SESSION['token'] = $token;

                            }

                            $c = new SaeTClientV2(WB_AKEY, WB_SKEY, $_SESSION['token']['access_token'] );

                            $ms  = $c->home_timeline(); // done

                            $uid_get = $c->get_uid();

                            $uid = $uid_get['uid'];

                            $me = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息

                            if(CHARSET != 'utf-8') {

                                $me['name'] = iconv('utf-8', CHARSET, $me['name']);

                                $me['location'] = iconv('utf-8', CHARSET, $me['location']);

                                $me['description'] = iconv('utf-8', CHARSET, $me['description']);

                                $me['screen_name'] = iconv('utf-8', CHARSET, $me['screen_name']);

                            }

                            if(!empty($me['id'])) {

                                //检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面

//                              $where = array('connectid' => $me['id'], 'from' => 'sina');

//                              $r = $this->db->get_one($where);

 

                                $where = " SELECT * FROM `phpcms`.`v9_member` WHERE `connectid` = ".$me['id']." AND `from` = 'sina' LIMIT 1 ";

                                $r = $this->db->query($where);

 

 

 

                                //connect用户已经绑定本站用户

                                if (!empty($r)) {

                                    //读取本站用户信息,执行登录操作

 

                                    $password = $r['password'];

                                    $this->_init_phpsso();

                                    $synloginstr = $this->client->ps_member_synlogin($r['phpssouid']);

                                    $userid = $r['userid'];

                                    $groupid = $r['groupid'];

                                    $username = $r['username'];

                                    $nickname = empty($r['nickname']) ? $username : $r['nickname'];

                                    //$this->db->update(array('lastip' => ip(), 'lastdate' => SYS_TIME, 'nickname' => $me['name']), array('userid' => $userid));

 

                                    if (!$cookietime) $get_cookietime = param::get_cookie('cookietime');

                                    $_cookietime = $cookietime ? intval($cookietime) : ($get_cookietime ? $get_cookietime : 0);

                                    $cookietime = $_cookietime ? TIME + $_cookietime : 0;

 

                                    $phpcms_auth = sys_auth($userid . "\t" . $password, 'ENCODE', get_auth_key('login'));

 

                                    param::set_cookie('auth', $phpcms_auth, $cookietime);

                                    param::set_cookie('_userid', $userid, $cookietime);

                                    param::set_cookie('_username', $username, $cookietime);

                                    param::set_cookie('_groupid', $groupid, $cookietime);

                                    param::set_cookie('cookietime', $_cookietime, $cookietime);

                                    param::set_cookie('_nickname', $nickname, $cookietime);

                                    $forward = isset($_GET['forward']) && !empty($_GET['forward']) ? $_GET['forward'] : 'index.php?m=member&c=index';

                                    showmessage(L('login_success') . $synloginstr, $forward);

 

                                }

 

                            }

 

 

                    }

                    include template('member', 'connect');

                }

            } else {

                showmessage(L('login_failure'), 'index.php?m=member&c=index&a=login');

            }

        } else {

            $o = new SaeTOAuthV2(WB_AKEY, WB_SKEY);

            $aurl = $o->getAuthorizeURL(WEB_CALLBACK);

            include template('member', 'connect_sina');

        }

    }

ログイン後にコピー
phpcms Weibo にログインした後は、セッション停止の詳細な説明が表示されますので、再度登録しないでください。

返信内容:

コードから判断すると、何行目ですか?

私は判断しませんでした、私は彼自身のコードを使用しましたアイデアは次のとおりです:デフォルトは一度判断することです //接続メンバーがバインドされているかどうかを確認し、バインドされている場合は直接ログインします。カスタム ページ

がバインドされている場合は、直接ログインしてください。
がバインドされていない場合は、データベースに書き込んだ後に判定を呼び出します (つまり、判定をコピーします)。コードを一度だけ)、この時点までにバインドされるはずですが、応答が期限切れであることを通知するメッセージが表示されます...

上記は、ログイン後のセッションの期限切れの詳細な説明です。 phpcms Weibo、二度登録しないでください。PHP 中国語 Web サイト (www.php.cn) の関連コンテンツに注意してください。


このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

phpcmsとはどのようなフレームワークですか? phpcmsとはどのようなフレームワークですか? Apr 20, 2024 pm 10:51 PM

PHP CMS は、Web サイトのコンテンツを管理するための PHP ベースのオープンソース コンテンツ管理システムであり、使いやすさ、強力な機能、拡張性、高いセキュリティ、無料のオープンソースが特徴です。時間を節約し、Web サイトの品質を向上させ、コラボレーションを強化し、開発コストを削減することができ、ニュース Web サイト、ブログ、企業 Web サイト、電子商取引 Web サイト、コミュニティ フォーラムなどのさまざまな Web サイトで広く使用されています。

phpcmsで詳細ページに飛ぶ方法 phpcmsで詳細ページに飛ぶ方法 Jul 27, 2023 pm 05:23 PM

phpcms で詳細ページにジャンプする方法: 1. header 関数を使用してジャンプ リンクを生成します; 2. コンテンツ リストをループします; 3. コンテンツのタイトルと詳細ページのリンクを取得します; 4. ジャンプ リンクを生成します。

WeChat ログイン統合ガイド: PHPCMS 実践的な戦闘 WeChat ログイン統合ガイド: PHPCMS 実践的な戦闘 Mar 29, 2024 am 09:18 AM

タイトル: WeChat ログイン統合ガイド: PHPCMS の実践 今日のインターネット時代において、ソーシャル ログインは Web サイトの重要な機能の 1 つになりました。中国で最も人気のあるソーシャル プラットフォームの 1 つである WeChat のログイン機能は、ますます多くの Web サイトでも使用されています。この記事では、WeChat ログイン機能を PHPCMS Web サイトに統合する方法と、具体的なコード例を紹介します。ステップ 1: WeChat オープン プラットフォーム アカウントを登録する まず、WeChat オープン プラットフォームに開発者アカウントを登録し、対応する開発権限を申請する必要があります。ログイン [WeChatオープンプラットフォーム]

2023 年の最新の phpcms ビデオ チュートリアルの推奨事項 (二次開発のために学習する必要があります) 2023 年の最新の phpcms ビデオ チュートリアルの推奨事項 (二次開発のために学習する必要があります) Oct 25, 2019 pm 03:45 PM

多くの Web マスターが二次開発や Web サイト構築に PHPCMS を使用しています。PHP 中国語 Web サイトでは特別に phpcms ビデオ チュートリアルを公開しています。Baidu Netdisk からダウンロードすることなく、いつでもどこでもビデオ チュートリアルを無料で視聴でき、非常に便利です。

phpcmsにコメント機能はありますか? phpcmsにコメント機能はありますか? Feb 16, 2023 am 10:06 AM

phpcmsにはコメント機能があります。 phpcms の組み込みのコメント モジュールは、Web サイト訪問者が自分の意見を投稿する機能を提供し、訪問者同士が対話して意見を交換できるようにして、Web サイトの人気を高めます。 PHPCMSのユーザーがメッセージを残すコメント機能には、コメント内に禁止語が含まれないように監査する機能も追加された。 Web サイト管理者にとって、PHPCMS のコメント モジュールはユーザーのコメントを簡単に管理でき、時間、キーワード、レビュー、その他の条件に基づいてメッセージの内容を検索して管理できます。

phpcms はどのデータベースを使用しますか? phpcms はどのデータベースを使用しますか? Feb 21, 2023 pm 06:57 PM

phpcms は mysql データベースを使用します。 phpcms は、PHP + MYSQL を技術基盤として使用して開発された PHP オープンソース Web サイト管理システムです。 PHPCMS V9 は基本的な動作フレームワークの構築に OOP 方式を採用しており、サポートされる PHP バージョンは PHP5 以降、サポートされる MYSQL バージョンは MySql 4.1 以降です。

phpcms で WeChat ログインを実装する方法 phpcms で WeChat ログインを実装する方法 Mar 09, 2023 am 09:33 AM

phpcms で WeChat ログインを実装する方法: 1. ルート ディレクトリに新しい「wechat.php」を作成します; 2. 「\phpcms\modules\member\index.php」の下に「public function wechat() {...}」を追加します。 "; 3. . "foreground.class.php" ファイルの wechat 関数を使用して、ユーザーがログインしているかどうかを判断するだけです。

phpcmsでサイト名を変更する方法 phpcmsでサイト名を変更する方法 Feb 24, 2023 am 09:29 AM

phpcms でサイト名を変更する方法: 1. 管理者を使用してバックエンド ページにログインします; 2. 上部のメニュー バーで [設定] オプションを見つけてクリックし、メニューの [サイト管理] を見つけます。左; 3. サイトを変更する必要がある項目を見つけて、サイトのドメイン名の右側にある変更リンクをクリックします; 4. ポップアップ ウィンドウでサイト名を変更します。

See all articles