2011-04-24 118 views
1

我爲我的wordpress安裝使用自定義登錄腳本。當激活密鑰以下列格式發送給註冊用戶一切正常,只是罰款:激活碼中的問題,使用php

http://mydomain.com/?page_id=1278&[email protected]&activate_key=7edbad 

當用戶在上面點擊鏈接然而,「@」在電子郵件中消失,因此給出了一個錯誤的激活密鑰無效。

有人可以指導我嗎?

這是把激活鏈接在一起的代碼段:

$link=get_option('home').'/?page_id='.$pageid.'&mail='.$user_email.'&activate_key='.$key; 
+0

P.S:如果我手動複製/粘貼鏈接到瀏覽器,它可以正常工作。 – Sledge81 2011-04-24 15:05:45

+0

我做了一個小測試,並將激活鏈接轉發給我的Outlook(以消除它可能只是gmail的問題)。當鏈接被點擊時,URL改變,'@'消失,激活錯誤。 – Sledge81 2011-04-24 15:35:22

+0

@Sledge,在瀏覽器中的位置欄中是@嗎?或者至少是URL編碼的%40? – Charles 2011-04-24 15:36:43

回答

0

嘗試對GET PARAMS urlencode()

+0

嗨,亞歷克斯,你可以有點更詳細..我不是在PHP的能力..只能管理幾件事情。 – Sledge81 2011-04-24 15:32:09

1

你可能需要編碼在URL中的參數,使用各個參數的值的urlencode()功能:

$link=get_option('home') 
      .'/?page_id='.urlencode($pageid) 
      .'&mail='.urlencode($user_email) 
      .'&activate_key='.urlencode($key); 


作爲替代方案,你也可以使用http_build_query()一次,建立整個查詢字符串:

$params = array(
    'page_id' => $pageid, 
    'mail' => $user_email, 
    'activate_key' => $key, 
); 
$query_string = http_build_query($params); 

$link=get_option('home') . '/?' . $query_string; 
+0

我嘗試過使用urlencode()。現在激活鏈接看起來像這個http://mydomain.com/?page_id=1278&mail=user%40email.com&activate_key=7edbad,但點擊它會拋出相同的錯誤。現在嘗試http_build_query選項並回復給您。 – Sledge81 2011-04-24 15:27:41

+0

好吧..嘗試使用http_build_query並沒有改變..仍然是相同的錯誤。激活鏈接中的電子郵件地址部分是%40而不是@ – Sledge81 2011-04-24 15:31:07

0

嘗試$user_email周圍urlencode()將其轉換爲一個URL友好的值。

+0

當!我知道我必須快點。 – Ethan 2011-04-24 15:08:21

+0

沒有......那根本沒有幫助。縮小了問題..當激活鏈接被點擊時,不知何故'@'被取消了URL。 – Sledge81 2011-04-24 15:49:59