thinkphp 退出登录跳转页面时怎么从框架(frame)里跳出来?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了thinkphp 退出登录跳转页面时怎么从框架(frame)里跳出来?相关的知识,希望对你有一定的参考价值。

参考技术A Thinkphp 页面跳转
ThinkPHP 提供了 success 与 error 方法用于带提示信息的页面跳转,如添加数据后显示提示信息并跳转等。success 方法用于操作成功后的提示,error 用于操作失败后的提示,二者使用方法完全一致,下面以 success 方法来进行说明。

success 方法
success 方法语法如下:

success(message, ajax)
参数说明: 参数 说明
message 可选。页面提示信息。
ajax 可选。是否 AJAX 方式提交,默认为 false 。

如果是 AJAX 方式提交的话,success 方法会调用 ajaxReturn 方法返回信息,具体参看《ThinkPHP AJAX》。追问

问题已经解决,虽然答案不是这个,但还是谢谢你

php thinkphp3.2怎么做会员登录

现在很多网站都有 QQ互联 和新浪微博 一键登录功能,国内很多php开源项目的代码都是使用thinkphp框架编写的,但是thinkphp框架如何添加QQ互联 和新浪微博 一键登录功能呢?
工具/原料
Thinkphp3.2版本源码
QQ互联 和新浪微博 申请到的 APPID和APPKEY。
方法/步骤
一:到腾讯QQ互联上申请APPID和APPKEY。申请地址: http://connect.qq.com/ 如同,这里我们可以获取到需要跳转到的APPID和APPKEY。新浪微博的申请同理

二:在Thinkphp官网下载 Thinkphp3.2版本的框架源码

本地安装好Thinkphp后,找到应用下的,Common/conf/config.php文件里加上。QQ互联对应的APPID和APPKEY等QQ_AUTH配置信息:

\'QQ_AUTH\' => array(
\'APP_ID\' => \'1XDXXXXX\', //你的QQ互联APPID
\'APP_KEY\' => \'2XXXXXXXXXXXXXXXXXXXXX\',
\'SCOPE\' => \'get_user_info,get_repost_list,add_idol,add_t,del_t,add_pic_t,del_idol\',
\'CALLBACK\' => \'http://www.baidu.com/user/oauth/callback/type/qq.html\',

),
//新浪微博的配置同理一样。
在Common目录下建立一个文件夹api。创建文件QQConnect.class.php ,添加如下代码,这里是 我们写好的一个类:

<?php
namespace Common\\Api;
class QQConnect
/**
* 获取QQconnect Login 跳转到的地址值
* @return array 返回包含code state
*
**/
public function login($app_id, $callback, $scope)
$_SESSION[\'state\'] = md5(uniqid(rand(), TRUE)); //CSRF protection
$login_url = "https://graph.qq.com/oauth2.0/authorize?response_type=code&client_id="
.$app_id. "&redirect_uri=" . urlencode($callback)
. "&state=" . $_SESSION[\'state\']
. "&scope=".urlencode($scope);
//显示出登录地址
header(\'Location:\'.$login_url);


/**
* 获取access_token值
* @return array 返回包含access_token,过期时间的数组
* */
private function get_token($app_id,$app_key,$code,$callback,$state)
if($state !== $_SESSION[\'state\'])
return false;
exit();

$url = "https://graph.qq.com/oauth2.0/token";
$param = array(
"grant_type" => "authorization_code",
"client_id" => $app_id,
"client_secret" => $app_key,
"code" => $code,
"state" => $state,
"redirect_uri" => $callback
);

$response = $this->get_url($url, $param);
if($response == false)
return false;

$params = array();
parse_str($response, $params);
return $params["access_token"];


/**
* 获取client_id 和 openid
* @param $access_token access_token验证码
* @return array 返回包含 openid的数组
* */
private function get_openid($access_token)
$url = "https://graph.qq.com/oauth2.0/me";
$param = array(
"access_token" => $access_token
);

$response = $this->get_url($url, $param);
if($response == false)
return false;

if (strpos($response, "callback") !== false)
$lpos = strpos($response, "(");
$rpos = strrpos($response, ")");
$response = substr($response, $lpos + 1, $rpos - $lpos -1);


$user = json_decode($response);
if (isset($user->error) || $user->openid == "")
return false;

return $user->openid;


/**
* 获取用户信息
* @param $client_id
* @param $access_token
* @param $openid
* @return array 用户的信息数组
* */
public function get_user_info($app_id,$token,$openid)
$url = \'https://graph.qq.com/user/get_user_info?oauth_consumer_key=\'.$app_id.\'&access_token=\'.$token.\'&openid=\'.$openid.\'&format=json\';
$str = $this->get_url($url);
if($str == false)
return false;

$arr = json_decode($str,true);
return $arr;


/**
* 请求URL地址,返回callback得到返回字符串
* @param $url qq提供的api接口地址
* */

public function callback($app_id, $app_key, $callback)
$code = $_GET[\'code\'];
$state = $_GET[\'state\'];
$token = $this->get_token($app_id,$app_key,$code,$callback,$state);
$openid = $this->get_openid($token);
if(!$token || !$openid)
return false;
exit();

return array(\'openid\' => $openid, \'token\' => $token);


/*
* HTTP GET Request
*/
private function get_url($url, $param = null)
if($param != null)
$query = http_build_query($param);
$url = $url . \'?\' . $query;

$ch = curl_init();
if(stripos($url, "https://") !== false)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);


curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
$content = curl_exec($ch);
$status = curl_getinfo($ch);
curl_close($ch);
if(intval($status["http_code"]) == 200)
return $content;
else
echo $status["http_code"];
return false;



/*
* HTTP POST Request
*/
private function post_url($url, $params)
$ch = curl_init();
if(stripos($url, "https://") !== false)
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, false);


curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1 );
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $params);
$content = curl_exec($ch);
$status = curl_getinfo($ch);
curl_close($ch);
if(intval($status["http_code"]) == 200)
return $content;
else
return false;




在项目下创建一个User模板,然后再创建一个OauthConnect.class.php文件,用户调用 QQConnect.class.php。
OauthConnect.class.php里面加入如下,
<?php
namespace User\\Controller;
use Think\\Controller;
class OauthController extends Controller
/*
* Type类型,初始化
* QQConnet WeiboConnect
*/
public function index()
switch ($_GET[\'type\'])
/* QQ互联登录 */
case qq:
$app_id = C(\'QQ_AUTH.APP_ID\');
$scope = C(\'QQ_AUTH.SCOPE\');
$callback = C(\'QQ_AUTH.CALLBACK\');
$sns = new \\Common\\Api\\QQConnect;
参考技术A 前台post数据
后端配好数据库
对接收过来的用户密码与数据库的数据相匹配,正确则登录
参考技术B 加一个控制器 验证登陆信息 然后跳转不就可以了么

以上是关于thinkphp 退出登录跳转页面时怎么从框架(frame)里跳出来?的主要内容,如果未能解决你的问题,请参考以下文章

thinkphp怎么跳转到指定页面的锚点

vue手机项目,账户退出后登录页面总保持这样?怎么解决?

vue手机项目,账户退出后登录页面总保持这样?怎么解决?

thinkphp在html页面中写if语句怎么写

php thinkphp3.2怎么做会员登录

PHP之ThinkPHP框架(会话)