導航:首頁 > 編程語言 > php框架實現登錄

php框架實現登錄

發布時間:2022-04-29 15:17:14

① Thinkphp框架簡單的注冊登錄里用戶許可權控制怎麼實現

可以參照mysql的功能許可權的做法,我不知道你提問的是不是這個許可權,舉個例子:
你後台可能有貼子管理,用戶管理等等功能,假設帖子管理使用許可權是1,用戶管理使用許可權是2,沒有許可權是0
新建三個表,一個是管理員表,一個是角色表,一個是管理員和角色關系表
舉兩個角色的例子,一個是普通管理員,一個是超級管理員,當新增超級管理員角色的時候角色的時候,此時超級用戶的許可權應該是12,當新增普通管理員的時候,他只有管理帖子的許可權,那麼他的許可權就是10,這樣角色表裡面就有兩個角色了
接著,新增用戶的時候,例如新增一個用戶叫題主,新增的時候選擇一個角色是普通管理員,寫入資料庫後,順便寫進角色和用戶之間的關系表,這樣就能做到許可權的控制了,也可以細分到編輯,刪除,添加等許可權,不過要保證方法名字一樣。
當然這里只是粗略的說了一下而已,真做起來有挺多問題,嘗試一下就知道了

前台用戶注冊登錄許可權思路也差不多,自己想想,做做就清楚了

還有就是可以google一下RBAC的資料庫設計

② 用php語言做一個後台登錄

會玩框架不?用thinkphp框架 cms,可以免費下載

③ 用php的CI框架怎麼寫登錄和注冊

在view里寫login.php,在controller里寫插入資料庫的代碼,同時調用。

④ PHP如何實現注冊和登錄

注冊頁面前面加個下拉框或者單選按鈕,然後把值傳過去,登錄的時候也選擇,傳值,然後在相應的分類查找這個人。注冊頁面前面加個下拉框或者單選按鈕,然後把值傳過去,登錄的時候也選擇,傳值,然後在相應的分類查找這個人。

⑤ php在CodeIgniter框架中怎樣編寫登錄界面的驗證並實現登錄

建議你下個別人的框架看看,或者買本php的書籍,你是php基礎不會。

⑥ ThinkPHP框架中登錄驗證如何實現

Action類提供了一個初始化方法_initialize介面,可以用於擴展需要,_initialize方法會在所有操作方法調用之前首先執行,所以你只要把驗證代碼放在Action類的_initialize()方法中即可,這樣訪問該類的方法都經過了驗證。參考ThinkPHP完全開發手冊13.3節——控制器擴展。
另外,假如你需要驗證的Action類比較多,可以專門建立一個驗證類,寫一次_initialize()方法,然後需要驗證的其他Action類繼承自該驗證類即可。
12345678910111213// 驗證類Class AuthorizedAction extends Action{ Public function _initialize(){ // 初始化的時候檢查用戶許可權 $this->checkRbac(); } } // 繼承自驗證類 Class UserAction extends AuthorizedAction{ Public function userfunction(){ // TO DO ... } }

⑦ thinkphp框架有登陸功能嗎

沒有整合登錄功能。但是登錄所需要的組件都有,自己寫出來很容易的

⑧ 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..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;

⑨ php如何實現登陸後返回原頁面

訪問網站頁面時,有的頁面需要授權才能訪問,這時候就會要求用戶登錄,跳轉到登錄頁面login.php,怎麼實現登錄後返回到剛才訪問的頁面
項目需求

訪問網站頁面時,有的頁面需要授權才能訪問,這時候就會要求用戶登錄,跳轉到登錄頁面login.php,怎麼實現登錄後返回到剛才訪問的頁面。

解決思路1:

在跳轉到登錄頁面之前要將當前訪問頁面的url保存到cookie裡面,登錄驗證授權通過後,從cookie中取出這個url值,跳轉到該 url指定的頁面。

具體實現

我現在的程序是基於ThinkPHP框架的,我們會有一個父類控制器,下面我就把這個設置cookie的代碼加到這個BaseAction裡面的_initialize()函數中,這樣程序就大大簡化工作量了。

代碼如下:

Cookie::set('refer', $refer);

登錄檢測的函數裡面我們加入:

代碼如下:
$refer = Cookie::get('refer');

現在這個$refer就是我們之前訪問的頁面,我們可以通過AJAX返回這個參數,然後進行跳轉,或者直接使用程序進行跳轉,具體要根據你程序的需求了。

解決思路2:

除了存成cookie的形式,相信大家也看到了很多大型網站直接採用GET的形式獲得,Drupal的登陸機制就是這樣。
這種思路具體是這樣的:
在跳轉到登錄頁面前要將訪客訪問的頁面的url作為參數傳遞過去,登錄驗證後,授予訪問許可權之後跳轉到該url指定的頁面。
比如登錄前的url為:openphp.html 當訪客訪問時,點擊無許可權,跳轉到登錄頁面的地址就為login.php?url=openphp.html,這樣在登錄時就可以用GET方式獲取該參數 openphp.html,登錄驗證成功後跳轉到openphp.html 這個頁面就可以了。

大致上我也就這兩種思路了,如果你有更好的思路,真心希望你可以告訴我。

⑩ 使用thinkphp框架實現單點登錄,服務端也要用tp,誰弄過

可以參考各大開源軟體的實現模式,如discuz的uc,phpcms的phpsso等

閱讀全文

與php框架實現登錄相關的資料

熱點內容
數學奇跡神奇運演算法 瀏覽:359
大廠的程序員的水平如何 瀏覽:700
遺傳演算法入門經典書籍 瀏覽:878
源碼炮台腳本 瀏覽:620
在位編輯命令 瀏覽:347
曲式分析基礎教程pdf 瀏覽:14
php生成靜態html頁面 瀏覽:964
怎麼分割pdf 瀏覽:812
壓縮垃圾報警器 瀏覽:628
小公司一般都用什麼伺服器 瀏覽:967
java獲取時間gmt時間 瀏覽:820
為什麼csgo一直連接不到伺服器 瀏覽:504
安卓登ins需要什麼 瀏覽:836
機器人演算法的難點 瀏覽:226
全自動化編程 瀏覽:726
程序員高薪限制 瀏覽:693
壓縮圖片壓縮 瀏覽:75
美國發明解壓魔方 瀏覽:302
電腦怎麼備案網上伺服器 瀏覽:515
旅行商問題Python寫法 瀏覽:952