2012-10-25 47 views
8

我建立一個應用程序,允許應用程序打一個ACT URL,然後觸發模塊的方法來創建一個使用ExpressionEngine API的新條目記錄用戶的最佳方式。但是,由於沒有用戶登錄/登錄,因此不允許向頻道提交條目。什麼是編程中ExpressionEngine

什麼是做到這一點的最好辦法。繞過EE API和手動提交該條目,或登錄progamatically..but用戶又如何會與會話等等等等工作?

如果答案是「登錄用戶」這將是非常高興看到一個代碼示例如果可能的話。

謝謝!

+0

只是讓你知道我們關於EE特定網站的建議(如果你已經在支持它,你需要鏈接你的帳戶,這樣你的聲望就可以接近它)http://area51.stackexchange.com/proposals/46387/expressionengine –

+0

您可以在API調用中傳遞一個'member_id'(作爲$ data'的一部分)嗎? –

+0

不,它不會讓我張貼該條目由於用戶許可的事情,所以不會工作,我害怕。感謝您的回覆!! – bjohnb

回答

12

至於你提到,有2種方式來添加新條目:

  1. 手動添加數據庫記錄
  2. 使用通道條目API(http://expressionengine.com/user_guide/development/ API/api_channel_entries.html)

的主要區別是其條目使用API​​添加將:

  • 執行所有通常的數據驗證(即標記爲必需的字段不得爲空)
  • 運行安裝的任何第三方擴展
  • 保持網站統計數據爲最新(例如,發佈的數量作者)

手動添加條目對於簡單的通道是相當容易的,但如果您使用使用附加表的第三方字段類型會變得更加複雜。

要登錄一個成員,你應該只需要:

// Get the member's id (the member must have permissions to post entries) 
$member_id = 1; 

// Create session 
$this->EE->session->create_new_session($member_id); 

使用通道條目API添加的條目,然後:

// Log user back out 
$this->EE->session->destroy(); 

當您完成。

+0

乾杯安德魯,真的很感謝你的回覆! – bjohnb

+0

沒問題。如果您有任何問題,請告訴我。 –

5

您將要看看./system/libraries/Auth.php中的Auth.php類。這個類是認證API的抽象,並且允許你完全按照你想要的來做。 「作爲用戶登錄」功能使用這些相同的方法,以及成員模塊。

您也可以看看的身份驗證模塊(這是免費的),所以你得到的別人如何與驗證工作類的想法。

https://objectivehtml.com/authenticate

下面是一些僞代碼供您使用:

// Fetch the member from the DB using whatever logic you need 
$this->EE->db->where('username', 'some-username'); 
$member = $this->EE->db->get('members'); 

$this->EE->load->library('auth'); 

// Load a new Auth_result object which logs in the member 
$authed = new Auth_result($member->row()); 
$authed->start_session($cp_session = FALSE); 

$member->free_result(); 

此代碼應該工作,但我沒有沒有時間去執行它,這就是爲什麼它被認爲是僞碼。

我還要補充一點,我不知道這即使是最好的方式來解決你的問題。我只是回答「如何以編程方式登錄用戶而不知道密碼並且未提交登錄表單」的問題。

+0

啊,是的,我忘記了所有關於登錄作爲用戶的方法。所以,出於好奇,採用什麼方法解決這個問題最好?我都是耳朵! – bjohnb