vserver
Goto Top

ReCaptcha - Registerformular wird nicht angezeigt

Hallo,

wollte eben ein ReCaptcha in mein Register einbauen, jedoch wird kein ReCaptcha angezeigt, woran liegt das habe die ReCaptchalib.php Datei auf meinem Server unter
var/www//page/captcha/recaptchalib.php liegen.

{include file="header.html" title=$hooks->title->title_registration}  
      <div class="row-fluid">  
			{include file="sidebar.html"}   
        <div class="span8">   
            {if $errorpass}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
            {if $erroruser}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
            {if $errorMail}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
             {if $UserOrMailexist}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits! 
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
                                    
	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"}  
		 	{if $i.id eq 'defaultRegistration'}  
      					<div class="base-block">            
 							<div class="title">{$lang.registration}</div>   							  
						   	  <form id="form1" name="form1" method="post" action="">  
								<label class="log-lab">{$lang.username}:</label>  
								<input name="user" type="text" class="login-input-user" />  
								<label class="log-lab">{$lang.password}:</label>  
								<input name="pass" type="password" class="login-input-pass" /><br /><br />  
								<label class="log-lab">{$lang.mail}:</label>  
								<input name="mail" type="text" class="login-input-pass" /><br />  
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br>  
								<?php
								require_once('../page/captcha/recaptchalib.php');  
								$publickey = "meinpublickey";  
								echo recaptcha_get_html($publickey);
								?>

						   	  </form>
						</div>
 	
            {else}            
 	 			{$i.content}	 
 	 		{/if}            
	 {/foreach}  				
            
        </div><!--/span-->
      </div><!--/row--> 

{include file="footer.html"}  


vielen Dank für eure Hilfe.

Gruß

Content-Key: 229656

Url: https://administrator.de/contentid/229656

Ausgedruckt am: 28.03.2024 um 22:03 Uhr

Mitglied: Arano
Arano 14.02.2014 um 10:58:11 Uhr
Goto Top
Hi...

was steht denn nach dem Aufrufen an der Stellen von recaptcha_get_html() ?
Wird denn HTML erzeugt ?

Hast du, wie beim letztem mal erwähnt, die Fehler anzeigen lassen ini_set('display_errors', 'On')


~Arano
Mitglied: d4shoerncheN
d4shoerncheN 14.02.2014, aktualisiert am 15.02.2014 um 19:42:49 Uhr
Goto Top
Moin,

hast du den Code einfach eingefügt oder dir vorher auch einen API-Key für ReCaptcha organisiert?
http://www.google.com/recaptcha/whyrecaptcha

$publickey = "meinpublickey";   

Denke es ist auch für dich nicht verkehrt, wenn du dich einmal durch die Dokumentation liest:
https://developers.google.com/recaptcha/intro?hl=de-DE

Einfach jeden Menüpunkt ausgiebig lesen und verstehen, denke dann klappt es auch.

Gruß
@d4shoerncheN
Mitglied: vServer
vServer 15.02.2014 um 19:48:34 Uhr
Goto Top
Hallo,

habe das mit folgendes anzeigen lassen jedoch wird ebenso nichts angezeigt face-sad
<?php
ini_set('display_errors', 'On')  
?>


@d3shoernchen: habe schon einen Public Key & Private Key generieren lassen. Habe das Feld nur mit meinpublickey ersetzt.

Entwender ist der Pfad falsch aber meine recaptchalib.php Datei liegt hier var/www/page/captcha/recaptchalib.php also sollte der angegebene Pfad passen.

Gruß & Danke
Mitglied: Arano
Arano 17.02.2014 um 15:40:20 Uhr
Goto Top
Tag auch

Was ist den mit meiner ersten Frage ?
Und... ich sehe das Captcha auf urlshorter.de/page/urlshorter/register.html

Problem also gelöst ?
Was war das Problem, was die Lösung ?


~Arano
Mitglied: vServer
vServer 17.02.2014, aktualisiert am 24.02.2014 um 17:07:45 Uhr
Goto Top
Hi,

nein warst falsch face-smile

da habe ich es aber so:

Captcha Field:
<?php echo recaptcha_get_html($publickey); ?>

Error:
	$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);   

	if (!$resp->is_valid) {
		$err = true;
		$captcha_err = "Die Sicherheitsabfrage war leider nicht korrekt.";  
	}

require_once('captcha/recaptchalib.php');  

$publickey = "key";  
$privatekey = "key";  

Gruß & Danke
Mitglied: Arano
Arano 17.02.2014 um 17:57:17 Uhr
Goto Top
Hi...

...ICH HABE IMMER NOCH KEINE ANTWORT AUF MEINE ERSTE FRAGE VON DIR BEKOMMEN !
Wenn du nicht antwortest, geht es nicht weiter !

Also:
  1. Was ist die Ausgabe von recaptcha_get_html() ?
  2. Wie lauten die __absoluten Pfade__ der PHP-Dateien von: dem Register-Formular und der ReCaptchaLib ?
  3. Ist dein Key für verschiedene Domains zugelassen ?

HINWEIS: Fehlt eine Antwort oder relevante Daten, dann bin ich raus ...denn ich habe keine Lust jede Frage laufend wiederholen zu müssen.


~Arano
Mitglied: vServer
vServer 17.02.2014, aktualisiert am 28.02.2014 um 20:38:28 Uhr
Goto Top
Hi face-smile

Welche Ausgabe meinst du von rcaptcha_get_html ()? Meinst du da folgendes, das habe ich noch nicht in meinem Script drin:

require_once('recaptchalib.php');  
  $privatekey = "xxx";  

  $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 ("Das reCAPTCHA wurde nicht korrekt eingegeben. Gehen Sie zurück und versuchen Sie es erneut." .  
        "(reCAPTCHA sagte: " . $resp->error . ")");  
  } else {
     //Your code here to handle a successful verification
  }

bei ReCaptcha.net steht folgendes unter der Domain:
This is a global key. It will work across all domains.

hoffentlich hab ich alles beantwortet face-smile

Gruß & Danke
Mitglied: Arano
Arano 17.02.2014 um 19:53:51 Uhr
Goto Top
Hallo, ja das ist gut so !

Welche Ausgabe meinst du von rcaptcha_get_html ()?
Diese Funktion generiert doch eigentlich HTML-Code der dann ausgegeben wird um das reCaptcha-Bild einzubinden und das Eingabefeld, ect.
Die richtige Antwort wäre also gewesen: "Nichts". Da du aber nicht genau wusstest was ich mein ist das aber okay, denn immerhin hast du __Nachgefragt__ und ein mögliches Ergebnis angeboten.
Ich habe jetzt doch selber nachgesehen. die Funktion gibt nichts zurück, wirft aber auch keine Fehlermeldung ? Komisch !

Da ich leider trotz der absoluten Pfadangabe nicht verstehe wo welche Datei liegt und von wo sie aufgerufen werden... probieren wir es mal etwas anders.

Das display_errors ist aktiviert und error_reporting steht auf -1
Füge mal in die Datei "/var/www/page/onpaste/themes/bootstrap/registration.html" an die Stelle nach require_once('../page/captcha/recaptchalib.php'); (Zeile 47) folgendes ein und schreib die Ausgabe hier her:
<?php
echo 'TESTING >>>';  
  if( function_exists('recaptcha_get_html') )  
  {
    echo '<h1>recaptcha_get_html() Funktion ist verfügbar</h1>';  
  }
  else
  {
    echo '<h1>recaptcha_get_html() Funktion FEHLT !</h1>';  
    if( file_exists('../page/captcha/recaptchalib.php') )  
    {
      echo '<h2>Lib existiert auch...</h2>';  
    }
    else
    {
      echo '<h2>Lib existiert doch NICHT !</h2>';  
      echo 'Wir sind in: '.dirname(__FILE__);  
    }
  }
echo 'TESTING <<<';  
?>


~Arano
Mitglied: vServer
vServer 17.02.2014, aktualisiert am 28.02.2014 um 20:38:51 Uhr
Goto Top
Hi,

folgendes wird ausgegeben, kann der Script irgendwie kein PHP?:

>>'; if( function_exists('recaptcha_get_html') ) { echo '  
recaptcha_get_html() Funktion ist verfügbar
'; } else { echo '  
recaptcha_get_html() Funktion FEHLT !
'; if( file_exists('../page/captcha/recaptchalib.php') ) { echo '  
Lib existiert auch...
'; } else { echo '  
Lib existiert doch NICHT !
'; echo 'Wir sind in: '.dirname(__FILE__); } } echo 'TESTING <<<'; ?> $publickey = ""; // you got this from the signup page echo recaptcha_get_html($publickey); ?>  

Danke & Gruß
Mitglied: Arano
Arano 17.02.2014 um 20:44:00 Uhr
Goto Top
Hi,

das ist eines der Dinge die ich wissen wollte.
Ich wollte jetzt nicht wieder nach allem einzeln Fragen, bis ich auf das richtige Treffe. weil ich mir selber nicht sicher bin

Es ist ja sowieso eine *.html-Datei. Die kann normalerweise kein PHP aber auch keine andere Scriptsprache.
Und deine ganzen IFs in der HTML-Datei ließen mich vermuten das evtl. die Template-Enginen SMARTY verwendet wird.
Und in dieser muss man PHP noch einmal in extra "Smarty-Tags" stellen, damit Smarty weiß das es sich dabei um PHP-Code handelt der noch ausgeführt werden soll.
Ist es so ? Wird Smarty verwendet ? Oder eine andere Template-Engine ?
Wenn es Smarty ist, schau mal hier: http://www.smarty.net/docsv2/de/language.function.php.tpl
Und dann probiere es noch einmal.

~Arano

PS. Ich weiß ja nicht wichtig das ist, aber du solltest deinen PublicKey aus dem Beitrag entfernen face-wink
Mitglied: vServer
vServer 17.02.2014 um 21:17:11 Uhr
Goto Top
Hi,

ja ich verwende hier smarty, muss ich dein Code in folgendes packen:
{php}
dein code
{/php}

{php}
<?php
echo 'TESTING >>>';  
  if( function_exists('recaptcha_get_html') )  
  {
    echo '<h1>recaptcha_get_html() Funktion ist verfügbar</h1>';  
  }
  else
  {
    echo '<h1>recaptcha_get_html() Funktion FEHLT !</h1>';  
    if( file_exists('../page/captcha/recaptchalib.php') )  
    {
      echo '<h2>Lib existiert auch...</h2>';  
    }
    else
    {
      echo '<h2>Lib existiert doch NICHT !</h2>';  
      echo 'Wir sind in: '.dirname(__FILE__);  
    }
  }
echo 'TESTING <<<';  
?>
{/php}
Mitglied: Arano
Arano 17.02.2014 um 21:50:03 Uhr
Goto Top
Jap, so ist es.
Und was wird uns dann ausgegeben !?

Bis Morgen
~Arano
Mitglied: vServer
vServer 17.02.2014, aktualisiert am 28.02.2014 um 20:39:37 Uhr
Goto Top
Hi erhalte folgenden:

Fatal error in smarty_internal_templatecompilerbase.php on line 621
Mitglied: Arano
Arano 17.02.2014 um 22:31:05 Uhr
Goto Top
Autsch !
Jetzt ist irgend etwas schief gelaufen Oo

Oh.. hm.. da habe ich dir jetzt was falsches gesagt... -.-

Und jetzt lese ich noch was... evtl. ist das Smarty-{php}-Tag schon wieder abgeschafft worden !?
Aber das schau ich mir jetzt nicht an.

Probieren wir es einfach aus *fg*
Füge mal diesen ganzen Block an die Stelle ein an der das Captcha erscheinen soll. Und alles andere PHP entfernst du.
Dieser Code enthält sowohl dein Captcha als auch meinen (aus wenn der vielleicht nicht mehr nötig ist) nur den PublicKey musst du anpassen.
Wenn die selben Fehlermeldungen erscheinen einfach wieder rausschmeißen und für heute Feierabend machen. Wie es dann funktioniert weiß ich auch nicht.
{php}
  require_once('../page/captcha/recaptchalib.php');  
  $publickey = "meinpublickey";  
echo recaptcha_get_html($publickey);

echo 'TESTING >>>';  
  if( function_exists('recaptcha_get_html') )  
  {
    echo '<h1>recaptcha_get_html() Funktion ist verfügbar</h1>';  
  }
  else
  {
    echo '<h1>recaptcha_get_html() Funktion FEHLT !</h1>';  
    if( file_exists('../page/captcha/recaptchalib.php') )  
    {
      echo '<h2>Lib existiert auch...</h2>';  
    }
    else
    {
      echo '<h2>Lib existiert doch NICHT !</h2>';  
      echo 'Wir sind in: '.dirname(__FILE__);  
    }
  }
echo 'TESTING <<<';  
{/php}

So aus dem Stegreif kenne ich mich auch nicht mit allem aus aber dafür gibt es ja Handbücher, Manuals und Referenzen in denen man nachlesen kann face-smile


~Arano
Mitglied: d4shoerncheN
d4shoerncheN 18.02.2014 aktualisiert um 11:38:25 Uhr
Goto Top
Moin,

mit SMARTY kenne ich mich auch nicht aus. Allerdings liefert das Web einige Ergebnisse zum Thema "Smarty Recaptcha", unteranderem folgende Beiträge:

http://www.codefx.biz/2011/10/recaptcha-with-smarty-php

und

http://www.smarty.net/forums/viewtopic.php?p=75007

und hier

https://developers.google.com/recaptcha/docs/display

Hast du mal eine phpinfo.php erstellt? Schau mal nach ob die Funktion "GD LIBARY" aktiviert ist.

Gruß
@d4shoerncheN
Mitglied: vServer
vServer 18.02.2014 um 15:44:53 Uhr
Goto Top
Hi

arano, habe den Script nochmals getestet, aber leider funktioniert es auch bei diesem nicht.

Finde diese Anleitung am besten von smarty
http://www.smarty.net/forums/viewtopic.php?p=75007

Das hier an die Stelle wo das Captcha erscheinen soll:
{nocache}{$recaptcha}{/nocache}

Wohin soll ich das packen, auch in meine registration.html?

require_once('recaptchalib.php');   

// Get a key from https://www.google.com/recaptcha/admin/create 
$publickey = "<public_key>";   
$privatekey = "<private_key>";   

# the response from reCAPTCHA 
$resp = null; 
# the error code from reCAPTCHA, if any 
$error = null; 

# was there a reCAPTCHA response? 
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
} 

$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

Gruß
Mitglied: Arano
Arano 18.02.2014 um 17:31:18 Uhr
Goto Top
Hi,

Wohin soll ich das packen, auch in meine registration.html?
Nein, das ist doch die Template-Datei - in ihr funktioniert PHP doch nicht.

Aber das Template muss doch von einer anderen PHP-Datei aus aufgerufen werden. In diese musst du das vermutlich hinein kopieren.

~Arano
Mitglied: vServer
vServer 18.02.2014, aktualisiert am 24.02.2014 um 17:08:44 Uhr
Goto Top
Also sollte folgendermaßen das so aussehen?

{include file="header.html" title=$hooks->title->title_registration}  
      <div class="row-fluid">  
			{include file="sidebar.html"}   
        <div class="span8">   
            {if $errorpass}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
            {if $erroruser}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
            {if $errorMail}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
             {if $UserOrMailexist}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits! 
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
                                    
	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"}  
		 	{if $i.id eq 'defaultRegistration'}  
      					<div class="base-block">            
 							<div class="title">{$lang.registration}</div>   							  
						   	  <form id="form1" name="form1" method="post" action="">  
								<label class="log-lab">{$lang.username}:</label>  
								<input name="user" type="text" class="login-input-user" />  
								<label class="log-lab">{$lang.password}:</label>  
								<input name="pass" type="password" class="login-input-pass" /><br /><br />  
								<label class="log-lab">{$lang.mail}:</label>  
								<input name="mail" type="text" class="login-input-pass" /><br />  
								{nocache}{$recaptcha}{/nocache}
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br>  
						   	  </form>
						</div>
 	
            {else}            
 	 			{$i.content}	 
 	 		{/if}            
	 {/foreach}  				
            
        </div><!--/span-->
      </div><!--/row--> 

{include file="footer.html"}  

folgendes in eine recaptcha.php datei:

require_once('recaptchalib.php');   

// Get a key from https://www.google.com/recaptcha/admin/create 
$publickey = "<public_key>";   
$privatekey = "<private_key>";   

# the response from reCAPTCHA 
$resp = null; 
# the error code from reCAPTCHA, if any 
$error = null; 

# was there a reCAPTCHA response? 
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
} 

$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

und wie ruf ich die PHP recaptcha.php über mein Template register.html auf?
Mitglied: Arano
Arano 18.02.2014 um 22:12:59 Uhr
Goto Top
Hi,

Nein, so nicht !
Das Template ist richtig,das kannst du so lassen.

Aber das PHP, das darf nicht in eine beliebige PHP-Datei, es MUSS in GENAU die Datei, die das Template aufruft.
Es wird ja das Template-System verwendet, das macht man um Programmlogik (PHP) und Design(HTML/CSS) von einander zu trennen. Im Prinzip könnte das so aussehen: "Eine z.B. index.PHP-Datei" die abhängig vom einem Parameter eine andere Seite/Template anzeigt:
PSEUDOCODE
PSEUDOCODE
<?php
  // erstelle Smarty-Instanz
  $smarty = new Smarty()
  
  // lade template anhand des parameters
  switch( $_GET['seite'] )  
  {
    case 'impressum':  
      $smarty->lade_template('templates/impressum.html');  
      break;
    case 'kontakt':  
      $smarty->lade_template('templates/kontaktformular.html');  
      break;
    case 'index':  
    case 'start':  
    default:
      $smarty->lade_template('templates/startseite.html');  
      break;
  }
  
  // füge variablen hinzu
  $smarty->assign('titel','Seiten-Name.de');  
  $smarty->assign('var1','wert1');  
  $smarty->assign('var2','wert2');  
  $smarty->assign('var3','wert3');  

  // zeige geladenes template an
  $smarty->display();
?>

__In diesem Beispiel__ müsste dein PHP-Code __ungefähr__ an die Stelle an der die Variablen dem Template hinzugefügt werden.
Ich gehe aber stark davon aus, das deine Seite um einiges komplizierter aufgebaut ist und es für das Registrierformular eine eigene PHP-Datei gibt.
__In genau diese muss du den PHP-Code einfügen !__


Schönen Abend noch
~Arano
Mitglied: vServer
vServer 18.02.2014 aktualisiert um 22:19:39 Uhr
Goto Top
Hi,

ja das ist meine registration.php Datei, also müsste der Code da rein und in die registration.html so wie in meinem letzten Thread beschrieben?

<?php

if (!defined("IN_PASTE"))  
      die("Access denied!");  

if ($startUp->isLogged())
        $startUp->redirect($conf['baseurl'].'/account.html');  
        
if (isset($_POST['submit'])) {  
        if ($startUp->checkMail($_POST['mail'])) {  
                if (!empty($_POST['user'])) {   
                	if (!empty($_POST['pass'])) {   
                		// Check if data is save else we make an error
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true')) {  
                        	$smarty->assign("UserOrMailexist",true);                        	  
                        }                        
                    } else 
                    		$smarty->assign("errorpass",true);  
                } else  
                        $smarty->assign("erroruser",true);                   
        } else
        		$smarty->assign("errorMail",true);   
} else {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  

}
 
$hook->set_title('title_registration', 'Registration');   
$hook->add_content_registration('defaultRegistration', '',10);   

if ($hook->hook_exist('registration_page'))    
		$hook->execute_hook('registration_page');  
Mitglied: Arano
Arano 20.02.2014 um 18:00:37 Uhr
Goto Top
Guten Abend,

hat es denn funktioniert !?
...oder hattest du noch keine Zeit es auszuprobieren ?


~Arano
Mitglied: vServer
vServer 21.02.2014 um 20:56:56 Uhr
Goto Top
Hab es eben nochmals getestet, erhalte dann nur noch eine weiße Seite wenn ich das in die registrieren.php einfüge

require_once('recaptchalib.php');   

// Get a key from https://www.google.com/recaptcha/admin/create 
$publickey = "<public_key>";   
$privatekey = "<private_key>";   

# the response from reCAPTCHA 
$resp = null; 
# the error code from reCAPTCHA, if any 
$error = null; 

# was there a reCAPTCHA response? 
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
} 

$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));   
Mitglied: Arano
Arano 21.02.2014 um 21:20:55 Uhr
Goto Top
Hi

ich hoffe du hast das nicht einfach so in die Datei "reingeprügelt" !?
Probiere es hat Step-by-step:
(Zeilennummern sind auf die Stellen des Queltextes vom 18.02.2014 22:19Uhr bezogen)
  1. Das require_once() in Zeile 2 -> testen
  2. $publickey __unter__ Zeile 2 einfügen -> testen
  3. assign('recaptcha') in Zeile 28 -> testen: (Captcha sollte erscheinen wenn im Template die Variable eingebungenwird)

Die Fehlerprüfung ist ja ersteinmal unwichtig, solange kein Captcha erscheint bringt uns die sowieso nichts.

~Arano
Mitglied: vServer
vServer 21.02.2014 aktualisiert um 21:38:45 Uhr
Goto Top
ich hätte noch ein eigenes Captcha, also nicht das ReCaptcha..

das würde auch reichen, habe es eben schnell in die Registrierung.html eingebaut aber das frägt nicht ab bzw. auch wenn ich nichts eingebe wird die Registrierung durchgeführt, bei der anderen Seite mit der Sicherheitsabfrage funktioniert es, wo es schon standartmäßig drin war.

              <h4>Captcha</h4>
              <p>
				<input data-placement="right" rel="tooltip" data-original-title="{$lang.validcaptcha}" id="txtCaptcha" type="text" name="txtCaptcha" maxlength="5" size="13" /><br />  
				<img data-placement="right" rel="tooltip" data-original-title="{$lang.CoCtrit}" id="imgCaptcha" src="libs/captcha/create_image.php" onclick="setTimeout('refreshimg()', 300); return false;" alt="{$lang.CoCtrit}" /><br /><br />  
				<input name="submit" type="submit" value="Speichern" id="submit" class="btn btn-primary" />       
              </p>

            {if isset($errorCaptcha)}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> {$lang.wrongCaptcha}
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}  

habe es so eingebaut:

{include file="header.html" title=$hooks->title->title_registration}  
      <div class="row-fluid">  
			{include file="sidebar.html"}  
        <div class="span8">  
            {if $errorpass}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}
            {if $erroruser}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
            {if $errorMail}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}
             {if $UserOrMailexist}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits! 
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}
            {if isset($errorCaptcha)}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> {$lang.wrongCaptcha}
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}  

	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"}  
		 	{if $i.id eq 'defaultRegistration'}  
      					<div class="base-block">  
 							<div class="title">{$lang.registration}</div>  
						   	  <form id="form1" name="form1" method="post" action="">  
								<label class="log-lab">{$lang.username}:</label>  
								<input name="user" type="text" class="login-input-user" />  
								<label class="log-lab">{$lang.password}:</label>  
								<input name="pass" type="password" class="login-input-pass" /><br /><br />  
								<label class="log-lab">{$lang.mail}:</label>  
								<input name="mail" type="text" class="login-input-pass" /><br />  
								<p>
								<input data-placement="right" rel="tooltip" data-original-title="{$lang.validcaptcha}" id="txtCaptcha" type="text" name="txtCaptcha" maxlength="5" size="13" /><br />  
								<img data-placement="right" rel="tooltip" data-original-title="{$lang.CoCtrit}" id="imgCaptcha" src="libs/captcha/create_image.php" onclick="setTimeout('refreshimg()', 300); return false;" alt="{$lang.CoCtrit}" /><br /><br />  
								<input name="submit" type="submit" value="Speichern" id="submit" class="btn btn-primary" />       
								</p>
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br>  
								<div class="agb-datenschutzbestimmungen">Wenn du auf "Registrieren" klickst, erklärst du dich mit unseren AGB einverstanden.</div>  
						   	  </form>
						</div>
 	
            {else}    
 	 			{$i.content}
 	 		{/if}
	 {/foreach}
            
        </div><!--/span-->
      </div><!--/row--> 

{include file="footer.html"}  

Danke face-smile
Mitglied: Arano
Arano 22.02.2014 um 15:50:35 Uhr
Goto Top
NEE! HALT! STOP !

Ich arbeite doch nicht für dich an einer Lösung eines bestehenden Problems, damit du mitten drin einfach alles wegwirfst und mit nem __anderem__ Problem daher kommst....

Alles fürn Arsch...
...noch mal von Vorne !?

Nee, nicht mit mir !
Wenn du weitermachen willst, sie letzten Beitrag von mir, andernfalls stehst du alleine da.


~Arano
Mitglied: vServer
vServer 22.02.2014 um 18:31:40 Uhr
Goto Top
Hi,

ja das von ReCaptcha wär schon besser, war nur nen Vorschlag falls das nicht funktioniert mit dem ReCapchta.

Sobald ich das in die registrieren.php reinwerfe:
require_once('recaptchalib.php');

erhalte ich nur noch eine leere weiße Seite wenn ich die Registrieren.html aufrufe.

Gruß & Danke
Mitglied: Arano
Arano 22.02.2014 um 20:19:34 Uhr
Goto Top
Dan probiere mal:
ini_set( 'display_errors','On' );  
ini_set( 'error_reporting',E_ALL );  
echo 'Hallo ';  
require_once(     ...DEIN_PFAD...     );
echo 'Welt !';  
Und schau in den Quelltext der angezeigten Seite.
Wichtig ist ja zu sehen was der Server generiert und übertragen hat, nicht was der Browser (meint) anzeigen zu dürfen.


~Arano
Mitglied: vServer
vServer 22.02.2014, aktualisiert am 24.02.2014 um 17:09:58 Uhr
Goto Top
Also habe nun folgende Meldung
Parse error: syntax error, unexpected '/' in /registration.php on line 23

bei folgendem:
ini_set( 'display_errors','On' );  
ini_set( 'error_reporting',E_ALL );  
echo 'Hallo ';  
require_once(../page/captcha/recaptchalib.php);
echo 'Welt !';  

mach ich es so:
ini_set( 'display_errors','On' );  
ini_set( 'error_reporting',E_ALL );  
echo 'Hallo ';  
require_once(page/captcha/recaptchalib.php);
echo 'Welt !';  


erhalte ich folgendes:
Hallo Notice: Use of undefined constant page - assumed 'page' in /var/www/page/registration.php on line 23 Notice.
Mitglied: Arano
Arano 22.02.2014 aktualisiert um 21:11:12 Uhr
Goto Top
Das ist jetzt ein blöder Fehler deiner Seits :-P

require_once(page/captcha/recaptchalib.php);
Der Pfad MUSS doch in Anführungszeichen stehen (nimm einfache ' die werden __nicht__ nach Variablen durchsucht und sind somit schneller)

Und weil der Pfad nicht in Anführungszeichen steht, geht der PHP-Interpreter davon aus das es sich um Konstanten handelt und versucht diese zu finden, weil diese aber auch nicht existieren gibts einen Fehler !
Das Slash (/) wiederum ist kein gültiges Zeichen für eine Konstante so das der Interpreter auch in diesem Kontext nicht weiss was es damit anfangen soll und wirft einen weiteren Fehler. In deinem zweitem Versuch z.B. interpretiert der Interpreter das Slash als Mathematischeszeichen (Division) und versucht entsprechend damit zu rechnen. Das geht aber auch schief weil sowohl Dividend als auch Divisor Konstanten sind die nicht existieren.
Daher so viele Fehlermeldungen.

Wir sehen also das display_errors und error_reporting zwei sehr wichtige Direktiven während der Programmierung/des Debuggens sind und immer (während des Programmierens) gesetzt sein sollten. Aber niemals auf Produktivsystemen

Also Fehler beheben und erneut Probieren

Achja !
Wir sehen übrigens auch das "Hallo" aus unserem erstem echo, aber das "Welt!" sehen wird nicht.
Die Fehler führen also komplett zu einem Abbruch des Scripts.
So kann man auf einfache weise ermitteln wie weit ein Script läuft und wann es abbricht: Der Fehler liegt also VOR dem "Welt!" aber nach dem "Hallo"


~Arano
Mitglied: vServer
vServer 22.02.2014, aktualisiert am 28.02.2014 um 20:40:08 Uhr
Goto Top
Ahh okay, Respekt, hab ich gar nicht gesehen face-smile erhalte irgendwie nun

Hallo Warning: require_once(../page/captcha/recaptchalib.php): failed to open stream: No such file or directory in registration.php on line 23 Fatal error: require_once(): Failed opening required '../page/captcha/recaptchalib.php' (include_path='.:/usr/share/php:/usr/share/pear') in registration.php on line 23

der Pad müsste soweit stimmen recaptcha liegt hier /var/www/page/captcha/recaptchalib.php

Danke face-smile
Mitglied: Arano
Arano 22.02.2014 aktualisiert um 22:45:45 Uhr
Goto Top
Halleluja! face-smile
Endlich gibts ne vernünftige Fehlermeldung - Amen.

der Pad müsste soweit stimmen
Ähm... Nee !
  1. Sagt der Fatal error etwas anderes: "No such file or directory" -> "Datei oder Verzeichnis __nicht__ gefunden" und
  2. "müsste" ist nicht "ist" !

Passend wäre es natürlich herauszufinden, an welcher Stelle in den Verzeichnissen wir uns aktuelle befinden um dann den passenden relativen Pfad anzugeben.
Aber dazu haben wir beide denke ich keine Lust mehr, also nehmen wir den absoluten Pfad.
Probiere es erneut mit
require_once('/var/www/page/captcha/recaptchalib.php');  

Da fällt mir gerade ein, evtl. ist es auch ein Rechteproblem !
Wenn es also mit dem absolutem Pfad auch nicht funktioniert, dann überprüfe einmal die Dateirecht der einzubindenden Datei... wenn die nicht gelesen werden darf, macht das natürlich auch keinen Sinn *g*


EDIT: Moment, da seht je der Pfad wo wir sind XD
Gib mir ne Sekunde...


So... das sind die beiden absoluten Dateipfade:
/var/www/page/onpaste/pages/registration.php/var/www/page/captcha/recaptchalib.php

Das require_once() hast du in die registration.php-Datei geschrieben. Wir befinden uns also in dem Verzeichnis "pages" und die Wegbeschreibung zur Lib ist daher:
  1. zurück in das Verzeichnis "onpaste"
  2. zurück in das Verzeichnis "page"
  3. vor in das Verzeichnis "captcha"
  4. Datei selber

Dein relativer Pfad IST also falsch !
Richtig sollte sein: "../../captcha/recaptchalib.php"


~Arano
Mitglied: vServer
vServer 22.02.2014, aktualisiert am 28.02.2014 um 20:40:37 Uhr
Goto Top
Hi,

Hallo Warning: require_once(../../captcha/recaptchalib.php): failed to open stream: No such file or directory in registration.php on line 23 Fatal error: require_once(): Failed opening required '../../captcha/recaptchalib.php' (include_path='.:/usr/share/php:/usr/share/pear') in /registration.php on line 23

öffnen müsste sich die recaptchalib schon öffnen lassen bzw. die Rechte (sollten) stimmen, weil bei einem anderen Register ebenso das recaptchalib.php verwendet wird.

Gruß Tobi
Mitglied: Arano
Arano 23.02.2014 aktualisiert um 09:00:45 Uhr
Goto Top
Gibts ja nich...

Und mit dem absolutem Pfad !? vielleicht habe ich mich bei dem relativen Pfad auch verhauen...

In der Regel sollte man, eben wegen solcher Probleme, immer den absoluten Pfad verwenden.
Dazu erstellt man sich eine Konstante die auf das "Document Root" zeigt. und von dieser Position aus, kann man dann die weiteren Pfade angeben.
z.B.:
<?php
  define( 'ROOT', '/var/www/page/' );  
  # oder
  define( 'ROOT', '/var/www/' );  

  include ROOT.'captcha/recaptchalib.php';  
  include_once ROOT.'captcha/recaptchalib.php';  
  require ROOT.'captcha/recaptchalib.php';  
  require_once ROOT.'captcha/recaptchalib.php';  
  # oder
  include ROOT.'page/captcha/recaptchalib.php';  
  include_once ROOT.'page/captcha/recaptchalib.php';  
  require ROOT.'page/captcha/recaptchalib.php';  
  require_once ROOT.'page/captcha/recaptchalib.php';  
?>
Das ganze lässt sich dann auch für einzelne Projekte erweitern:
<?php
  define( 'ROOT', '/var/www/' );  
  # definiere Konstante für url-shorter
  define( 'ROOT_S', ROOT.'page/' );  
  # definiere Konstante für onpaste
  define( 'ROOT_O', ROOT.'page/onpast/' );  

  # oder für andere oft benötigte Daten
  define( 'LIBS', ROOT.'libs/' );  
  require LIBS.'recaptchalib.php' );  
?>

~Arano
Mitglied: vServer
vServer 23.02.2014, aktualisiert am 24.02.2014 um 17:10:57 Uhr
Goto Top
Hi,

ja, die links stimmen.
/var/www/page/pages/registration.php
/var/www/page/captcha/recaptchalib.php


mit dem absoluten zeigt es mir jetzt endlich folgendes oben links an:
"Hallo Welt"
Mitglied: Arano
Arano 23.02.2014 um 17:17:39 Uhr
Goto Top
Hi,

mit dem absoluten zeigt es mir jetzt endlich folgendes oben links an:
"Hallo Welt"
Wie eben angedeutet, mit den absoluten Pfaden kann man sich absolut sicher sein absolut nichts falsch gemacht zu haben face-wink

Da wir nun ein vollständiges "Hallo Welt!" sehen wissen wir das es, zumindest nicht dazwischen, zu einer NOTICE, WARNING, oder FATAL ERROR kommt. Denn diese Meldung würden zwischen den beiden Wörtern stehen.

Wegen der trotzdem erscheinenden NOTICE tippe ich mal auf eine $smarty-Variable, die zwar im Template verwendet wird, aber im PHP __nicht__ definiert wurde. Das allerdings ist eine andere Baustelle - hier gehts ums Captcha:

Zitat von @Arano
(Zeilennummern sind auf die Stellen des Queltextes vom 18.02.2014 22:19Uhr bezogen)
  1. Das require_once() in Zeile 2 -> testen
  2. $publickey unter Zeile 2 einfügen -> testen
  3. assign('recaptcha') in Zeile 28 -> testen: (Captcha sollte erscheinen wenn im Template die Variable eingebunden wird)
Punk 1 haben wir gerade erledigt, weiter gehts bei 2


~Arano
Mitglied: vServer
vServer 23.02.2014 um 17:24:29 Uhr
Goto Top
Nun den Public Key hier zwischen rein beim testscript, oder bin ich falsch?

ini_set( 'display_errors','On' );  
ini_set( 'error_reporting',E_ALL );  
echo 'Hallo ';  
require_once('meinpfad");  
$publickey = "<public_key>";  
$privatekey = "key";  

echo 'Welt !';  
Mitglied: Arano
Arano 23.02.2014 um 17:44:12 Uhr
Goto Top
Ja, genau so !
Und beim testen sollte dann keine zusätzliche Fehlermedung erscheinen.
Das ist jetzt zwar völlig übertrieben selbst das zu testen, aber sicher ist sicher.
Immer schön einen Schritt nach dem anderem...

Und wenn das geklappt hat, kannst du auch gleich mit 3. weitermachen.
3. speichert den von der Funktion generierten HTML-Code in einer Smarty-Variable. Und wenn diese Variable im Template verwendet wird, sollte an ihrer stelle das Capche erscheinen.

Das ist zumindest der Plan.


~Arano
Mitglied: vServer
vServer 23.02.2014 um 18:29:20 Uhr
Goto Top
In der registrieren.php habe ich nun folgendes Zeile 28:

} else {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  
	$smarty->assign("recaptcha",false);  

}

und dieses hier ganz oben in der registrieren.php

ini_set( 'display_errors','On' );  
ini_set( 'error_reporting',E_ALL );  
echo 'Hallo ';  
require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "X";  
$privatekey = "X";  
echo 'Welt !';  

in der html von registrieren habe ich:
{nocache}{$recaptcha}{/nocache}

angezeigt wird noch kein captcha
Mitglied: Arano
Arano 23.02.2014 um 18:42:58 Uhr
Goto Top
Ich muss ehrlich zugeben, ich habe keine Ahnung mehr wie deine registrieren.php-Datei nun aussieht XD

Die beiden echos für das HalloWelt kannst du jetzt übrigends ruhig raus löschen, die brauchen wir nicht mehr.

Aktuell kann dir ja auch nichts angezeigt werden, denn du setzt die Smarty-Variable ja auch auf "FALSE".
$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));


~Arano
Mitglied: vServer
vServer 23.02.2014 um 18:53:34 Uhr
Goto Top
Hi,

erhalte nun folgendes, wenn ich mein register aufrufe:
To use reCAPTCHA you must get an API key from https://www.google.com/recaptcha/admin/create

Gruß Tobi face-smile
Mitglied: Arano
Arano 23.02.2014 um 19:57:57 Uhr
Goto Top
Na super, dann funktioniert es jetzt ja !
Also ich weiss was das Problem ist.
Aber diesesmal musst du es selber heraus finden und beheben.
Schau dir deinen Code genau an, dann solte es dir auffallen.


Viel Spaß beim Rätzeln :-P
~Arano
Mitglied: vServer
vServer 23.02.2014 um 21:36:49 Uhr
Goto Top
Ah das hab ich vergessen oder?

# the response from reCAPTCHA 
$resp = null; 
# the error code from reCAPTCHA, if any 
$error = null; 

# was there a reCAPTCHA response? 
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
}

und kann ich noch ein Error hinzufügen:
            {if $recaptcha}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Das Captcha war leider falsch!
                   	<a href="#" class="close" data-dismiss="alert">×</a>  
            </div>
            {/if} 
Mitglied: Arano
Arano 23.02.2014 um 21:49:55 Uhr
Goto Top
Hach... -.-

Nein und Ja.
Nein das ist nicht das Problem
Ja, das kommt auch noch dazu - aber erst später.

Denn was wollen wir denn mit der Prüfroutine, wenn und das Captcha noch nicht einmal richtig angezeigt wird ?

Siehe her:
$publickey = "X";   
$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  
Siehst du den Fehler jetzt !?

und kann ich noch ein Error hinzufügen:
Sei mir nicht böse aber... ich habe da so meine Zweifel !
Technisch ist das gar kein Problem. Das Captcha einzubinden ist allerdings auch technisch kein Problem und trotzdem haben wir hier einen Thread von über 40 Beiträgen.

...poste mal beide Dateien (die PHP- und die Template-Datei) komplett hier im Forum bitte.


Gute Nacht
~Arano
Mitglied: vServer
vServer 23.02.2014, aktualisiert am 24.02.2014 um 17:10:28 Uhr
Goto Top
Hi,

ja stimmt sind schon einige geworden :D aber wieder was dazu gelernt face-smile

das hier: ($pub_key, in -> ($public_key, oder?

die registrieren.html
{include file="header.html" title=$hooks->title->title_registration}  
      <div class="row-fluid">  
			{include file="sidebar.html"}  
        <div class="span8">  
            {if $errorpass}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}
            {if $erroruser}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if} 
            {if $errorMail}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden!
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}
            {if $UserOrMailexist}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits! 
                   	<a href="#" class="close" data-dismiss="alert">&times;</a>  
            </div>
            {/if}

	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"}  
		 	{if $i.id eq 'defaultRegistration'}  
      					<div class="base-block">  
 							<div class="title">{$lang.registration}</div>  
						   	  <form id="form1" name="form1" method="post" action="">  
								<label class="log-lab">{$lang.username}:</label>  
								<input name="user" type="text" class="login-input-user" />  
								<label class="log-lab">{$lang.password}:</label>  
								<input name="pass" type="password" class="login-input-pass" /><br /><br />  
								<label class="log-lab">{$lang.mail}:</label>  
								<input name="mail" type="text" class="login-input-pass" /><br />  
								{nocache}{$recaptcha}{/nocache}
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br>  
						   	  </form>
						</div>
 	
            {else}    
 	 			{$i.content}
 	 		{/if}
	 {/foreach}
            
        </div><!--/span-->
      </div><!--/row--> 

{include file="footer.html"}  

und die registration.php
require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "x";  
$privatekey = "x";  

if (!defined("IN_PASTE"))  
      die("Access denied!");  

if ($startUp->isLogged())
        $startUp->redirect($conf['baseurl'].'/account.html');  
        
if (isset($_POST['submit'])) {  
        if ($startUp->checkMail($_POST['mail'])) {  
                if (!empty($_POST['user'])) {   
                	if (!empty($_POST['pass'])) {   
                		// Check if data is save else we make an error
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true')) {  
                        	$smarty->assign("UserOrMailexist",true);                        	  
                        }                        
                    } else 
                    		$smarty->assign("errorpass",true);  
                } else  
                        $smarty->assign("erroruser",true);                   
        } else
        		$smarty->assign("errorMail",true);   
} else {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

}
 
$hook->set_title('title_registration', 'Registration');   
$hook->add_content_registration('defaultRegistration', '',10);   

if ($hook->hook_exist('registration_page'))    
		$hook->execute_hook('registration_page');  
Mitglied: Arano
Arano 24.02.2014 um 10:57:15 Uhr
Goto Top
Moin,

das hier: ($pub_key, in -> ($public_key, oder?
Das ist doch nicht dein Ernst oder ? Oo :,(
Die Stelle ist schon richtig, aber die beiden Variablen heißen:
  • $pub_key
  • $publickey
Wie kommst du da auf $public_key ? Diese Variable existiert doch gar nicht...
Aber, und das war auch wieder richtig, du musst dich hier auf einen Namen einigen. Welcher ist egal, haubtsacher der Funktion wird der PublicKey übergeben und sie kann das Captcha generieren.


~Arano
Mitglied: vServer
vServer 24.02.2014 um 17:06:20 Uhr
Goto Top
Hi,

Eeeeeendlich, geil face-smile Respekt Danke jetzt funktioniert es endlich face-smile

für ein Error müsste das normalerweise ausreichen oder:

            {if $recaptcha}
                	 <br />
            <div class="alert alert-error">  
                   	<b>{$lang.error} :</b> Ihr Captcha ist ungültig!
                   	<a href="#" class="close" data-dismiss="alert">×</a>  
            </div>
            {/if}
Mitglied: Arano
Arano 24.02.2014 um 17:30:09 Uhr
Goto Top
Huhu,

sehr schön ! face-smile

für ein Error müsste das normalerweise ausreichen oder:
Nein !
  1. ist das nur ein kleiner Teil von dem was noch fehlt und
  2. Die Smarty-Variable $recaptcha enthält doch das generierte HTML für die Anzeige des Captchas selber.

Aber ich muss mich gerade mal um etwas anders kümmern, ich melde mich dann mit den nächsten Schritten.
Denn bevor wir eine Captcha fehler anzeigen lassen, muss erstmal geprüft werden ob es überhaupt einen gibt bzw. ob das Captcha richtig gelöst wurde. Die Anzeige eines Captchafehler ist das letzte um das wir uns kümmern.


Bis dann
~Arano
Mitglied: vServer
vServer 24.02.2014 um 17:34:20 Uhr
Goto Top
Kein Problem face-smile

Ja genau, das habe ich gerade auch eben gemerkt das es noch nicht geprüft wird ob es richtig bzw. falsch eingegeben wurde, lässt sich trotz Falscheingabe registrieren.

Gruß Tobi
Mitglied: Arano
Arano 24.02.2014 um 20:41:48 Uhr
Goto Top
So!

Da wir hier ja eh schon ein kleines Buch schreiben, ich eigentlich kein Fan davon bin anderen fertigen Code "hinzuwerfen", habe ich mir überlegt das du __mehr machen musst__.

Okay, die Anzeige des Captchas haben wir ja nun auch erfolgreich beendet.
Wie geht es weiter !?
Nach dem Absenden des Captchas muss dieses nun (1) auf Korrektheit geprüft werden. Daraus ergeben sich dann zwei weitere Fälle, entweder der Test wurde (2) bestanden oder (3) nicht. Und das sind auch die nächsten Punkte die wir/du abarbeiten musst.
  1. die Prüfung
  2. der Fall des Bestehens und
  3. der Fehlerfall

__1. die Prüfung__
Natürlich müssen wir die "Antwort" des Benutzers auf die Frage des Captchas auf Korrektheit überprüfen, das ist ja der Sinn des Captchas. Da du das reCaptcha verwendest haben wir zu keinem Zeitpunk Kontrolle darüber was gefragt wird und wie die Antwort lauten könnte, also können wir die Überprüfung gar nicht selber machen. Glücklicherweise stellt uns das reCaptcha dafür eine passenden Funktion zur Verfügung die wir nur noch benutzen müssen.
Und jetzt kommst du in Spiel !
Vor ein paar Beiträgen wolltest du schon einmal Code verwenden der noch fehlt, diesen brauchen wir jetzt und den findest du im erstem Codeblock hier: ReCaptcha - Registerformular wird nicht angezeigt
Aber vorsicht, einfach kopieren und an einer freien Stelle einfügen funktioniert __nicht__ !
Schau dir diesen Code genau an... was passiert da.
Schau dir auch den Code von registration.php an... was passiert hier.
Wie muss der noch fehlende Code (oder vielleicht nur ein Teil davon) in die registration.php eingebaut werden ?


~Arano
Mitglied: vServer
vServer 26.02.2014 um 22:25:32 Uhr
Goto Top
Hi, hab endlich wieder Zeit an mein Computer zu kommen face-smile

also, aber das sollte ja so normalerweise passen, die arrays sind alle drin, die if abfragen bräuchte ich normalerweise nicht.

# the response from reCAPTCHA 
$resp = null; 
# the error code from reCAPTCHA, if any 
$error = null; 

# was there a reCAPTCHA response? 
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
}

Danke face-smile
Mitglied: Arano
Arano 27.02.2014 um 10:49:24 Uhr
Goto Top
Moin,

[...] die if abfragen bräuchte ich normalerweise nicht.
Das musst du mir erklären !
Denn ich wüsste nicht warum man sie weglassen sollte !
Ganz im Gegenteil, ich finde sie WICHTIG.


~Arano
Mitglied: vServer
vServer 27.02.2014 um 21:41:51 Uhr
Goto Top
Hm ja stimmt, folgendes würde reichen, weil nur das die Antwort prüft:

if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
}

Gruß Tobi face-smile
Mitglied: Arano
Arano 28.02.2014 um 10:57:14 Uhr
Goto Top
Moin,

das ist der Code den du brauchst.
Dieser muss nun in die "registration.php" eingefügt werden. ABER einfach an einer freien Stelle einfügen funktioniert nicht ! Er muss schon richtig in den vorhandenen Code eingearbeitet werden damit ALLES (und nicht __nur__ das Captcha) funktioniert.

  • Was passiert noch in der "registration.php",
  • wie ist die Reihenfolge und
  • an welcher Stelle macht die Captcha prüfung Sinn.


~Arano
Mitglied: vServer
vServer 28.02.2014 aktualisiert um 20:37:37 Uhr
Goto Top
Hi,

der muss nun in die zwischen die Zeilen 9-11 in meiner registration.php vom Beitrag von 23.02.2014 um 22:02 Uhr.

stimmt das so:

require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "x";  
$privatekey = "x";  

if (!defined("IN_PASTE"))  
      die("Access denied!");  

if ($startUp->isLogged())
        $startUp->redirect($conf['baseurl'].'/account.html');  

if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
}
   
if (isset($_POST['submit'])) {  
        if ($startUp->checkMail($_POST['mail'])) {  
                if (!empty($_POST['user'])) {   
                	if (!empty($_POST['pass'])) {   
                		// Check if data is save else we make an error
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true')) {  
                        	$smarty->assign("UserOrMailexist",true);                        	  
                        }                        
                    } else 
                    		$smarty->assign("errorpass",true);  
                } else  
                        $smarty->assign("erroruser",true);                   
        } else
        		$smarty->assign("errorMail",true);   
} else {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

}
 
$hook->set_title('title_registration', 'Registration');   
$hook->add_content_registration('defaultRegistration', '',10);   

if ($hook->hook_exist('registration_page'))    
		$hook->execute_hook('registration_page');  

Danke face-smile
Mitglied: Arano
Arano 28.02.2014 um 20:51:52 Uhr
Goto Top
Hi face-smile

Nein, so stimmt das nicht !
Wie gesagt, einfach komplett einfügen funktioniert __nicht__ !

Genau genommen muss der "Prüfcode" in zwei Teile geteilt werden die jeweils an einer anderen Stelle eingefügt werden müssen.

Verstehst du überhaupt den Code in der "registration.php" und was dort passiert, geprüft und abgefragt wird !?


~Arano
Mitglied: vServer
vServer 28.02.2014 um 21:17:42 Uhr
Goto Top
Ja, versteh ich schon ungefähr.

Stimmt folgendes müsste in die if (isset($_POST['submit'])) { mit rein, das es ja geprüft wird ob das Feld ausgefüllt & richtig ist oder?

        if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
        } 
Mitglied: Arano
Arano 28.02.2014 um 21:48:02 Uhr
Goto Top
Ja, versteh ich schon ungefähr.
Muss man ja mal gefragt haben.

Also der Gedanke geht schon mal in die richtige Richtung !
Allerdings muss der Rest __auch__ in den Anweisungsblock "{ ... }" des genannten IFs.
Denn nur wenn das Formular abgeschickt wurde (und damit auch das Captcha), macht es Sinn, die Eingaben zu überprüfen.

Mal etwas anders gefragt, an welcher Stelle würdest du den "Prüfcode" in zwei Teile teilen und warum !?


~Arano
Mitglied: vServer
vServer 28.02.2014 um 22:06:58 Uhr
Goto Top
Hi,

$resp->is_valid wenn das richtig war, dann macht er mit der Formularverarbeitung weiter, und mit $resp->error zeigt er dann die Fehlermeldung an, das sollte er ja dann prüfen wenn wir auf submit klicken, und dazu brauchen wir die recaptcha_check_answer, also beim ersten Teil prüft er das dann ob es richtig oder falsch war.

Gruß face-smile
Mitglied: Arano
Arano 28.02.2014 aktualisiert um 22:27:32 Uhr
Goto Top
Formulieren wir deinen Antwort mal ein wenig um:

Mit recaptcha_check_answer() wird die Eingabe zum Captcha überprüft. Als Rückgabewert erhalten wir allerdings keine direkte Antwort "richtig/falsche" sondern nur ein Objekt welches in der Variable $resp(-onse) (dt. Antwort) gespeichert wird.

Die richtige Überprüfung muss also noch vorgenommen werden, und das geschieht über die Eigenschaft "is_valid" des Objekts. Dieses Eigenschaft kann TRUE aber auch FALSE sein. Für den Falls das die FALSE ist, gibt es dann noch die Eigenschaft "error" die eine Fehlermeldung bereit hält.

Und wie du schon sagtest, wenn $resp->is_valid===true dann machen wir mit der Formularverarbeitung weiter, sprich erst dann überprüfen wir auch die anderen Eingaben.
Aber wenn $resp->is_valid===false dann gab es einen Fehler beim abfragen des Captchas beim ReCaptcha-Server.

Dann setze den Code doch mal komplett zusammen und Poste ihn.


~Arano
Mitglied: vServer
vServer 28.02.2014 um 22:53:22 Uhr
Goto Top
Ah ok, top, habs nun zusammengestellt:

require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "x";  
$privatekey = "x";  

if (!defined("IN_PASTE"))  
      die("Access denied!");  

if ($startUp->isLogged())
        $startUp->redirect($conf['baseurl'].'/account.html');  

if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   
}
   
if (isset($_POST['submit'])) {  
        if ($startUp->checkMail($_POST['mail'])) {  
                if (!empty($_POST['user'])) {   
                	if (!empty($_POST['pass'])) {   
                		// Check if data is save else we make an error
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) {  
                        	$smarty->assign("UserOrMailexist",true);                        	  
                        }                        
                    } else 
                    		$smarty->assign("errorpass",true);  
                } else  
                        $smarty->assign("erroruser",true);                   
        } else
        		$smarty->assign("errorMail",true);   
} else
if ($resp->is_valid) { 
	echo "You got it!";   
	} else { 
		# set the error code so that we can display it 
		$error = $resp->error; 
}  {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

}
 
$hook->set_title('title_registration', 'Registration');   
$hook->add_content_registration('defaultRegistration', '',10);   

if ($hook->hook_exist('registration_page'))    
		$hook->execute_hook('registration_page');  
Mitglied: Arano
Arano 01.03.2014 um 00:06:56 Uhr
Goto Top
Hm...
Nöö...

Wir/DU SELBER hatten doch vorhin schon festgestellt, das alles in den Anweisungsblock des IFs if( isset($_POST['submit']) ) gehört weil eine Prüfung doch erst dann Sinn macht, wenn das Formular abgeschickt wurde !

Wieso sind denn nun Zeile 11-16 außerhalb des Anweisungsblocks !?

Ncoh ne Hilfestellung:
Di hast den Prüfcode nun auch an der falschen Stelle getrennt !
Getrennt werden muss er im Anweisungsblock des IFs if( $resp->is_valid )


Wenn du es doch nicht verstehst, dann sag es, ansonsten reden wir uns hier beide den Mund fusselig.


~Arano
Mitglied: vServer
vServer 01.03.2014 um 23:53:18 Uhr
Goto Top
Versteh nur nicht genau, wo genau ich das einfügen soll, den Prüfcode habe ich nochmals versetzt ob er nun richtig ist weiß ich nicht genau:

require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "x";  
$privatekey = "x";  

if (!defined("IN_PASTE"))  
      die("Access denied!");  

if ($startUp->isLogged())
        $startUp->redirect($conf['baseurl'].'/account.html');  

        
if (isset($_POST['submit'])) {  
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   
        if ($startUp->checkMail($_POST['mail'])) {  
                if (!empty($_POST['user'])) {   
                	if (!empty($_POST['pass'])) {   
                		// Check if data is save else we make an error
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'], $_POST[' recaptcha_check_answer'], 'true','true')) {   
                        	$smarty->assign("UserOrMailexist",true);                        	  
                        }                        
                    } else 
                    		$smarty->assign("errorpass",true);  
                } else  
                        $smarty->assign("erroruser",true);                   
        } else
        		$smarty->assign("errorMail",true);   
} 

else {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

}

if ($resp->is_valid) { 
                echo "You got it!";   
        } else { 
                # set the error code so that we can display it 
                $error = $resp->error; 
} 
 
$hook->set_title('title_registration', 'Registration');   
$hook->add_content_registration('defaultRegistration', '',10);   

if ($hook->hook_exist('registration_page'))    
		$hook->execute_hook('registration_page');  
Mitglied: Arano
Arano 02.03.2014 aktualisiert um 12:02:49 Uhr
Goto Top
Nehmen wir mal nur die IFs aus der "registration.php"

if (isset($_POST['submit'])) {  
    if ($startUp->checkMail($_POST['mail'])) {  
        if (!empty($_POST['user'])) {  
            if (!empty($_POST['pass'])) {  
                if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) {  
"Übersetzen" wir die mal in "Menschensprache":
  • wenn das Formular abgeschickt wurde
    • wenn eine gültige E-Mail-Adresse eingegeben wurde
      • wenn ein Benutzername eingegeben wurde
        • wenn ein Passwort eingegeben wurde
          • wenn Benutzer (erfolgreich) angelegt wurde

Der logische Ablauf ist also:
Wenn das Formular abgeschickt wurde, überprüfen wir ob eine E-Mail-Adresse eingegeben wurde, DANN ob ein Benutzername angegeben wurde, DANN ob ein Passwort dazu angegeben wurde und ERST DANN (wenn alle Angaben vorhanden sind) speichern wir den neuen Benutzer-Account.

Da hinein muss nun die Captchaprüfung integriert werden.
Aus welchen Schritten besteht die Captcha Prüfung und wie passen die Sinnvoll in das vorhandene !?
if ($_POST["recaptcha_response_field"]) {  
    if ($resp->is_valid) {
Zu Mensch:
  • wenn ein Captchaeingabefeld übertragen wurde (doof programmiert, dies kann nämlich auch LEER sein !)
    • wenn das Capcha richtig gelöst wurde

Du muss also eigentlich "nur" die 2 neuen Schritte in die ersten 5 vorhandenen einfügen.

Mach das einmal mit dem 7 Textzeilen die ich gerade aufgelistet habe, und anschließend passt du den Code an.
Ich möchte gerne BEIDES sehen !


Schönen Sonntag soweit
~Arano
PS: wer solch einen Service aufzieht, der MUSS auch damit umgehen können
Mitglied: vServer
vServer 02.03.2014 aktualisiert um 13:35:53 Uhr
Goto Top
Hi,

oh stimmt, ich habe das wieder auserhalb gehabt, so müsste es nun passen:

if (isset($_POST['submit'])) {  
    if ($startUp->checkMail($_POST['mail'])) {  
        if (!empty($_POST['user'])) {  
            if (!empty($_POST['pass'])) {  
              if ($_POST["recaptcha_response_field"]) {  
                if ($resp->is_valid) {
                if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) {  

im ganzen:

require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "x";  
$privatekey = "x";  

if (!defined("IN_PASTE"))  
      die("Access denied!");  

if ($startUp->isLogged())
        $startUp->redirect($conf['baseurl'].'/account.html');  
        
if (isset($_POST['submit'])) {  
        if ($startUp->checkMail($_POST['mail'])) {  
                if (!empty($_POST['user'])) {   
                	if (!empty($_POST['pass'])) {  
                		if ($_POST["recaptcha_response_field"]) {  
                			if ($resp->is_valid) {
                	// Check if data is save else we make an error
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) {  
                        	$smarty->assign("UserOrMailexist",true);                        	  
                        }                        
                    } else 
                    		$smarty->assign("errorpass",true);  
                } else  
                        $smarty->assign("erroruser",true);                   
        } else
        		$smarty->assign("errorMail",true);   
} else {

	$smarty->assign("errorpass",false);  
	$smarty->assign("erroruser",false);  
	$smarty->assign("errorMail",false);  
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));  

}
 
$hook->set_title('title_registration', 'Registration');   
$hook->add_content_registration('defaultRegistration', '',10);   

if ($hook->hook_exist('registration_page'))    
		$hook->execute_hook('registration_page');  

wo müsste folgendes hin, hat hier die position schon gepasst wie im letzten Beitrag vom 01.03.2014 um 23:53 Uhr:
if ($_POST["recaptcha_response_field"]) {   
        $resp = recaptcha_check_answer ($privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]);   

Gruß & Danke face-smile
Mitglied: Arano
Arano 02.03.2014 um 14:58:43 Uhr
Goto Top
Naja fast...

Also mit deiner Reihenfolge funktioniert das auch, das macht am Ende eigentlich keinen Unterschiede ABER logisch ist die Reihenfolge trotzdem nicht. zumindest sehe ich das anders
// wenn das formular abgeschickt wurde
if( isset($_POST['submit']) )  
    // wenn beim captcha eine eingabe gemacht wurde
    if( isset($_POST["recaptcha_response_field"]) && !empty($_POST["recaptcha_response_field"]) )  
        // wenn das captcha richtig gelöst wurde / der besucher ein mensch ist
        if( true==$resp->is_valid )
            // wenn die e-mail-adresse gültig ist
            if( $startUp->checkMail($_POST['mail']) )  
                // wenn ein benutzername angegeben wurde
                if( !empty($_POST['user']) )  
                    // wenn ein passwort angegeben wurde
                    if( !empty($_POST['pass']) )  
                        // ACHTUNG: wenn der account NICHT angelegt werden konnte.
                        if( !$startUp->addUser( $_POST['user'], $_POST['mail'], $_POST['pass'], 'true', 'true') )  
Logischerweise prüfen wir ERST ob es sich bei dem Besucher um Mensch oder Maschine handelt, denn wenn es eine Maschine ist, brauchen wir die angegebenen E-Mail-Adresse, den Benutzernamen und das Passwort __nicht__ überprüfen - die Arbeit können wir uns dann ja sparen.
Wie gesagt, du hast die Lösung ja fast gehabt und am Ende würde es auch so funktionieren.

Zwei Dinge waren da aber noch !
  1. Hast du die else-Klauseln (Fehlerfälle) vergessen und
  2. aber das das hattest du Nachgefragt, fehlte der Funktionsaufruf von recaptcha_check_answer()
und damit wir hier dann doch mal zu einem Ende kommen, hier nun der vollständige Code ungetestet natürlich
<?php

require_once('/var/www/page/captcha/recaptchalib.php');  
$publickey = "x";  
$privatekey = "x";  

if( !defined("IN_PASTE") )  
    die("Access denied!");  

if( $startUp->isLogged() )
    $startUp->redirect( $conf['baseurl'].'/account.html' );  

if( isset($_POST['submit']) )  
{
    if( isset($_POST["recaptcha_response_field"]) && !empty($_POST["recaptcha_response_field"]) )  
    { // isset() um zu prüfen ob es dieses inputfeld überhaupt giebt und
      // !empty() um sicher zu stellen das auch etwas eingegeben wurde
        $resp = recaptcha_check_answer( $privatekey, 
                                        $_SERVER["REMOTE_ADDR"],   
                                        $_POST["recaptcha_challenge_field"],   
                                        $_POST["recaptcha_response_field"]  
                                       );
        if( true==$resp->is_valid )
        { // Captcha wurde gelöst, besucher ist _wahrscheinlich_ ein mensch.
            if( $startUp->checkMail($_POST['mail']) )  
            {
                if( !empty($_POST['user']) )  
                {
                    if( !empty($_POST['pass']) )  
                    {
                        // Check if data is save else we make an error
                        if( !$startUp->addUser( $_POST['user'], $_POST['mail'], $_POST['pass'], 'true', 'true') )  
                        {
                            $smarty->assign( "UserOrMailexist", true );  
                        }
                    }
                    else 
                        $smarty->assign( "errorpass", true );  
                }
                else  
                    $smarty->assign( "erroruser", true );  
            }
            else
                $smarty->assign( "errorMail", true );  
        }
        else
        {
            // captcha wurde falsch gelöst = error
            $smarty->assign( "errorCaptcha", true );  
            $smarty->assign( "errorCaptchaMsg", $resp->error );  
        }
    }
    else
        $marty->assign( "errorCaptcha", true ); // kein captcha übertragen = error  
}
else
{
    $smarty->assign( "errorpass", false );  
    $smarty->assign( "erroruser", false );  
    $smarty->assign( "errorMail", false );  
    $smarty->assign( "errorCaptcha", false );  
    $smarty->assign( "recaptcha", recaptcha_get_html( $publickey, $error ) );  
}
 
$hook->set_title( 'title_registration', 'Registration' );  
$hook->add_content_registration( 'defaultRegistration', '', 10 );  

if( $hook->hook_exist('registration_page') )    
    $hook->execute_hook( 'registration_page' );  

?>
Ich habe:
  • die Reihenfolge so geändert wie ich es für logisch halte,
  • die Kontrolle ob das Captcha-Eingabefeld übertragen wurde erweitert (isset() && !empty()) und
  • die Smarty-Variabeln errorCaptcha & errorCaptchaMsg eingeführt die aussagen ob es eine Fehler gab und wenn, welcher. Das muss dann noch in deinem Template angepasst werden.
{if $errorCaptcha }
    <br />
    <div class="alert alert-error">  
      <b>{$lang.error} :</b> Ihr Captcha ist ungültig!
      <!-- <br />Fehler: {$errorCaptchaMsg} -->
      <a href="#" class="close" data-dismiss="alert">×</a>  
     </div>
{/if}

Das sollte jetzt eigentlich ganz gut hinhauen... auf Fehler konnte ich das natürlich nicht Testen.
Probiere es mal aus
Backups nicht vergessen, man weiß ja nie !


Schönen Sonntag noch
~Arano
Mitglied: vServer
vServer 02.03.2014 aktualisiert um 16:54:27 Uhr
Goto Top
Hi,

Einwandfrei, das funktioniert soweit super, vielen Dank. Ein Problem hab ich aber noch wenn das Captcha Falsch eingegeben wurde, dann erscheint die Meldung "Ihr Captcha ist ungültig" aber hier erscheint dann das Captcha nicht mehr, sondern nur noch Benutzername, Passwort, Mail. Und wenn ich das Captcha richtig eingebe, und ein Benutzernamen der schon existiert, dann habe ich die Meldung "Ihr Captcha ist ungültig".

Gruß & Danke face-smile face-smile