zoukankan      html  css  js  c++  java
  • 使用QQ登录商城

    网站必须上线-》注册验证

      1. 注册域名-》万网

      2 有台服务器-》租服务器【阿里云】【LINUX cente OS 7.0】——》root的密码

     3  使用软件远程连接到LINUX服务器【putty】
     4 在LINUX下 安装LAMP | lnmp环境

      http://www.lnmp.org/   一键安装

     5     ifconfig 查看IP 

         在注册域名的网站后台把域名绑定到这个阿里云的服务器的IP地址上

               echl     ------------

       6 把代码上传到服务器上【使用FTP软件上传】 【先把代码压缩,上传到服务器上再解压】

      7 导入数据库  

         在Linux上 进入MYSQL  登录  创建数据库,导入代码

         SOURCE  /home/wwwroot/www.40.com/data.sql

     8 修改程序的配置文件

      9  访问域名

           在Linux下 执行指令为 Runtime 分配可写的权限

     chmod  -R 777  ./www.40.com/

         chmod  -R 777  ./Application/Runtime/

     -----------------------------------------------------------

      在qq网站注册进去  要在页头加《meta标签》这个代码才能通过

     填写回调地址

     下载开发代码

     SDK文档

      解压放到根目录,上传到服务器

     修改QQ配置文件 comm/config.php

      放入 key id   修改回调地址

     修改登录页面的QQ图标按钮,当点击时弹出登录的窗口【直接复制DEMO中的代码】 

    修改登录页面

    <div class="coagent mt15">
    <dl>
    <dt>使用合作网站登录商城:</dt>
    <dd class="qq"><a onclick='window.open("/qqlogin/oauth/qq_login.php","TencentLogin","width=450,height=320,menubar=0,scrollbars=1, resizable=1,status=1,titlebar=0,toolbar=0,location=1");' href="javascript:void(0);"><span></span>QQ</a></dd>
    <dd class="weibo"><a href=""><span></span>新浪微博</a></dd>
    <dd class="yi"><a href=""><span></span>网易</a></dd>
    <dd class="renren"><a href=""><span></span>人人</a></dd>
    <dd class="qihu"><a href=""><span></span>奇虎360</a></dd>
    <dd class=""><a href=""><span></span>百度</a></dd>
    <dd class="douban"><a href=""><span></span>豆瓣</a></dd>
    </dl>
    </div>

     当点击头像就会QQ登录,成功之后就会跳到前面配置的回调地址中

     调到qq callback文件之后调用了两个函数

        调用了两个QQ的接口,为了获取当前登陆的QQ的openID【加密之后的QQ号】,然后把openid 保存到session 中

       接下来需要把OPENID和我们网站中的一个账号关联起来

     关闭QQ登陆小窗口,修改回调文件登录之后调到我们的网站中

     echo "<script>opener.location.href='/index.php/Home/Member/qqlogin';window.close();</script>";

        打开会员控制器,建一个QQ登录方法

     修改会员表 添加一个ID

    alter table p40_member add openid char(32)  not null default '' comment 'openid';

    /************会员表***********/
    drop table if exists p40_member;
    create table p40_member
    (
    id mediumint unsigned not null auto_increment comment 'Id',
    username varchar(30) not null comment '用户名',
    password char(32) not null comment '密码',
    face varchar(150) not null default '' comment '头像',
    jifen mediumint unsigned not null default '0' comment'积分',
    openid char(32) not null default '' comment 'openid',
    primary key (id)
    )engine=InnoDB default charset=utf8 comment '会员';

    ------------------------------------

      qqlogin中的代码

       A 修改原会员模型把登录改成可以不用密码登录【只有在QQ登录时使用 这个功能】

    public function qqlogin()
    {
    /*****先查询这个QQ对应的账号*****/
    $memberModel=D('Admin/Member');
    $member=$memberModel->field('username')->where(array(
    'openid' =>$_SESSION['openid'],
    ))->find();

    //如果有这个关联账号直接让这个账号登陆
    if($member)
    {
    $memberModel->$member['username'];
    if($memberModel->login(FALSE))
    {
    $returnUrl=U('/'); //默认地址

    //如果session 有就跳到这个地址
    $ru=session('returnUrl');
    if($ru)
    {
    session('returnUrl',null);
    $returnUrl=$ru;
    }
    $this->success('登录成功!', $returnUrl);
    exit;
    }
    }
    else
    {
    $this->error($memberModel->getError());
    }
    }

       

       

      ---------------------------

    else
    {
    //如果QQ号还没有关联账号那么就引导会员绑定一个账号;
    redirect(U('login'));

    }

     修改登录页面

    <!-- 登录主体部分start -->
    <div class="login w990 bc mt10">
    <div class="login_hd">
    <h2>
    <?php if(isset($_SESSION['openid'])): ?>
    请你用现有的账号登录完成QQ绑定
    <?php else: ?>
    用户登录
    <?php endif; ?>
    </h2>
    <b></b>
    </div>

    修改登录的代码

    //如果是QQ登录就绑定openid
    if(isset($_SESSION['openid']))
    {
    $this->where(array(
    'id'=>$user['id']
    ))->setField('openid',$_SESSION['openid']);
    unset($_SESSION['openid']);
    }

    如果会员还没有账号就先注册,所以修改注册的页面

    <!-- 登录主体部分start -->
    <div class="login w990 bc mt10 regist">
    <div class="login_hd">
    <h2>
    <?php if(isset($_SESSION['openid'])): ?>
    如果你还没有账号i请先注册一个账号然后完成QQ绑定
    <?php else: ?>
    用户注册
    <?php endif; ?>
    </h2>

     修改会员模型;

    protected function _before_insert(&$data, $option)
    {
    $data['password'] = md5($data['password']);
    //如果是QQ登录就绑定openid
    if(isset($_SESSION['openid']))
    {
    $data['openid']=$_SESSION['openid'];
    unset($_SESSION['openid']);
    }
    }

      

       

    世上无难事,只怕有心人......
  • 相关阅读:
    math.js:灵活强大的JavaScript数学库
    math.js:灵活强大的JavaScript数学库
    math.js:灵活强大的JavaScript数学库
    前端开发必须要了解的CSS原理
    前端开发必须要了解的CSS原理
    前端开发必须要了解的CSS原理
    GET和POST有什么区别?
    GET和POST有什么区别?
    GET和POST有什么区别?
    ACM2026
  • 原文地址:https://www.cnblogs.com/gooderic/p/5820185.html
Copyright © 2011-2022 走看看