2012年1月22日 星期日

joomla 1.5後台管理加入recapthca的作法

首先到http://code.google.com/intl/zh-TW/apis/recaptcha/docs/php.html,進入其中的reCAPTCHA PHP library,下載recaptcha-php-1.11.zip,然後解壓縮,將其中的recaptchalib.php這個程式上傳複製到你的網站裡(要記住你存放的位置路徑,若要免去麻煩,可以將其拷備在與你以下即將更改的程式之同一個資料夾裡!),

接著在你的joomla 1.5的安裝路徑裡,找到administrator/modules/mod_login裡的mod_login.php這個程式

找到其中表單的部份:

<form action="<?php echo JRoute::_( 'index.php', true, $params->get('usesecure')); ?>" method="post" name="login" id="form-login" style="clear: both;">

<p id="form-login-username">
                <label for="modlgn_username"><?php echo JText::_('Username'); ?></label>
                <input name="username" id="modlgn_username" type="text" class="inputbox" size="15" />
        </p>

        <p id="form-login-password">

.................................................

................................................

................................................

        <div class="button_holder">
        <div class="button1">
                <div class="next">
                        <a onclick="login.submit();">
                                <?php echo JText::_( 'Login' ); ?></a>

                </div>
        </div>
        </div>
        <div class="clr"></div>
        <input type="submit" style="border: 0; padding: 0; margin: 0; width: 0px; height: 0px;" value="<?php echo JText::_( 'Login' ); ?>" />
        <input type="hidden" name="option" value="com_login" />
        <input type="hidden" name="task" value="login" />
        <?php echo JHTML::_( 'form.token' ); ?>
</form>

然後在適當的位置加入以下語法:

<?php
//底下是發哥自己加入的
?>
<div align="center">請於下列欄位中輸入下圖所見之驗證碼</div>
<div align="right"><?php
require_once('recaptchalib.php');
          $publickey = "你的公開鑰匙"; // you got this from the signup page
          echo recaptcha_get_html($publickey);
        ?>
<?php
//以上是哥發自己加入的
?>

註:其中的你的公開鑰匙改為你在google reCAPTCHA註冊申請的帳密所得到的Public Key資料,而recaptchalib.php的路徑則必須視你的上傳複製的實際路徑位置而調整!

如下圖(在sign up點選之後,會有一些設定步驟,這裡我就不說了!)

image

 

其中註冊完後,可以看到如下圖頁面的資料,其中主要是會用到Public KeyPrivate Key的資料!

image

若一切正確,改完後,你的後台登入畫面應該就會變成這樣:

image

但此實雖可以看到畫面,卻還不能直正有作用,因為還沒有作確認頁的設定。

接著我們還要找到administrator/components/com_login路徑下的admin.login.php這個程式。

用文字編輯器打開admin.login.php

找到 function login()這一段(約52行的位置)

  function login()
        {
//
  require_once('recaptchalib.php');
  $privatekey = "你的私人密鑰";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {
    // What happens when the CAPTCHA was entered incorrectly
    die ("你輸入的驗證碼錯誤,請回上一頁再試一次!" .
         "(reCAPTCHA said: " . $resp->error . ")");
  } else {
    // Your code here to handle a successful verification
  }

//

                global $mainframe;

                // Check for request forgeries
                JRequest::checkToken('request') or jexit( 'Invalid Token' );

                $credentials = array();

在其間加入紅色粗體字所標示的字串,其中的你的私人密鑰改為你在google reCAPTCHA註冊申請的帳密所得到的Private Key資料,而recaptchalib.php的路徑則必須視你的上傳複製的實際路徑位置而調整!

這樣子設定完後,你的就可以使用recapthca來保護你的joomla 1.5後台

沒有留言: