说明:此设计仅为我个人简单的制作。没有考虑安全因素、bug、效率等。仅限于学习本地会员同步新浪微博登陆。

附:伸手党可到csdn资源下载源码。包含源码文件、数据库文件以及使用方法

csdn资源下载网址:http://download.csdn.net/detail/x171306523c/4957607

1、先设计了一个简单的mysql数据库表

CREATE TABLE IF NOT EXISTS `user2` (`id` int(5) NOT NULL AUTO_INCREMENT,`api` int(1) NOT NULL DEFAULT '0',`username` varchar(128) NOT NULL,`passwd` varchar(32) NOT NULL,`access_token` varchar(32) NOT NULL,PRIMARY KEY (`id`),UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=1 ;

id为主键,不用说了

api记录是不是微博用户以及时哪个微博。比如规定api=0不是微博用户。api=1新浪微博用户。api=2腾讯微博。api=3 QQ账号

username用户名

passwd密码

access_token微博的access_token是微博用户,则记录微博的access_token值


2、文件目录


3.1、数据库连接文件conn.php

<?php
header('Content-Type: text/html; charset=UTF-8');
mysql_connect("127.0.0.1","root","");//这是我的数据库地址、用户名、密码
mysql_select_db("zzz");//这是我的数据库名
mysql_query("set names 'utf-8'");
session_start();
?>


3.2、index.html两个文件入口,一个是登录,一个是注册

<a href="login.php">login</a><br>
<a href="reg.php">reg</a>


3.3、login.php登录、退出页面

<?php
session_start();include("conn.php");if(!empty($_POST['sub'])){$u = trim($_POST['user']);$p = md5($_POST['pass']);   $sql="select * from user2 where `username`='$u' && `passwd`='$p'";$query=mysql_query($sql);$rs = mysql_fetch_array($query);if($rs[0]){$_SESSION['uid']=$rs['id'];echo "<script>alert('登陆成功');location.href='my.php'</script>";}else{echo "登陆失败";}}//==================退出登录if($_GET['action'] == "logout"){unset($_SESSION['uid']);echo '注销登录成功!点击此处 <a href="login.php">登录</a>';exit;}//已经是登录状态if ($_SESSION['uid']){echo "您已经登录,请进入<a href='my.php'>用户中心</a>";}else {echo "<form action='' method='post'>用户<input type='text' name='user' ><br>密码<input type='password' name='pass'> <br><input type='submit' name='sub' value='login'></form><a href='weibo/'>使用微博账号登陆</a><br><br><a href='reg.php'>还没有注册?点击此处</a>";}?>

有三种情况

一、正常登录,点击按钮后检测用户名、密码是否正确,正确则跳转到用户中心页面,否则提示错误

二、退出,action==logout时销毁$_SESSION['uid'],退出成功

三、已经是登录状态,又进入到login.php页面,提示已是登录状态


3.4、my.php用户中心

<?phpinclude("conn.php");if(!empty($_SESSION['uid'])){$sql="select * from user2 where id='".$_SESSION['uid']."'";$query=mysql_query($sql);$rs = mysql_fetch_array($query);echo "欢迎".$rs['username']."登陆成功!<br> 我的md5密码是:".$rs['passwd']."<a href=login.php?action=logout>退出</a><br><br>";if (empty($rs['access_token'])){echo "<a href='weibo'>绑定微博</a>";}else {echo "已经绑定微博";}}else{echo "登陆失败,请重新<a href=login.php>登陆</a>";}?>

判断$_SESSION['uid']是否为空,空则没有登录,否则为登录

判断$rs['access_token']是否为空,为空则没有绑定微博,否则为已经绑定了微博


3.5、reg.php注册页面

<?php
session_start();include("conn.php");if(!empty($_POST['sub'])){$u = trim($_POST['user']);$p = md5($_POST['pass']);   $sql_1 = "INSERT INTO `zzz`.`user2` (`username`, `passwd`";//INSERT INTO `zzz`.`user2` (`username`, `passwd`) VALUES ('$u', '$p')if ($_GET['reg'] == "api"){$sql_2 = ", `api`, `access_token`";$access_token = $_SESSION['token']['access_token'];$sql_3 = ", '1', '$access_token'";}else {$sql_2 = "";$sql_3 = "";}$sql = $sql_1.$sql_2.") VALUES ('$u', '$p'".$sql_3.")";//echo $sql;$query=mysql_query($sql);if($query){$log_sql="select * from user2 where `username`='$u' && `passwd`='$p'";$log_query=mysql_query($log_sql);$log_rs = mysql_fetch_array($log_query);$_SESSION['uid']=$log_rs['id'];echo "<script>alert('注册成功');location.href='my.php'</script>";}else{echo "注册失败";}} if ($_GET['reg'] == "api"){$weibo_reg = " style=\"display:none\"\;";echo "您好!".$_GET['username']."<br>";}?>
<form action="" method="post">
用户<input type="text" name="user" value="<?php echo $_GET['username']?>" ><br>
密码<input type="password" name="pass"> <br>
<input type="submit" name="sub" value="reg">
</form>
<a<?php echo $weibo_reg;?> href='weibo/index.php?do=reg'>使用微博账号注册</a>

注册分为2种,1、网站注册,2、微博注册

4、weibo文件夹为新浪api的sdk。可从网上下载

下载地址 http://open.weibo.com/wiki/SDK    选择PHP SDK下载即可


4.1、callback.php没有修改。


4.2、config.php  将WB_AKEY、WB_SKEY、WB_CALLBACK_URL设置成自己的即可

define( "WB_AKEY" , '**********' );
define( "WB_SKEY" , '*****************************' );
define( "WB_CALLBACK_URL" , 'http://***************/callback.php' );

申请地址:http://open.weibo.com/index.php

登陆后点管理中心→添加网站→输入相应的信息后选择验证方式,通过验证后得到App Key、App Secret、

WB_CALLBACK_URL为下载的sdk里的callback.php文件所在的url


4.3、index.php

因为考虑到微博注册,所以我将$_SESSION['do']赋值为reg

在 include_once( 'saetv2.ex.class.php' ); 下面添加如下代码

if ($_GET['do'] == "reg"){$_SESSION['do'] = "reg";
}


4.4、saetv2.ex.class.php没有修改


4.5、weibolist.php可以复制weibolist.php并改文件名为weibolist.php.bak作为备份

<?php
header("Content-type:text/html;charset=utf-8");
session_start();
include("../conn.php");
include_once( 'config.php' );
include_once( 'saetv2.ex.class.php' );$sql = "select * from `user2` where `access_token` = '{$_SESSION['token']['access_token']}'";
$res = mysql_query($sql);
$row = mysql_fetch_array($res);//使用微博登陆
if (!empty($row['access_token']) && empty($_SESSION['uid'])){//!empty($row['access_token'])该微博已经绑定了账号,empty($_SESSION['uid'])没有使用账号登录        使用微博登陆$_SESSION['uid'] = $row['id'];header("Location: ../my.php");exit;
}else if (!empty($row['access_token']) && !empty($_SESSION['uid'])){//该微博已经绑定过了echo "该微博已经绑定了其他账号。绑定失败!<a href=\"../my.php\">返回用户中心</a>";
}else if (empty($row['access_token']) && !empty($_SESSION['uid'])){//微博账号没有绑定并且使用了本地账号登录//进行绑定$bd_sql = "update `user2` set `access_token` = '{$_SESSION['token']['access_token']}', `api` = '1' where `id`={$_SESSION['uid']}";mysql_query($bd_sql);header("Location: ../my.php");exit;
}else if (empty($row['access_token']) && empty($_SESSION['uid']) && $_SESSION['do'] == "reg"){//微博没有绑定并且本地账号没有登录,使用微博注册unset($_SESSION['do']);$c = new SaeTClientV2( WB_AKEY , WB_SKEY , $_SESSION['token']['access_token'] );$c->set_debug( DEBUG_MODE );$uid_get = $c->get_uid();$uid = $uid_get['uid'];$user_message = $c->show_user_by_id( $uid);//根据ID获取用户等基本信息header("Location: ../reg.php?reg=api&username=".$user_message['screen_name']);exit;
}else if (empty($row['access_token']) && empty($_SESSION['uid'])){//微博没有绑定并且本地账号没有登录echo "用户不存在,<a href=\"../login.php\">返回登录页面进行注册</a>".$_SESSION['do'];
}?>

五种情况(我暂时考虑到五种)

第一:使用微博登陆,即$row['access_token']不为空,$_SESSION['uid']为空

第二:绑定微博,使用本地会员登陆,但是微博已经于其他账号绑定,绑定失败。即empty($row['access_token']不为空,empty($_SESSION['uid']不为空

第三:绑定微博,使用本地会员登陆,微博没有绑定其它护院,绑定成功。即empty($row['access_token']为空,empty($_SESSION['uid']不为空

第四:使用微博注册,即$row['access_token']为空,empty($_SESSION['uid']为空,$_SESSION['do']为reg(4.3的index.php赋的值)

第五:微博登陆,但是该微博没有绑定本地账号。$row['access_token']为空,$_SESSION['uid']为空


附:伸手党可到csdn资源下载源码。包含源码文件、数据库文件以及使用方法

csdn资源下载网址:http://download.csdn.net/detail/x171306523c/4957607

转载于:https://www.cnblogs.com/xcxc/archive/2013/01/04/2844129.html

本地会员与新浪微博api绑定和同步登陆相关推荐

  1. Django开发中整合新浪微博API

    原文链接:http://qinxuye.me/article/sina-weibo-api-in-developing-diango/ Update:如果想了解更多第三方帐号登录,请看这篇文章. 随着 ...

  2. 山寨新浪微博客户端与新浪微博API调用的总结

    这次是我第一次写的项目总结,虽然这只是一个小项目,但确实是获益良多.虽然说是独立完成,但其实在做的过程中,也有和大家交流了很多意见.尽管如此,我对这个尚不能算写好的项目,还是有非常多的不满意.不过碍于 ...

  3. 使用新浪微博API:创建SDK

    From https://www.liaoxuefeng.com/article/00137389308005720bf24cb6cf14d9e897e7026dbc6a842000 新浪微博无疑是中 ...

  4. PHPStorm 配置远程服务器文件夹在本地windows镜像,实现代码自动同步(类似于Samba架构文件同步功能)

    场景介绍: 这是一种类似samba架构,也和 filezilla+xshell 模式相类似的代码文件同步的模式,但是却更加优雅,也更加方便简洁. 环境介绍: 本地windows端:编辑器phpstor ...

  5. 完整的Android 新浪微博api调用DEMO

    第一次使用请在程序中的指定位置放入你的app key 如果不知道怎么获取appkey,请登录 http://open.weibo.com/development 不懂新浪微博api干嘛用,还是登录 h ...

  6. 新浪微博API使用方法

    2012.7.4注:好多人反映按照日志中的方法做不能出结果,不知道是不是新浪微博的API变了,貌似日志中提到的方法和解决办法都不行了--这是我寒假时写的,可能有些过时了.建议看一下官方文档和开发者论坛 ...

  7. Java调用 新浪微博API 接口发微博(包含js微博组件、springMVC新浪登录)详解

    参考自:http://www.myexception.cn/program/1930025.html https://blog.csdn.net/qq_36580777/article/details ...

  8. 新浪微博PC客户端(DotNet WinForm C# 版,C#调用新浪微博API代码,源码下载)—— 初探 (第二部分内置链接)

    第二篇:新浪微博PC客户端(DotNet WinForm版)--功能实现分解介绍 C#源码下载 最近兴趣使然尝试了一下使用DotNet技术实现新浪微博PC客户端,几天时间,目前实现登录.微博列表.发布 ...

  9. 新浪微博API[赞]接口和[取消赞]接口

    2019独角兽企业重金招聘Python工程师标准>>> 新浪微博API[赞]接口和[取消赞]接口 博客分类: java 获取方式:GET 点赞:https://api.weibo.c ...

最新文章

  1. 导入导出 SAPSCRIPT 的程序
  2. 如何设置网件gs108e_硬核评测!Wi-Fi 6 到底有多快,如何更快?
  3. 083_JavaScript Cookies
  4. dbartisan mysql_Sybase数据库安全
  5. comet4j开发指南
  6. [codevs 1343] 蚱蜢(省队选拔赛湖南)
  7. 最受欢迎的5大Linux发行版
  8. 搜狗浏览器怎么实现图标旋转 搜狗浏览器实现图标旋转的方法
  9. 理解SVG的viewport,viewBox【1】
  10. 使用SQL数据库在Python中执行CRUD操作
  11. RHEL 6.5----haproxy实现负载均衡
  12. C语言的变量作用域及头文件
  13. Linux缓存机制之块缓存
  14. centos双网卡不能同时工作解决
  15. 解决网页中一直点击出现蓝色背景问题
  16. HTML5 data-* 自定义属性及其注意点
  17. VS编译错误:mt.exe : general error c101008d: Failed to write the updated manifest to the resource of file
  18. 书单素材怎么找?教你寻找方法
  19. 办公族如何防治鼠标手?
  20. 基于SSM酒店管理系统

热门文章

  1. 十字星战法 出手便是强势股 出手必赢,炒股新手入门知识
  2. python爬取《三国演义》小说统计词频生成词云图
  3. 你的网络平台安全吗?TikTok爆20.5亿条用户数据泄露?
  4. C++程序调试方法:
  5. HTTPS 的传输过程
  6. linux的输出重定向
  7. Android开源项目:贴纸标签相机,快给你的图片贴上贴纸打上标签吧!~
  8. 小学计算机课程评价,浅谈信息技术在小学课程教学评价中的意义
  9. java随机生成电话号,邮箱,姓名
  10. LibreNMS 网络地图