2012-04-12 12 views
0

Ich habe eine Formularerstellung aus dem Kohana-Framework, die eine E-Mail senden sollte.Wie debugge ich ein Formular, das keine E-Mail sendet?

, wenn ich die Schaltfläche „Senden“ drücken, alles scheint zu funktionieren ... keine Fehlermeldungen ... aber keine E-Mail auftaucht!

Wenn ich kann nichts in firebug..where sehen kann ich sehen?

die Anwendungsprotokolle Zustand

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

aber ich weiß nicht, wie man den Boden der problem..any Hilfe willkommen zu bekommen .. Ihnen,

Rob

Ill versuchen Sie und herauszufinden, welche Version ich benutze ..... die Anwendung ist die neueste Version von Ushahidi (2.2.1) www.ushahidi.com

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

/** * Captcha-Bibliothek. * * $ Id: captcha.php 3917 2009-01-21 03: 06: 22Z Zombor $ * * @package Check Captcha * @author Kohana-Team * @Copyright (c) 2007-2008 Kohana-Team * @license http://kohanaphp.com/license.html */ Klasse 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(); 
} 

} // End-Check Captcha Klasse

+1

sieht aus wie Sie ein Captcha Referenz haben in Ihnen, dass bilden, ist nirgends zu finden . Kannst du deinen Code posten? – Roger

+0

Könnten Sie einige Details hinzufügen wie: Welche Version von Kohana benutzen Sie ?, Was verwenden Sie, um E-Mails zu senden ?, Was machen Sie für Captcha und wie? –

+0

Ich bin mir nicht sicher, wo ich suchen soll. Das Framework ist kohana und es gibt eine PHP-Datei namens "Captcha.php" –

Antwort

0

von den kleinen Details versehen denke ich, Ihre Website die I18n Bibliothek von Kohana nutzt für die Internationalisierung der Website. Die andere Möglichkeit ist, dass Ihre Website Kohana-Nachrichten zum Anzeigen von Formularfehlern verwendet.

Die Validation-Klasse verwendet, die __ (intern) Funktion, wenn Fehler Validierungs Generation. Ich denke, Sie haben keine Nachricht für Schlüssel valid in angegeben.

Sie sollten versuchen, mehr auf, zu untersuchen, wie das Formular verarbeitet wird und ob einige Validierungsfehler erzeugt werden. Es könnte einen Fehler in der Captcha-Validierung geben und obwohl es scheinbar keinen Fehler gibt, könnte es sein und nur die Fehlermeldung konnte nicht angezeigt werden.

+0

Dies ist im Kern - $ Id: Kohana.php 3917 2009-01-21 03: 06: 22Z zombor $ ... Ich denke, das ist die Versionsnummer –

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

Dies ist der Code zum Kommentarformular –

+0

Bearbeiten Sie Ihre Frage mit Diese Info und lösche diese Nicht-Antwort – random

0

Mein Problem wurde gelöst!

Meine E-Mail-Server wurde nicht richtig eingerichtet. Ich löste das Postfix Problem und jetzt die Kommentare Form funktioniert, wie es sollte,

Dank allen, die beantwortet,

Rob