[爆卦]PHP 判斷是否登入是什麼?優點缺點精華區懶人包

為什麼這篇PHP 判斷是否登入鄉民發文收入到精華區:因為在PHP 判斷是否登入這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者tao2tw (smile_ting)看板PHP標題[討論] 登入驗證 on Codeignit...


趁著我的網站還沒大到難以控制的階段,
這禮拜下定決心要跳到CI
只是很多傳統觀念 還是轉不太過來。

現在要把首頁搬到新的架構 頭就有點亂了。
下面網址是簡單圖文解說我在ci上的新設計
雖然都是寫英文,但是有盡量用簡單流程圖 解釋架構概念
(如果有建議的地方 煩請指正)
http://tinyurl.com/8cuzykg

另外請問一下,我的原本網站有需要很多處理訂單的task
通常我可能就是 order.php ==(中間穿插 js 驗證) ==> order_process.php

order.php
會去抓User info(從mysql) , 自動帶入一些訊息

order_process.php
會去抓User Info
並且把訂單資料 insert into database
順便利用 zend framwork library 把資料丟到google docs

這部份如果要轉到CI的話目前頭有點痛

大致想到架構就是, create new controller "Order"
在Order裡面有兩個function : submit() , process()
就在這兩個function 裡面 把之前做的工作都丟進來
process() 這邊沒有什麼view 需要display 出來。

但像是原本 php 我有寫很多 自定的 function 比如說 (common.php)
所以在我的process()裡面可能也會充斥著
require_once "common.php"
require XXX
這類型的code

整理出來的pseudo code 大致如下

submit()
{
//在FORM_VIEW裡面有些input 欄位,要帶入User data (從DB撈出來的)
DATA = model->getUserData();
load->view(FORM_VIEW,DATA);
//在FORM_VIEW, action=order/process/
//還沒試過 但是我猜應該會自動把 $_POST 變數傳到
//process() function?
}

process()
{
//就是會有一堆requre (是否會不符CI精神?有更好作法?)
require(PHPMAILER);
require(ZEND_FRAMWORK);
require(XXXX);

$get_data = $_POST;
model->setUserData();
mail->send();

}


目前還沒開始 implement,
只是想起來 這個 Order controller 可能也會長的很肥大。
不知道有沒有誤用了 CI , 或者有比較好的設計方法呢?
================================================
[更新如下]
我的網站架構如下
ci_www/
├── application
├── assets
├── css
├── files
├── images
├── inc
└── javascripts
├── sys
└── system


請問一下如何設計驗證表單
現在我的架構下有兩個 controller
(1) index
(2) order

一旦進入首頁,就會trigger index->entry();

這個function , 主要會先 "驗證登入狀態" , 再決定要不要 載入view

傳統的架構我想就是一般在 index.php
裡面的header require很多有關 validation php files
如果驗證正確,顯示頁面。
驗證失敗,可能redirect,或者exit
但是這是傳統的架構。

轉換到CI上面目前我的設計如下,
進入entry()
先呼叫 $this->getUserFromDb() ; 回傳值到 $data
在把 $data 傳入 index_view
在index_view裡面判斷是否要 display view ,

遇到問題如下,$this->getUserFromDb() ;
其實還沒有把功能寫完,但是寫完感覺,
在index 這個controller 看起來又是一堆if else 肥肥大大的判斷式。


public function entry() //這個function 用來顯示頁面內容
{

$data = $this->getUserFromDb() ;

$this->load->view('index_view',$data);
}

function getUserFromDb()
{
if(isset($_POST) AND !empty($_POST) AND $_POST['username'] ) //代表有登入
{
if( !$_POST['username'] || !$_POST['password'] )
{
return "fail";
}
elseif( $_POST['username'] AND $_POST['password'] )
{
$id = $_POST['username'];
$mobile = $_POST['password'];
$this->db->where('id' , $id);
$this->db->where('mobile' , $mobile);
$query = $this->db->get('test_member');
foreach ($query->result() as $row)
{
echo $row->id."\n";
}
return "ok";
}
else{
$err[] = '請務必填寫完整帳號或者密碼!!';
return "fail";
}
}else
{
return "";
}
}


在這邊是否適合寫一個function 在 assets/inc/check_login.php
然後我在require assets/inc/check_login.php
因為像是這種判斷function,
我可能在controller:order 這邊也需要去 require進來做判斷。

在CI的慣例,一個controller , 會去呼叫另外一個controller 寫好的function嗎?
如果不太好,怎麼樣的寫法會比較好呢?

謝謝



http://tinyurl.com/8cuzykg

--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 119.77.136.156
※ 編輯: tao2tw 來自: 119.77.136.156 (08/26 00:40)
superpai:做成自己的helper或是library然後用ci的$this->load-> 08/26 11:03
※ 編輯: tao2tw 來自: 119.77.136.156 (08/26 13:25)
marcoyan:我個人是習慣把controller當moudles來思考,所以如果是像 03/20 22:43
marcoyan:這種登入的我可能就放在member.php這隻controller裡處理 03/20 22:43
marcoyan:然後其它controller有需要調用到我再引入member的model 03/20 22:44

你可能也想看看

搜尋相關網站