Maison développement back-end tutoriel php phpcms微博登陆后,不要二次注册,出现会话过时的详解

phpcms微博登陆后,不要二次注册,出现会话过时的详解

Mar 31, 2017 pm 03:37 PM

phpcms微博登陆后,不要二次注册,出现会话过时,
思路是 微博登录后,直接把用户昵称等写入数据库,
然后再执行一次,判断是否注册过,但是提示登录成功之后,总提示一次会话过期.再次登录后正常.
代码有点长,麻烦看下.

1354.png

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');
		}
	}
Copier après la connexion

回复内容:

会话过期 你是在那一行代码判断的?

我没去判断,我用的他自带的代码
思路是:
默认是判断  一次       //检查connect会员是否绑定,已绑定直接登录,未绑定提示注册/绑定页面

如果已经绑定,则直接登录,
没绑定,我会在写入数据库后,在调用一次判断(就是把判断的代码在复制过来一次,),这时候应该已经绑定了,他还是会在提示一次回话过期呢...  

 以上就是phpcms微博登陆后,不要二次注册,出现会话过时的详解的内容,更多相关内容请关注PHP中文网(www.php.cn)!


Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Meilleurs paramètres graphiques
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Comment réparer l'audio si vous n'entendez personne
3 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Comment déverrouiller tout dans Myrise
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Quel framework est phpcms ? Quel framework est phpcms ? Apr 20, 2024 pm 10:51 PM

PHP CMS est un système de gestion de contenu open source basé sur PHP pour gérer le contenu de sites Web. Ses fonctionnalités incluent la facilité d'utilisation, des fonctionnalités puissantes, l'évolutivité, une haute sécurité et un open source gratuit. Il permet de gagner du temps, d'améliorer la qualité des sites Web, d'améliorer la collaboration et de réduire les coûts de développement. Il est largement utilisé dans divers sites Web tels que les sites Web d'actualités, les blogs, les sites Web d'entreprise, les sites Web de commerce électronique et les forums communautaires.

Comment accéder à la page de détails dans phpcms Comment accéder à la page de détails dans phpcms Jul 27, 2023 pm 05:23 PM

Comment accéder à la page de détails dans phpcms : 1. Utilisez la fonction d'en-tête pour générer un lien de saut ; 2. Parcourez la liste de contenu ; 3. Obtenez le lien de la page de titre et de détails du contenu ;

Guide d'intégration de connexion WeChat : Combat pratique PHPCMS Guide d'intégration de connexion WeChat : Combat pratique PHPCMS Mar 29, 2024 am 09:18 AM

Titre : Guide d'intégration de la connexion WeChat : PHPCMS en action À l'ère d'Internet d'aujourd'hui, la connexion sociale est devenue l'une des fonctions essentielles d'un site Web. En tant que l’une des plateformes sociales les plus populaires en Chine, la fonction de connexion de WeChat est également utilisée par de plus en plus de sites Web. Cet article expliquera comment intégrer la fonction de connexion WeChat dans le site Web PHPCMS et fournira des exemples de code spécifiques. Étape 1 : Enregistrez un compte WeChat Open Platform Tout d'abord, nous devons enregistrer un compte de développeur sur WeChat Open Platform et demander les autorisations de développement correspondantes. Connectez-vous [Plateforme ouverte WeChat]

Que signifie phpcms ? Que signifie phpcms ? Apr 20, 2024 pm 10:39 PM

PHPCMS est un système de gestion de contenu (CMS) gratuit et open source qui propose : open source, modularité, flexibilité, convivialité et support communautaire. Il peut être utilisé pour créer différents types de sites Web, notamment des sites Web d'entreprise, des sites Web de commerce électronique, des blogs et des forums communautaires. Les exigences techniques incluent : PHP 5.6 ou supérieur, base de données MySQL, MariaDB ou PostgreSQL et serveur Web Apache ou Nginx.

Est-ce que phpcms n'est pas gratuit ? Est-ce que phpcms n'est pas gratuit ? Mar 01, 2023 am 10:24 AM

phpcms n'est pas totalement gratuit. phpcms est un système cms open source, mais open source ne signifie pas gratuit. Il existe en deux versions : la version gratuite et la version commerciale. La version gratuite est limitée à un usage personnel non commercial, tandis que la version commerciale nécessite l'achat d'une licence par les particuliers. utilisez-le pour la recherche, et s’il s’agit d’une application commerciale, vous devez payer certains frais.

Quelles versions de phpcms existe-t-il ? Quelles versions de phpcms existe-t-il ? Jun 14, 2023 pm 01:13 PM

Il existe deux versions bien connues de phpcms, à savoir : 1. phpCMS4, qui prend en charge les règles d'URL personnalisées. L'arrière-plan de gestion du site Web est beau et facile à utiliser, et dispose de nombreux plug-ins frontaux, qui peuvent étendre librement les fonctions. .phpCMS2008R1, qui prend en charge la gestion multilingue et multi-sites et le gestionnaire de pages est pratique, flexible, très léger et fonctionne rapidement.

Quelle base de données phpcms utilise-t-il ? Quelle base de données phpcms utilise-t-il ? Feb 21, 2023 pm 06:57 PM

phpcms utilise la base de données MySQL. phpcms est un système de gestion de site Web open source PHP, développé en utilisant PHP+MYSQL comme base technique. PHPCMS V9 adopte la méthode POO pour créer le cadre d'exploitation de base. La version PHP prise en charge est PHP5 et supérieure, et la version MYSQL prise en charge est MySql 4.1 et supérieure.

Comment changer le nom du site dans phpcms Comment changer le nom du site dans phpcms Feb 24, 2023 am 09:29 AM

Comment modifier le nom du site dans phpcms : 1. Utilisez l'administrateur pour vous connecter à la page backend ; 2. Recherchez l'option "Paramètres" dans la barre de menu supérieure et cliquez dessus, puis recherchez "Gestion du site" dans le menu du à gauche ; 3. Recherchez l'élément qui doit être modifié, cliquez sur le lien Modifier à droite du nom de domaine du site. 4. Modifiez le nom du site dans la fenêtre contextuelle ;

See all articles