Back to top

Autore Topic: Problema captcha joomla 2.5.4  (Letto 1082 volte)

Offline tockz

  • Nuovo arrivato
  • *
  • Post: 1
    • Mostra profilo
Problema captcha joomla 2.5.4
« il: 27 Set 2015, 11:40:26 »
Ciao a tutti,


sono nuovo e vi scrivo per un problema con il captcha in un sito che sto facendo, in pratica non si vede dandomi l'errore
Codice: [Seleziona]
[font=times new roman][size=medium]Parse error: syntax error, unexpected T_STRING in/web/htdocs/www.musumecichisariarchitetti.it/home/plugins/captcha/recaptcha/recaptcha.php on line 71[/size][/font]
[font=verdana][size=1em]
ed in più mi ha modificato il template della pagina contatti dopo aver seguito le istruzioni dell'articolo http://www.joomla.it/articoli-community-16-e-17-tab/7315-joomla-25-plugin-recaptcha-e-sparito.html.[/size][/font][size=78%]
Ho letto altre discussioni su questo argomento sempre in questo forum ma a parte le modifiche già apportate non ho trovato altre soluzioni, ultimo tentativo che ho eseguito è stato copiare l'intero codice di un altro file recaptcha pubblicato sempre in questo forum ma come detto prima mi dà questo errore.
Joomla è la versione 2.5.4, che purtroppo sono obbligato ad utilizzare perchè compatibile col template scelto, quindi non posso aggiornarlo perchè versioni superiori non lo supportano.
Capisco dall'errore che il problema dovrebbe essere alla linea 71, ma purtroppo non capisco qual'è l'errore anche andando a guardare il file, anche perchè col php sono all'inizio.


Pubblico il file recaptcha.php:
Codice: [Seleziona]

<?php
/**
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 *
 * @copyright   Copyright (C) 2005 - 2013 Open Source Matters, Inc. All rights reserved.
 * @license     GNU General Public License version 2 or later; see LICENSE.txt
 */




defined('_JEXEC') or die;




jimport('joomla.environment.browser');




/**
 * Recaptcha Plugin.
 * Based on the official recaptcha library( [url=https://developers.google.com/recaptcha/docs/php]https://developers.google.com/recaptcha/docs/php[/url] )
 *
 * @package     Joomla.Plugin
 * @subpackage  Captcha
 * @since       2.5
 */
class plgCaptchaRecaptcha extends JPlugin
{
   const 
RECAPTCHA_API_SERVER "[url=http://www.google.com/recaptcha/api]http://www.google.com/recaptcha/api[/url]";
   const 
RECAPTCHA_API_SECURE_SERVER "[url=https://www.google.com/recaptcha/api]https://www.google.com/recaptcha/api[/url]";
   const 
RECAPTCHA_VERIFY_SERVER "[url=http://www.google.com]www.google.com[/url]";




   public function 
__construct($subject$config)
   {
      
parent::__construct($subject$config);
      
$this->loadLanguage();
   }




   
/**
    * Initialise the captcha
    *
    * @param   string   $id   The id of the field.
    *
    * @return   Boolean   True on success, false otherwise
    *
    * @since  2.5
    */
   
public function onInit($id)
   {
      
// Initialise variables
      
$lang      $this->_getLanguage();
      
$pubkey      $this->params->get('public_key''');
      
$theme      $this->params->get('theme''clean');




      if (
$pubkey == null || $pubkey == '')
      {
         throw new 
Exception(JText::_('PLG_RECAPTCHA_ERROR_NO_PUBLIC_KEY'));
      }




      
$server self::RECAPTCHA_API_SERVER;
      if (
JBrowser::getInstance()->isSSLConnection())
      {
         
$server self::RECAPTCHA_API_SECURE_SERVER;
      }




      
JHtml::_('script'$server.'/js/recaptcha_ajax.js');
      
$document JFactory::getDocument();
      
$document->addScriptDeclaration('window.addEvent('domready', function() {
         Recaptcha.create("'
.$pubkey.'", "dynamic_recaptcha_1", {theme: "'.$theme.'",'.$lang.'tabindex: 0});});'
      
);




      return 
true;
   }




   
/**
    * Gets the challenge HTML
    *
    * @return  string  The HTML to be embedded in the form.
    *
    * @since  2.5
    */
   
public function onDisplay($name$id$class)
   {
      return 
'<div id="dynamic_recaptcha_1"><>';
   }




   
/**
     * Calls an HTTP POST function to verify if the user's guess was correct
     *
     * @return  True if the answer is correct, false otherwise
     *
     * @since  2.5
     */
   
public function onCheckAnswer($code)
   {
      
// Initialise variables
      
$privatekey   $this->params->get('private_key');
      
$remoteip   JRequest::getVar('REMOTE_ADDR''''SERVER');
      
$challenge   JRequest::getString('recaptcha_challenge_field''');
      
$response   JRequest::getString('recaptcha_response_field''');;




      
// Check for Private Key
      
if (empty($privatekey))
      {
         
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_NO_PRIVATE_KEY'));
         return 
false;
      }




      
// Check for IP
      
if (empty($remoteip))
      {
         
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_NO_IP'));
         return 
false;
      }




      
// Discard spam submissions
      
if ($challenge == null || strlen($challenge) == || $response == null || strlen($response) == 0)
      {
         
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_EMPTY_SOLUTION'));
         return 
false;
      }




      
$response $this->_recaptcha_http_post(self::RECAPTCHA_VERIFY_SERVER"/recaptcha/api/verify",
                                    array(
                                       
'privatekey'   => $privatekey,
                                       
'remoteip'      => $remoteip,
                                       
'challenge'      => $challenge,
                                       
'response'      => $response
                                    
)
                                );




      
$answers explode("n"$response[1]);




      if (
trim($answers[0]) == 'true') {
            return 
true;
      }
      else
      {
         
//@todo use exceptions here
         
$this->_subject->setError(JText::_('PLG_RECAPTCHA_ERROR_'.strtoupper(str_replace('-''_'$answers[1]))));
         return 
false;
      }
   }




   
/**
    * Encodes the given data into a query string format.
    *
    * @param   string  $data  Array of string elements to be encoded
    *
    * @return  string  Encoded request
    *
    * @since  2.5
    */
   
private function _recaptcha_qsencode($data)
   {
      
$req "";
      foreach (
$data as $key => $value)
      {
         
$req .= $key '=' urlencode(stripslashes($value)) . '&';
      }




      
// Cut the last '&'
      
$req rtrim($req'&');
      return 
$req;
   }




   
/**
    * Submits an HTTP POST to a reCAPTCHA server.
    *
    * @param   string  $host
    * @param   string  $path
    * @param   array   $data
    * @param   int     $port
    *
    * @return  array   Response
    *
    * @since  2.5
    */
   
private function _recaptcha_http_post($host$path$data$port 80)
   {
      
$req $this->_recaptcha_qsencode($data);




      
$http_request  "POST $path HTTP/1.0rn";
      
$http_request .= "Host: $hostrn";
      
$http_request .= "Content-Type: application/x-www-form-urlencoded;rn";
      
$http_request .= "Content-Length: " strlen($req) . "rn";
      
$http_request .= "User-Agent: reCAPTCHA/PHPrn";
      
$http_request .= "rn";
      
$http_request .= $req;




      
$response '';
      if ((
$fs = @fsockopen($host$port$errno$errstr10)) == false )
      {
         die(
'Could not open socket');
      }




      
fwrite($fs$http_request);




      while (!
feof($fs))
      {
         
// One TCP-IP packet
         
$response .= fgets($fs1160);
      }




      
fclose($fs);
      
$response explode("rnrn"$response2);




      return 
$response;
   }




   
/**
    * Get the language tag or a custom translation
    *
    * @return string
    *
    * @since  2.5
    */
   
private function _getLanguage()
   {
      
// Initialise variables
      
$language JFactory::getLanguage();




      
$tag explode('-'$language->getTag());
      
$tag $tag[0];
      
$available = array('en''pt''fr''de''nl''ru''es''tr');




      if (
in_array($tag$available))
      {
         return 
"lang : '" $tag "',";
      }
      
      
// If the default language is not available, let's search for a custom translation
      
if ($language->hasKey('PLG_RECAPTCHA_CUSTOM_LANG'))
      {
         
$custom[] ='custom_translations : {';
         
$custom[] ="t".'instructions_visual : "' JText::_('PLG_RECAPTCHA_INSTRUCTIONS_VISUAL') . '",';
         
$custom[] ="t".'instructions_audio : "' JText::_('PLG_RECAPTCHA_INSTRUCTIONS_AUDIO') . '",';
         
$custom[] ="t".'play_again : "' JText::_('PLG_RECAPTCHA_PLAY_AGAIN') . '",';
         
$custom[] ="t".'cant_hear_this : "' JText::_('PLG_RECAPTCHA_CANT_HEAR_THIS') . '",';
         
$custom[] ="t".'visual_challenge : "' JText::_('PLG_RECAPTCHA_VISUAL_CHALLENGE') . '",';
         
$custom[] ="t".'audio_challenge : "' JText::_('PLG_RECAPTCHA_AUDIO_CHALLENGE') . '",';
         
$custom[] ="t".'refresh_btn : "' JText::_('PLG_RECAPTCHA_REFRESH_BTN') . '",';
         
$custom[] ="t".'help_btn : "' JText::_('PLG_RECAPTCHA_HELP_BTN') . '",';
         
$custom[] ="t".'incorrect_try_again : "' JText::_('PLG_RECAPTCHA_INCORRECT_TRY_AGAIN') . '",';
         
$custom[] ='},';
         
$custom[] ="lang : '" $tag "',";




         return 
implode("n"$custom);
      }




      
// If nothing helps fall back to english
      
return '';
   }
}
Grazie a tutti
« Ultima modifica: 27 Set 2015, 12:19:06 da tomtomeight »

Offline $Red

  • Team Joomla.it
  • Instancabile
  • *******
  • Post: 5351
  • "Bastard Inside"
    • Mostra profilo
Re:Problema captcha joomla 2.5.4
« Risposta #1 il: 27 Set 2015, 15:11:07 »
Ciao e benvenuto/a sul forum, la tua versione di joomla è vecchia e da un pò di tempo , un bel pò direi, google ha cambiato i server di ReCaptcha come hai letto nell'articolo che hai linkato, comunque l'incompatibilità del template tra la versione di joomla 2.5.4 e l'ultima del ramo di sviluppo 2.5 cioè la 2.5.28 non dovrebbe esserci, anzi sono sicuro al 99,99% che non c'è, quindi il mio consiglio è di effettuare l'aggiornamento di joomla alla versione 2.5.28, facendo prima un backup chiaramente, successivamente se si riscontra ancora il problema controllare se ci sono conflitti di script o errori nella configurazione di ReCaptcha

 



Web Design Bolzano Kreatif