IT Knowledge Base

~ Without sacrifice, there can be no victory ~

發佈日期:

分類:

,

如何在PrestaShop 1.3.7下‧當用戶註冊時‧建立確認基制

PrestaShop預設的用戶註冊,只需要填入電郵、密碼、個人資料便可完成註冊。但很多人,特別是公司內的高層,總會想著,很多人會來搗亂它的網站一樣,硬要加個註冊確認程序在內。要是知道現在要申請一個免費的電郵要有多難,想攪這個確認又有何用呢?算吧!受人錢財,替人消災,就是那麼簡單。

01. 尋找PrestaShop用戶註冊後,在數據庫ps_customer表格中,中會找到一個secure_key及active一欄,就用這兩個欄位,來判斷用戶是否已註冊及確認。

02. 編輯PrestaShop安裝目錄下的authentication.php檔案,跳到第101行。

將:
$customer->active = 1;
更改為:
$customer->active = 0;

此更改會將所有用戶註冊後,其active一欄預設為0,即用戶資料會存入數據庫內,但依然不能成功登入。

03. 跳到第112行。

將:
array('{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))
更改為:
array('{securekey}' => $customer->secure_key, '{firstname}' => $customer->firstname, '{lastname}' => $customer->lastname, '{email}' => $customer->email, '{passwd}' => Tools::getValue('passwd')), $customer->email, $customer->firstname.' '.$customer->lastname))

此更改會在電郵發出時,可使用securekey作為快捷鍵。

04. 編輯PrestaShop安裝目錄下的mails/en/account.html檔案,在適當位置,加入以下內容。

<tr><td> </td></tr>
<tr>
<td align="left">To activiate your account, please click link: <a href="{shop_url}validation.php?securekey={securekey}">{shop_url}validation.php?securekey={securekey}</a></td>
</tr>

05. 編輯PrestaShop安裝目錄下的mails/en/account.txt檔案,在適當位置,加入以下內容。

To activiate your account, please click link: {shop_url}validation.php?securekey={securekey}

06. 在PrestaShop安裝目錄下,建立新檔案validation.php,並加入以下內容。

<?php
$sk = $_GET["securekey"];
include(dirname(__FILE__).'/config/config.inc.php');
include(dirname(__FILE__).'/init.php');
$link = mysql_connect(_DB_SERVER_, _DB_USER_, _DB_PASSWD_);
if (!$link) {
die('Could not connect: '.mysql_error());
}
else {
mysql_select_db(_DB_NAME_, $link);
$sql = "SELECT COUNT(id_customer) FROM "._DB_PREFIX_."customer WHERE secure_key = '".$sk."'";
$result = mysql_fetch_array(mysql_query($sql));
$update = $result['COUNT(id_customer)'];
if ($update == 1) {
$sql = "UPDATE "._DB_PREFIX_."customer SET active = '1' WHERE secure_key = '".$sk."'";
mysql_query($sql);
}
header('location:authentication.php?reg='.$update);
}
mysql_close($link);
?>

此檔案在用戶按下電郵內連結後,,將數據庫內active一欄設為1,及將結果傳回authentication.php檔案。

07. 編輯PrestaShop安裝目錄下的authentication.php檔案。

將:
<?php
更改為:
<?php
if (isset($_GET["reg"])) {
if ($_GET["reg"] == 1) {
echo '<table width="100%" bgcolor="#197A19">';
echo '<tr><td align="center"><font color="#ffffff" size="2">Validation successful!</font></td></tr>';
echo '</table>';
}
if ($_GET["reg"] == 0) {
echo '<table width="100%" bgcolor="#197A19">';
echo '<tr><td align="center"><font color="#ffffff" size="2">Validation failure.  Please contact our administrator.</font></td></tr>';
echo '</table>';
}
}

08. 完成後,可在PrestaShop中建立新用戶作測試。

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *