2012-04-12 11 views
0

私は、電子メールを送信する必要があるkohanaフレームワークからのフォームビルドを持っています。電子メールを送信しないフォームをデバッグするにはどうすればよいですか?

"送信"ボタンを押すと、すべて正常に動作しているようです...エラーメッセージは表示されません...メールは表示されません!

火の中に何かが見えない場合はどこに見える?

アプリケーションが状態

"error: Missing i18n entry contact.captcha.valid for language en_US"

を記録しますが、私は あなた、

ロブ

イリノイ.. problem..anyヘルプ歓迎の底に取得する方法を知っているドントどのバージョンを使用しているか調べてみてください.....このアプリケーションはUshahidi(2.2.1)の最新バージョンです。

<?php defined('SYSPATH') OR die('No direct access allowed.'); 

/** * Captchaライブラリ。 * * $番号:Captcha.php 3917 2009-01-21 03:06:22Z zombor $ * * @packageキャプチャ * @author Kohanaのチーム * @copyright(C)2007から2008のKohanaチーム * http://kohanaphp.com/license.html @license */ クラスCaptcha_Core {

// Captcha singleton 
protected static $instance; 

// Style-dependent Captcha driver 
protected $driver; 

// Config values 
public static $config = array 
(
    'style'  => 'basic', 
    'width'  => 150, 
    'height'  => 50, 
    'complexity' => 4, 
    'background' => '', 
    'fontpath' => '', 
    'fonts'  => array(), 
    'promote' => FALSE, 
); 

/** 
* Singleton instance of Captcha. 
* 
* @return object 
*/ 
public static function instance() 
{ 
    // Create the instance if it does not exist 
    empty(self::$instance) and new Captcha; 

    return self::$instance; 
} 

/** 
* Constructs and returns a new Captcha object. 
* 
* @param string config group name 
* @return object 
*/ 
public static function factory($group = NULL) 
{ 
    return new Captcha($group); 
} 

/** 
* Constructs a new Captcha object. 
* 
* @throws Kohana_Exception 
* @param string config group name 
* @return void 
*/ 
public function __construct($group = NULL) 
{ 
    // Create a singleton instance once 
    empty(self::$instance) and self::$instance = $this; 

    // No config group name given 
    if (! is_string($group)) 
    { 
     $group = 'default'; 
    } 

    // Load and validate config group 
    if (! is_array($config = Kohana::config('captcha.'.$group))) 
     throw new Kohana_Exception('captcha.undefined_group', $group); 

    // All captcha config groups inherit default config group 
    if ($group !== 'default') 
    { 
     // Load and validate default config group 
     if (! is_array($default = Kohana::config('captcha.default'))) 
      throw new Kohana_Exception('captcha.undefined_group', 'default'); 

     // Merge config group with default config group 
     $config += $default; 
    } 

    // Assign config values to the object 
    foreach ($config as $key => $value) 
    { 
     if (array_key_exists($key, self::$config)) 
     { 
      self::$config[$key] = $value; 
     } 
    } 

    // Store the config group name as well, so the drivers can access it 
    self::$config['group'] = $group; 

    // If using a background image, check if it exists 
    if (! empty($config['background'])) 
    { 
     self::$config['background'] = str_replace('\\', '/', realpath($config['background'])); 

     if (! is_file(self::$config['background'])) 
      throw new Kohana_Exception('captcha.file_not_found', self::$config['background']); 
    } 

    // If using any fonts, check if they exist 
    if (! empty($config['fonts'])) 
    { 
     self::$config['fontpath'] = str_replace('\\', '/', realpath($config['fontpath'])).'/'; 

     foreach ($config['fonts'] as $font) 
     { 
      if (! is_file(self::$config['fontpath'].$font)) 
       throw new Kohana_Exception('captcha.file_not_found', self::$config['fontpath'].$font); 
     } 
    } 

    // Set driver name 
    $driver = 'Captcha_'.ucfirst($config['style']).'_Driver'; 

    // Load the driver 
    if (! Kohana::auto_load($driver)) 
     throw new Kohana_Exception('core.driver_not_found', $config['style'], get_class($this)); 

    // Initialize the driver 
    $this->driver = new $driver; 

    // Validate the driver 
    if (! ($this->driver instanceof Captcha_Driver)) 
     throw new Kohana_Exception('core.driver_implements', $config['style'], get_class($this), 'Captcha_Driver'); 

    Kohana::log('debug', 'Captcha Library initialized'); 
} 

/** 
* Validates a Captcha response and updates response counter. 
* 
* @param string captcha response 
* @return boolean 
*/ 
public static function valid($response) 
{ 
    // Maximum one count per page load 
    static $counted; 

    // User has been promoted, always TRUE and don't count anymore 
    if (self::instance()->promoted()) 
     return TRUE; 

    // Challenge result 
    $result = (bool) self::instance()->driver->valid($response); 

    // Increment response counter 
    if ($counted !== TRUE) 
    { 
     $counted = TRUE; 

     // Valid response 
     if ($result === TRUE) 
     { 
      self::instance()->valid_count(Session::instance()->get('captcha_valid_count') + 1); 
     } 
     // Invalid response 
     else 
     { 
      self::instance()->invalid_count(Session::instance()->get('captcha_invalid_count') + 1); 
     } 
    } 

    return $result; 
} 

/** 
* Gets or sets the number of valid Captcha responses for this session. 
* 
* @param integer new counter value 
* @param boolean trigger invalid counter (for internal use only) 
* @return integer counter value 
*/ 
public function valid_count($new_count = NULL, $invalid = FALSE) 
{ 
    // Pick the right session to use 
    $session = ($invalid === TRUE) ? 'captcha_invalid_count' : 'captcha_valid_count'; 

    // Update counter 
    if ($new_count !== NULL) 
    { 
     $new_count = (int) $new_count; 

     // Reset counter = delete session 
     if ($new_count < 1) 
     { 
      Session::instance()->delete($session); 
     } 
     // Set counter to new value 
     else 
     { 
      Session::instance()->set($session, (int) $new_count); 
     } 

     // Return new count 
     return (int) $new_count; 
    } 

    // Return current count 
    return (int) Session::instance()->get($session); 
} 

/** 
* Gets or sets the number of invalid Captcha responses for this session. 
* 
* @param integer new counter value 
* @return integer counter value 
*/ 
public function invalid_count($new_count = NULL) 
{ 
    return $this->valid_count($new_count, TRUE); 
} 

/** 
* Resets the Captcha response counters and removes the count sessions. 
* 
* @return void 
*/ 
public function reset_count() 
{ 
    $this->valid_count(0); 
    $this->valid_count(0, TRUE); 
} 

/** 
* Checks whether user has been promoted after having given enough valid responses. 
* 
* @param integer valid response count threshold 
* @return boolean 
*/ 
public function promoted($threshold = NULL) 
{ 
    // Promotion has been disabled 
    if (self::$config['promote'] === FALSE) 
     return FALSE; 

    // Use the config threshold 
    if ($threshold === NULL) 
    { 
     $threshold = self::$config['promote']; 
    } 

    // Compare the valid response count to the threshold 
    return ($this->valid_count() >= $threshold); 
} 

/** 
* Returns or outputs the Captcha challenge. 
* 
* @param boolean TRUE to output html, e.g. <img src="#" /> 
* @return mixed html string or void 
*/ 
public function render($html = TRUE) 
{ 
    return $this->driver->render($html); 
} 

/** 
* Magically outputs the Captcha challenge. 
* 
* @return mixed 
*/ 
public function __toString() 
{ 
    return $this->render(); 
} 

} //終了するCaptchaクラス

+1

答えたすべての人へ

おかげで、

、それはどこにも見つからではないフォームIはPostfixの問題を解決し、現在コメントフォームが働いています。コードを投稿できますか? – Roger

+0

あなたはいくつかの詳細を追加できますか:Kohanaのどのバージョンを使用していますか?電子メールを送信するために何を使用しますか?あなたは何のためにcaptchaをしていますか? –

+0

私はどこを見るか分からない。フレームワークはkohanaであり、 "Captcha.php"というPHPファイルがあります –

答えて

0

私はあなたのサイトは、サイトの国際化のためのKohanaから国際化ライブラリを使用して考えて提供するほとんどの詳細から。もう1つのオプションは、フォームエラーを表示するためのサイトのKohanaメッセージです。

生成検証エラーの場合、Validationクラスは内部的に__()関数を使用します。 APPPATH/messages/contact/captcha.phpに指定されたキーvalidのメッセージがありません。

フォームの処理方法と検証エラーが生成されているかどうかを詳しく調べてください。キャプチャの検証にエラーがあり、エラーがないように見えますが、エラーメッセージが表示されないことがあります。

+0

これはコアです - $ Id:Kohana.php 3917 2009-01-21 03:06:22Z zombor $ ...これはバージョン番号 –

0
class Contact_Controller extends Main_Controller 
{ 
    function __construct() 
    { 
     parent::__construct(); 
    } 

    public function index() 
    { 

     $this->template->header->this_page = 'contact'; 
     $this->template->content = new View('contact'); 

     $this->template->header->page_title .= Kohana::lang('ui_main.contact').Kohana::config('settings.title_delimiter'); 

     // Setup and initialize form field names 
     $form = array (
      'contact_name' => '', 
      'contact_email' => '', 
      'contact_phone' => '', 
      'contact_subject' => '', 
      'contact_message' => '', 
      'captcha' => '' 
     ); 

     // Copy the form as errors, so the errors will be stored with keys 
     // corresponding to the form field names 
     $captcha = Captcha::factory(); 
     $errors = $form; 
     $form_error = FALSE; 
     $form_sent = FALSE; 

     // Check, has the form been submitted, if so, setup validation 
     if ($_POST) 
     { 
      // Instantiate Validation, use $post, so we don't overwrite $_POST fields with our own things 
      $post = Validation::factory($_POST); 

      // Add some filters 
      $post->pre_filter('trim', TRUE); 

      // Add some rules, the input field, followed by a list of checks, carried out in order 
      $post->add_rules('contact_name', 'required', 'length[3,100]'); 
      $post->add_rules('contact_email', 'required','email', 'length[4,100]'); 
      $post->add_rules('contact_subject', 'required', 'length[3,100]'); 
      $post->add_rules('contact_message', 'required'); 
      $post->add_rules('captcha', 'required', 'Captcha::valid'); 

      // Test to see if things passed the rule checks 
      if ($post->validate()) 
      { 
       // Yes! everything is valid - Send email 
       $site_email = Kohana::config('settings.site_email'); 
       $message = Kohana::lang('ui_admin.sender').": " . $post->contact_name . "\n"; 
       $message .= Kohana::lang('ui_admin.email').": " . $post->contact_email . "\n"; 
       $message .= Kohana::lang('ui_admin.phone').": " . $post->contact_phone . "\n\n"; 
       $message .= Kohana::lang('ui_admin.message').": \n" . $post->contact_message . "\n\n\n"; 
       $message .= "~~~~~~~~~~~~~~~~~~~~~~\n"; 
       $message .= Kohana::lang('ui_admin.sent_from_website'). url::base(); 

       // Send Admin Message 
       email::send($site_email, $post->contact_email, $post->contact_subject, $message, FALSE); 

       $form_sent = TRUE; 
      } 
      // No! We have validation errors, we need to show the form again, with the errors 
      else 
      { 
       // repopulate the form fields 
       $form = arr::overwrite($form, $post->as_array()); 

       // populate the error fields, if any 
       $errors = arr::overwrite($errors, $post->errors('contact')); 
       $form_error = TRUE; 
      } 
     } 

     $this->template->content->form = $form; 
     $this->template->content->errors = $errors; 
     $this->template->content->form_error = $form_error; 
     $this->template->content->form_sent = $form_sent; 
     $this->template->content->captcha = $captcha; 

     // Rebuild Header Block 
     $this->template->header->header_block = $this->themes->header_block(); 
     $this->template->footer->footer_block = $this->themes->footer_block(); 
    } 
} 
+0

だと思います。これはコメントフォームのコードです –

+0

質問を編集してこの情報とこの無回答を削除 – random

0

問題が解決しました。

マイメールサーバーが正しく設定されていません。それが必要としてロブ

はあなたにキャプチャ参照を持っているように見えます
関連する問題