㈠ thinkphp 登陸頁面的歡迎某某某怎麼實現
登錄的時候,不是要$this->display();么?在這之前,先讓控制器傳一個$a="歡迎您!"到模版中去。
$this->assign($a,$a);在模版中,直接<volist value=$a></volist>
代碼可能有錯誤,很久沒做過TP了、
㈡ thinkphp 怎麼做登錄驗證
登錄無非就是驗證用戶名密碼以及驗證碼是否正確,我們可以新建一個CommonAction的公共類,用來校驗許可權,其他所有類繼承此類。該類內部寫一個初始化方法,用於驗證,這一講先不詳細講解。繼續說登錄,由於登錄是公開模塊的方法,所以可以新建一個PublicAction類,用於公共的免驗證方法,同時在配置文件中添加
'NOT_AUTH_MODULE'=>'Public',//默認不需要認證的模塊
'USER_AUTH_GATEWAY'=>'/Public/login',//默認的認證網關
然後開始編寫Public類,具體代碼如下:
<?php
{
//驗證碼顯示
publicfunction verify(){
import("ORG.Util.Image");
Image::buildImageVerify(4,1,"png",100,28,"verify");
}
//驗證是否賬號密碼
function checklogin(){
//此處多餘可自行改為Model自動驗證
if(empty($_POST['username'])){
$this->error('帳號錯誤!');
}elseif (empty($_POST['password'])){
$this->error('密碼必須!');
}elseif (empty($_POST['verify'])){
$this->error('驗證碼必須!');
}
$map=array();
$map['username']=$_POST['username'];
$map['status']=array('gt',0);
if($_SESSION['verify']!= md5($_POST['verify'])){
$this->error('驗證碼錯誤!');
}
import('ORG.Util.RBAC');
//C('USER_AUTH_MODEL','User');
//驗證賬號密碼
$authInfo=RBAC::authenticate($map);
if(empty($authInfo)){
$this->error('賬號不存在或者被禁用!');
}else{
if($authInfo['password']!=md5($_POST['password'])){
$this->error('賬號密碼錯誤!');
}else{
$_SESSION[C('USER_AUTH_KEY')]=$authInfo['id'];//記錄認證標記,必須有。其他信息根據情況取用。
$_SESSION['email']=$authInfo['email'];
$_SESSION['nickname']=$authInfo['nickname'];
$_SESSION['user']=$authInfo['username'];
$_SESSION['last_login_date']=$authInfo['last_login_date'];
$_SESSION['last_login_ip']=$authInfo['last_login_ip'];
//判斷是否為超級管理員
if($authInfo['username']=='admin'){
$_SESSION[C('ADMIN_AUTH_KEY')]=true;
}
//以下操作為記錄本次登錄信息
$user=M('User');
$lastdate=date('Y-m-d H:i:s');
$data=array();
$data['id']=$authInfo['id'];
$data['last_login_date']=$lastdate;
$data['last_login_ip']=$_SERVER["REMOTE_ADDR"];
$user->save($data);
RBAC::saveAccessList();//用於檢測用戶許可權的方法,並保存到Session中
$this->assign('jumpUrl',.'/Index/index');
$this->success('登錄成功!');
}
}
}
//退出登錄操作
function logout(){
if(!empty($_SESSION[C('USER_AUTH_KEY')])){
unset($_SESSION[C('USER_AUTH_KEY')]);
$_SESSION=array();
session_destroy();
$this->assign('jumpUrl',/Code.'/login');
$this->success('登出成功');
}else{
$this->error('已經登出了');
}
}
}
以上代碼僅實現功能,沒有做優化,有些驗證的操作可以放到model,session也不用一 一賦值,用數組即可,我想已經入門的應該可以自己改的更好。
㈢ ThinkPHP要做一個登錄判斷的控制器讓其他控制器來繼承它,如果沒登錄就跳轉到登錄頁面,怎麼寫
新建一個commonController控制器,然後把下邊代碼復制進去,登錄成功就創建session,否則就檢測當前訪問的控制器和方法有沒有在允許訪問的方法內,有就允許訪問,沒有就跳轉到登錄.
<?php
namespaceAdminController;
useThinkController;
{
function__construct(){
parent::__construct();
$nowca=CONTROLLER_NAME."/".ACTION_NAME;
$adname=$_SESSION['admin_name'];
$AdminId=$_SESSION['admin_id'];
$loginca="Index/login,Index/check_user";//未登錄允許訪問的控制器和方法
if(empty($adname)&&strpos($loginca,$nowca)===false){
$url=__MODULE__;
echo'<literal><script>window.top.location.href="'.$url.'/Index/login";</script></literal>';
exit;
}
}
function_empty(){
header("HTTP/1.0404NotFound");
$this->display('templet/admin/404.html');
}
}
㈣ thinkphp如何防止直接通過地址欄訪問某個模塊 必須要經過一個單頁裡面設有登錄才能訪問
在做的就是把圖片上傳到我自己的資料庫,然後可以再本機上通過資料庫看到這張圖片,
㈤ 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 ... } }
㈥ 怎麼用sql注入繞過thinkphp 框架做的登錄
TP有防止各種攻擊的機制,SQL什麼的TP根本不放眼裡。不過低版本的,你可以試試DDOS
㈦ ThinkPHP框架簡單的注冊登錄里用戶許可權控制怎麼實現
可以參照mysql的功能許可權的做法,我不知道你提問的是不是這個許可權,舉個例子:
你後台可能有貼子管理,用戶管理等等功能,假設帖子管理使用許可權是1,用戶管理使用許可權是2,沒有許可權是0
新建三個表,一個是管理員表,一個是角色表,一個是管理員和角色關系表
舉兩個角色的例子,一個是普通管理員,一個是超級管理員,當新增超級管理員角色的時候角色的時候,此時超級用戶的許可權應該是12,當新增普通管理員的時候,他只有管理帖子的許可權,那麼他的許可權就是10,這樣角色表裡面就有兩個角色了
接著,新增用戶的時候,例如新增一個用戶叫題主,新增的時候選擇一個角色是普通管理員,寫入資料庫後,順便寫進角色和用戶之間的關系表,這樣就能做到許可權的控制了,也可以細分到編輯,刪除,添加等許可權,不過要保證方法名字一樣。
當然這里只是粗略的說了一下而已,真做起來有挺多問題,嘗試一下就知道了
前台用戶注冊登錄許可權思路也差不多,自己想想,做做就清楚了
還有就是可以google一下RBAC的資料庫設計
㈧ 在Thinkphp中 自己怎麼寫一個簡單的登錄功能出來,求代碼
登陸頁面login.html代碼
<formaction="__MODULE__/Login/dologin"method="post">
賬號:<inputtype="text"name="username"/>
密碼:<inputtype="password"name="password"/>
<inputtype="submit"value="登陸"/>
</form>
Login控制器下dologin方法代碼
public function dologin(){
$u=I('Post.username');
$p=I('Post.password');
$data['username']=$u;
$data['password']=md5($p); //md5加密
$m=M('User');
$list=$m->where($data)->find();
if($list){
$_SESSION['islogin']=1; //登陸狀態存入session
$_SESSION['username']=$list['username']; //把用戶名存入session
$_SESSION['id']=$list['id']; //把用戶id存入session
$this->redirect("Index/index");
}else{
$this->error("登陸失敗",'javascript:history.back(-1);',1);
}
}基本的代碼就這些 配置文件跟資料庫自己改改就行了
㈨ php中 用的是thinkphp模板 怎麼樣讓用戶保持在登錄狀態用session
thinkphp中是通過在項目文件夾下的conf文件夾下面的config.php重新對session進行「增,刪,改,查」配置的,首先找到相對的部分然後看使用哪種方法進行cookie的,假如是mencache伺服器上保存的那還有mencache的配置方法,實現的方式很多,具體的要看過才知道哦
㈩ thinkphp 怎樣實現登錄驗證
thinkphp 實現登錄驗證代碼如下:
//登錄驗證
public function doLogin(){
$type=I('post.type');
if(!self::check_verify(I('post.code'))){
if($type==home){
$this->error("驗證碼錯誤",U("/Home/Index/login"));
}else{
$this->error("驗證碼錯誤",U("Login/login"));
}
}
$accountInfo=M('account')->where("account='".I('post.account')."' AND (user_type=3 OR user_type=2)")->find();
if(!$accountInfo){
if($type==home){
$this->error("賬號不存在",U("/Home/Index/login"));
}else{
$this->error("賬號不存在",U("Login/login"));
}
}
if($accountInfo['password']!=md5(I('post.password')."sqysll")){
if($type==home){
$this->error("密碼錯誤",U("/Home/Index/login"));
}else{
$this->error("密碼錯誤",U("Login/login"));
}
}
$_SESSION['user_type']=$accountInfo['user_type']; //用戶類型
$_SESSION['aid']=$accountInfo['id'];
if($type==home){ //0代表官網登錄,1代表醫院醫生後台登錄
$_SESSION['type']=0;
}else{
$_SESSION['type']=1;
}
$this->redirect('Index/index');
}
//(TP3.2自帶)生成驗證碼
public function code(){
ob_clean();
$c=I('c');
$config = array( 'fontSize' => 30, // 驗證碼字體大小
'length' => 3, // 驗證碼位數
'useNoise' => false, // 關閉驗證碼雜點
);
$Verify = new ThinkVerify($config);
$Verify->entry($c);
}
// (TP3.2自帶)檢測輸入的驗證碼是否正確,$code為用戶輸入的驗證碼字元串
function check_verify($code, $id = ''){
$verify = new ThinkVerify();
return $verify->check($code, $id);
}