Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit

ReCaptcha - Registerformular wird nicht angezeigt

Frage Entwicklung PHP

Mitglied: vServer

vServer (Level 1) - Jetzt verbinden

13.02.2014, aktualisiert 24.02.2014, 4253 Aufrufe, 66 Kommentare

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.

01.
{include file="header.html" title=$hooks->title->title_registration} 
02.
      <div class="row-fluid"
03.
			{include file="sidebar.html"}  
04.
        <div class="span8">  
05.
            {if $errorpass
06.
                	 <br /> 
07.
            <div class="alert alert-error"
08.
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig! 
09.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
10.
            </div> 
11.
            {/if}  
12.
            {if $erroruser
13.
                	 <br /> 
14.
            <div class="alert alert-error"
15.
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden! 
16.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
17.
            </div> 
18.
            {/if}  
19.
            {if $errorMail
20.
                	 <br /> 
21.
            <div class="alert alert-error"
22.
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden! 
23.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
24.
            </div> 
25.
            {/if}  
26.
             {if $UserOrMailexist
27.
                	 <br /> 
28.
            <div class="alert alert-error"
29.
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits!  
30.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
31.
            </div> 
32.
            {/if}  
33.
                                     
34.
	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"
35.
		 	{if $i.id eq 'defaultRegistration'} 
36.
      					<div class="base-block">           
37.
 							<div class="title">{$lang.registration}</div>   							 
38.
						   	  <form id="form1" name="form1" method="post" action=""
39.
								<label class="log-lab">{$lang.username}:</label> 
40.
								<input name="user" type="text" class="login-input-user" /> 
41.
								<label class="log-lab">{$lang.password}:</label> 
42.
								<input name="pass" type="password" class="login-input-pass" /><br /><br /> 
43.
								<label class="log-lab">{$lang.mail}:</label> 
44.
								<input name="mail" type="text" class="login-input-pass" /><br /> 
45.
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br> 
46.
								<?php 
47.
								require_once('../page/captcha/recaptchalib.php'); 
48.
								$publickey = "meinpublickey"
49.
								echo recaptcha_get_html($publickey); 
50.
								?> 
51.
 
52.
						   	  </form> 
53.
						</div> 
54.
 	 
55.
            {else}             
56.
 	 			{$i.content}	  
57.
 	 		{/if}             
58.
	 {/foreach}  				 
59.
             
60.
        </div><!--/span--> 
61.
      </div><!--/row-->  
62.
 
63.
{include file="footer.html"}

vielen Dank für eure Hilfe.

Gruß
66 Antworten
Mitglied: Arano
14.02.2014 um 10:58 Uhr
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
Bitte warten ..
Mitglied: d4shoerncheN
14.02.2014, aktualisiert 15.02.2014
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

01.
$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
Bitte warten ..
Mitglied: vServer
15.02.2014 um 19:48 Uhr
Hallo,

habe das mit folgendes anzeigen lassen jedoch wird ebenso nichts angezeigt
01.
<?php 
02.
ini_set('display_errors', 'On') 
03.
?>

@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
Bitte warten ..
Mitglied: Arano
17.02.2014 um 15:40 Uhr
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
Bitte warten ..
Mitglied: vServer
17.02.2014, aktualisiert 24.02.2014
Hi,

nein warst falsch

da habe ich es aber so:

Captcha Field:
01.
<?php echo recaptcha_get_html($publickey); ?>
Error:
01.
	$resp = recaptcha_check_answer ($privatekey,$_SERVER["REMOTE_ADDR"],$_POST["recaptcha_challenge_field"],$_POST["recaptcha_response_field"]);  
02.
 
03.
	if (!$resp->is_valid) { 
04.
		$err = true; 
05.
		$captcha_err = "Die Sicherheitsabfrage war leider nicht korrekt."
06.
	}
01.
require_once('captcha/recaptchalib.php'); 
02.
 
03.
$publickey = "key"
04.
$privatekey = "key";
Gruß & Danke
Bitte warten ..
Mitglied: Arano
17.02.2014 um 17:57 Uhr
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
Bitte warten ..
Mitglied: vServer
17.02.2014, aktualisiert 28.02.2014
Hi

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

01.
require_once('recaptchalib.php'); 
02.
  $privatekey = "xxx"; 
03.
 
04.
  $resp = recaptcha_check_answer ($privatekey, 
05.
                                $_SERVER["REMOTE_ADDR"], 
06.
                                $_POST["recaptcha_challenge_field"], 
07.
                                $_POST["recaptcha_response_field"]); 
08.
 
09.
  if (!$resp->is_valid) { 
10.
    // What happens when the CAPTCHA was entered incorrectly 
11.
   die ("Das reCAPTCHA wurde nicht korrekt eingegeben. Gehen Sie zurück und versuchen Sie es erneut." . 
12.
        "(reCAPTCHA sagte: " . $resp->error . ")"); 
13.
  } else { 
14.
     //Your code here to handle a successful verification 
15.
  }
bei ReCaptcha.net steht folgendes unter der Domain:
This is a global key. It will work across all domains.

hoffentlich hab ich alles beantwortet

Gruß & Danke
Bitte warten ..
Mitglied: Arano
17.02.2014 um 19:53 Uhr
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:
01.
<?php 
02.
echo 'TESTING >>>'
03.
  if( function_exists('recaptcha_get_html') ) 
04.
05.
    echo '<h1>recaptcha_get_html() Funktion ist verfügbar</h1>'
06.
07.
  else 
08.
09.
    echo '<h1>recaptcha_get_html() Funktion FEHLT !</h1>'
10.
    if( file_exists('../page/captcha/recaptchalib.php') ) 
11.
12.
      echo '<h2>Lib existiert auch...</h2>'
13.
14.
    else 
15.
16.
      echo '<h2>Lib existiert doch NICHT !</h2>'
17.
      echo 'Wir sind in: '.dirname(__FILE__); 
18.
19.
20.
echo 'TESTING <<<'
21.
?>

~Arano
Bitte warten ..
Mitglied: vServer
17.02.2014, aktualisiert 28.02.2014
Hi,

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

01.
>>'; if( function_exists('recaptcha_get_html') ) { echo ' 
02.
recaptcha_get_html() Funktion ist verfügbar 
03.
'; } else { echo ' 
04.
recaptcha_get_html() Funktion FEHLT ! 
05.
'; if( file_exists('../page/captcha/recaptchalib.php') ) { echo ' 
06.
Lib existiert auch... 
07.
'; } else { echo ' 
08.
Lib existiert doch NICHT ! 
09.
'; echo 'Wir sind in: '.dirname(__FILE__); } } echo 'TESTING <<<'; ?> $publickey = ""; // you got this from the signup page echo recaptcha_get_html($publickey); ?>
Danke & Gruß
Bitte warten ..
Mitglied: Arano
17.02.2014 um 20:44 Uhr
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
Bitte warten ..
Mitglied: vServer
17.02.2014 um 21:17 Uhr
Hi,

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

01.
{php} 
02.
<?php 
03.
echo 'TESTING >>>'; 
04.
  if( function_exists('recaptcha_get_html') ) 
05.
06.
    echo '<h1>recaptcha_get_html() Funktion ist verfügbar</h1>'; 
07.
08.
  else 
09.
10.
    echo '<h1>recaptcha_get_html() Funktion FEHLT !</h1>'; 
11.
    if( file_exists('../page/captcha/recaptchalib.php') ) 
12.
13.
      echo '<h2>Lib existiert auch...</h2>'; 
14.
15.
    else 
16.
17.
      echo '<h2>Lib existiert doch NICHT !</h2>'; 
18.
      echo 'Wir sind in: '.dirname(__FILE__); 
19.
20.
21.
echo 'TESTING <<<'; 
22.
?> 
23.
{/php}
Bitte warten ..
Mitglied: Arano
17.02.2014 um 21:50 Uhr
Jap, so ist es.
Und was wird uns dann ausgegeben !?

Bis Morgen
~Arano
Bitte warten ..
Mitglied: vServer
17.02.2014, aktualisiert 28.02.2014
Hi erhalte folgenden:

01.
Fatal error in smarty_internal_templatecompilerbase.php on line 621
Bitte warten ..
Mitglied: Arano
17.02.2014 um 22:31 Uhr
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.
01.
{php} 
02.
  require_once('../page/captcha/recaptchalib.php'); 
03.
  $publickey = "meinpublickey"; 
04.
echo recaptcha_get_html($publickey); 
05.
 
06.
echo 'TESTING >>>'; 
07.
  if( function_exists('recaptcha_get_html') ) 
08.
09.
    echo '<h1>recaptcha_get_html() Funktion ist verfügbar</h1>'; 
10.
11.
  else 
12.
13.
    echo '<h1>recaptcha_get_html() Funktion FEHLT !</h1>'; 
14.
    if( file_exists('../page/captcha/recaptchalib.php') ) 
15.
16.
      echo '<h2>Lib existiert auch...</h2>'; 
17.
18.
    else 
19.
20.
      echo '<h2>Lib existiert doch NICHT !</h2>'; 
21.
      echo 'Wir sind in: '.dirname(__FILE__); 
22.
23.
24.
echo 'TESTING <<<'; 
25.
{/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


~Arano
Bitte warten ..
Mitglied: d4shoerncheN
18.02.2014, aktualisiert um 11:38 Uhr
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
Bitte warten ..
Mitglied: vServer
18.02.2014 um 15:44 Uhr
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:
01.
{nocache}{$recaptcha}{/nocache}
Wohin soll ich das packen, auch in meine registration.html?

01.
require_once('recaptchalib.php');  
02.
 
03.
// Get a key from https://www.google.com/recaptcha/admin/create  
04.
$publickey = "<public_key>";  
05.
$privatekey = "<private_key>";  
06.
 
07.
# the response from reCAPTCHA  
08.
$resp = null;  
09.
# the error code from reCAPTCHA, if any  
10.
$error = null;  
11.
 
12.
# was there a reCAPTCHA response?  
13.
if ($_POST["recaptcha_response_field"]) {  
14.
        $resp = recaptcha_check_answer ($privatekey,  
15.
                                        $_SERVER["REMOTE_ADDR"],  
16.
                                        $_POST["recaptcha_challenge_field"],  
17.
                                        $_POST["recaptcha_response_field"]);  
18.
 
19.
        if ($resp->is_valid) {  
20.
                echo "You got it!";  
21.
        } else {  
22.
                # set the error code so that we can display it  
23.
                $error = $resp->error;  
24.
        }  
25.
}  
26.
 
27.
$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));
Gruß
Bitte warten ..
Mitglied: Arano
18.02.2014 um 17:31 Uhr
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
Bitte warten ..
Mitglied: vServer
18.02.2014, aktualisiert 24.02.2014
Also sollte folgendermaßen das so aussehen?

01.
{include file="header.html" title=$hooks->title->title_registration} 
02.
      <div class="row-fluid"
03.
			{include file="sidebar.html"}  
04.
        <div class="span8">  
05.
            {if $errorpass
06.
                	 <br /> 
07.
            <div class="alert alert-error"
08.
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig! 
09.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
10.
            </div> 
11.
            {/if}  
12.
            {if $erroruser
13.
                	 <br /> 
14.
            <div class="alert alert-error"
15.
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden! 
16.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
17.
            </div> 
18.
            {/if}  
19.
            {if $errorMail
20.
                	 <br /> 
21.
            <div class="alert alert-error"
22.
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden! 
23.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
24.
            </div> 
25.
            {/if}  
26.
             {if $UserOrMailexist
27.
                	 <br /> 
28.
            <div class="alert alert-error"
29.
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits!  
30.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
31.
            </div> 
32.
            {/if}  
33.
                                     
34.
	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"
35.
		 	{if $i.id eq 'defaultRegistration'
36.
      					<div class="base-block">           
37.
 							<div class="title">{$lang.registration}</div>   							 
38.
						   	  <form id="form1" name="form1" method="post" action=""
39.
								<label class="log-lab">{$lang.username}:</label> 
40.
								<input name="user" type="text" class="login-input-user" /> 
41.
								<label class="log-lab">{$lang.password}:</label> 
42.
								<input name="pass" type="password" class="login-input-pass" /><br /><br /> 
43.
								<label class="log-lab">{$lang.mail}:</label> 
44.
								<input name="mail" type="text" class="login-input-pass" /><br /> 
45.
								{nocache}{$recaptcha}{/nocache} 
46.
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br> 
47.
						   	  </form> 
48.
						</div> 
49.
 	 
50.
            {else}             
51.
 	 			{$i.content}	  
52.
 	 		{/if}             
53.
	 {/foreach}  				 
54.
             
55.
        </div><!--/span--> 
56.
      </div><!--/row-->  
57.
 
58.
{include file="footer.html"}
folgendes in eine recaptcha.php datei:

01.
require_once('recaptchalib.php');  
02.
 
03.
// Get a key from https://www.google.com/recaptcha/admin/create  
04.
$publickey = "<public_key>";  
05.
$privatekey = "<private_key>";  
06.
 
07.
# the response from reCAPTCHA  
08.
$resp = null;  
09.
# the error code from reCAPTCHA, if any  
10.
$error = null;  
11.
 
12.
# was there a reCAPTCHA response?  
13.
if ($_POST["recaptcha_response_field"]) {  
14.
        $resp = recaptcha_check_answer ($privatekey,  
15.
                                        $_SERVER["REMOTE_ADDR"],  
16.
                                        $_POST["recaptcha_challenge_field"],  
17.
                                        $_POST["recaptcha_response_field"]);  
18.
 
19.
        if ($resp->is_valid) {  
20.
                echo "You got it!";  
21.
        } else {  
22.
                # set the error code so that we can display it  
23.
                $error = $resp->error;  
24.
        }  
25.
}  
26.
 
27.
$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error));
und wie ruf ich die PHP recaptcha.php über mein Template register.html auf?
Bitte warten ..
Mitglied: Arano
18.02.2014 um 22:12 Uhr
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
01.
<?php 
02.
  // erstelle Smarty-Instanz 
03.
  $smarty = new Smarty() 
04.
   
05.
  // lade template anhand des parameters 
06.
  switch( $_GET['seite'] ) 
07.
08.
    case 'impressum'
09.
      $smarty->lade_template('templates/impressum.html'); 
10.
      break
11.
    case 'kontakt'
12.
      $smarty->lade_template('templates/kontaktformular.html'); 
13.
      break
14.
    case 'index'
15.
    case 'start'
16.
    default
17.
      $smarty->lade_template('templates/startseite.html'); 
18.
      break
19.
20.
   
21.
  // füge variablen hinzu 
22.
  $smarty->assign('titel','Seiten-Name.de'); 
23.
  $smarty->assign('var1','wert1'); 
24.
  $smarty->assign('var2','wert2'); 
25.
  $smarty->assign('var3','wert3'); 
26.
 
27.
  // zeige geladenes template an 
28.
  $smarty->display(); 
29.
?>
__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
Bitte warten ..
Mitglied: vServer
18.02.2014, aktualisiert um 22:19 Uhr
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?

01.
<?php 
02.
 
03.
if (!defined("IN_PASTE")) 
04.
      die("Access denied!"); 
05.
 
06.
if ($startUp->isLogged()) 
07.
        $startUp->redirect($conf['baseurl'].'/account.html'); 
08.
         
09.
if (isset($_POST['submit'])) { 
10.
        if ($startUp->checkMail($_POST['mail'])) { 
11.
                if (!empty($_POST['user'])) {  
12.
                	if (!empty($_POST['pass'])) {  
13.
                		// Check if data is save else we make an error 
14.
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true')) { 
15.
                        	$smarty->assign("UserOrMailexist",true);                        	 
16.
                        }                         
17.
                    } else  
18.
                    		$smarty->assign("errorpass",true); 
19.
                } else   
20.
                        $smarty->assign("erroruser",true);                  
21.
        } else 
22.
        		$smarty->assign("errorMail",true);  
23.
} else { 
24.
 
25.
	$smarty->assign("errorpass",false); 
26.
	$smarty->assign("erroruser",false); 
27.
	$smarty->assign("errorMail",false); 
28.
 
29.
30.
  
31.
$hook->set_title('title_registration', 'Registration');  
32.
$hook->add_content_registration('defaultRegistration', '',10);  
33.
 
34.
if ($hook->hook_exist('registration_page'))   
35.
		$hook->execute_hook('registration_page');
Bitte warten ..
Mitglied: Arano
20.02.2014 um 18:00 Uhr
Guten Abend,

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


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

01.
require_once('recaptchalib.php');  
02.
 
03.
// Get a key from https://www.google.com/recaptcha/admin/create  
04.
$publickey = "<public_key>";  
05.
$privatekey = "<private_key>";  
06.
 
07.
# the response from reCAPTCHA  
08.
$resp = null;  
09.
# the error code from reCAPTCHA, if any  
10.
$error = null;  
11.
 
12.
# was there a reCAPTCHA response?  
13.
if ($_POST["recaptcha_response_field"]) {  
14.
        $resp = recaptcha_check_answer ($privatekey,  
15.
                                        $_SERVER["REMOTE_ADDR"],  
16.
                                        $_POST["recaptcha_challenge_field"],  
17.
                                        $_POST["recaptcha_response_field"]);  
18.
 
19.
        if ($resp->is_valid) {  
20.
                echo "You got it!";  
21.
        } else {  
22.
                # set the error code so that we can display it  
23.
                $error = $resp->error;  
24.
        }  
25.
}  
26.
 
27.
$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error)); 
Bitte warten ..
Mitglied: Arano
21.02.2014 um 21:20 Uhr
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
Bitte warten ..
Mitglied: vServer
21.02.2014, aktualisiert um 21:38 Uhr
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.

01.
              <h4>Captcha</h4> 
02.
              <p> 
03.
				<input data-placement="right" rel="tooltip" data-original-title="{$lang.validcaptcha}" id="txtCaptcha" type="text" name="txtCaptcha" maxlength="5" size="13" /><br /> 
04.
				<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 /> 
05.
				<input name="submit" type="submit" value="Speichern" id="submit" class="btn btn-primary" />      
06.
              </p>
01.
            {if isset($errorCaptcha)} 
02.
                	 <br /> 
03.
            <div class="alert alert-error"> 
04.
                   	<b>{$lang.error} :</b> {$lang.wrongCaptcha} 
05.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
06.
            </div> 
07.
            {/if}  
habe es so eingebaut:

01.
{include file="header.html" title=$hooks->title->title_registration} 
02.
      <div class="row-fluid"> 
03.
			{include file="sidebar.html"} 
04.
        <div class="span8"> 
05.
            {if $errorpass} 
06.
                	 <br /> 
07.
            <div class="alert alert-error"> 
08.
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig! 
09.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
10.
            </div> 
11.
            {/if} 
12.
            {if $erroruser} 
13.
                	 <br /> 
14.
            <div class="alert alert-error"> 
15.
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden! 
16.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
17.
            </div> 
18.
            {/if}  
19.
            {if $errorMail} 
20.
                	 <br /> 
21.
            <div class="alert alert-error"> 
22.
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden! 
23.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
24.
            </div> 
25.
            {/if} 
26.
             {if $UserOrMailexist} 
27.
                	 <br /> 
28.
            <div class="alert alert-error"> 
29.
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits!  
30.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
31.
            </div> 
32.
            {/if} 
33.
            {if isset($errorCaptcha)} 
34.
                	 <br /> 
35.
            <div class="alert alert-error"> 
36.
                   	<b>{$lang.error} :</b> {$lang.wrongCaptcha} 
37.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
38.
            </div> 
39.
            {/if}   
40.
 
41.
	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"} 
42.
		 	{if $i.id eq 'defaultRegistration'} 
43.
      					<div class="base-block"> 
44.
 							<div class="title">{$lang.registration}</div> 
45.
						   	  <form id="form1" name="form1" method="post" action=""> 
46.
								<label class="log-lab">{$lang.username}:</label> 
47.
								<input name="user" type="text" class="login-input-user" /> 
48.
								<label class="log-lab">{$lang.password}:</label> 
49.
								<input name="pass" type="password" class="login-input-pass" /><br /><br /> 
50.
								<label class="log-lab">{$lang.mail}:</label> 
51.
								<input name="mail" type="text" class="login-input-pass" /><br /> 
52.
								<p> 
53.
								<input data-placement="right" rel="tooltip" data-original-title="{$lang.validcaptcha}" id="txtCaptcha" type="text" name="txtCaptcha" maxlength="5" size="13" /><br /> 
54.
								<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 /> 
55.
								<input name="submit" type="submit" value="Speichern" id="submit" class="btn btn-primary" />      
56.
								</p> 
57.
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br> 
58.
								<div class="agb-datenschutzbestimmungen">Wenn du auf "Registrieren" klickst, erklärst du dich mit unseren AGB einverstanden.</div> 
59.
						   	  </form> 
60.
						</div> 
61.
 	 
62.
            {else}     
63.
 	 			{$i.content} 
64.
 	 		{/if} 
65.
	 {/foreach} 
66.
             
67.
        </div><!--/span--> 
68.
      </div><!--/row-->  
69.
 
70.
{include file="footer.html"}
Danke
Bitte warten ..
Mitglied: Arano
22.02.2014 um 15:50 Uhr
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
Bitte warten ..
Mitglied: vServer
22.02.2014 um 18:31 Uhr
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
Bitte warten ..
Mitglied: Arano
22.02.2014 um 20:19 Uhr
Dan probiere mal:
01.
ini_set( 'display_errors','On' ); 
02.
ini_set( 'error_reporting',E_ALL ); 
03.
echo 'Hallo '; 
04.
require_once(     ...DEIN_PFAD...     ); 
05.
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
Bitte warten ..
Mitglied: vServer
22.02.2014, aktualisiert 24.02.2014
Also habe nun folgende Meldung
Parse error: syntax error, unexpected '/' in /registration.php on line 23

bei folgendem:
01.
ini_set( 'display_errors','On' ); 
02.
ini_set( 'error_reporting',E_ALL ); 
03.
echo 'Hallo '; 
04.
require_once(../page/captcha/recaptchalib.php); 
05.
echo 'Welt !';
mach ich es so:
01.
ini_set( 'display_errors','On' ); 
02.
ini_set( 'error_reporting',E_ALL ); 
03.
echo 'Hallo '; 
04.
require_once(page/captcha/recaptchalib.php); 
05.
echo 'Welt !';

erhalte ich folgendes:
Hallo Notice: Use of undefined constant page - assumed 'page' in /var/www/page/registration.php on line 23 Notice.
Bitte warten ..
Mitglied: Arano
22.02.2014, aktualisiert um 21:11 Uhr
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
Bitte warten ..
Mitglied: vServer
22.02.2014, aktualisiert 28.02.2014
Ahh okay, Respekt, hab ich gar nicht gesehen 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
Bitte warten ..
Mitglied: Arano
22.02.2014, aktualisiert um 22:45 Uhr
Halleluja!
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
01.
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
Bitte warten ..
Mitglied: vServer
22.02.2014, aktualisiert 28.02.2014
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
Bitte warten ..
Mitglied: Arano
23.02.2014, aktualisiert um 09:00 Uhr
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.:
01.
<?php 
02.
  define( 'ROOT', '/var/www/page/' ); 
03.
  # oder 
04.
  define( 'ROOT', '/var/www/' ); 
05.
 
06.
  include ROOT.'captcha/recaptchalib.php'
07.
  include_once ROOT.'captcha/recaptchalib.php'
08.
  require ROOT.'captcha/recaptchalib.php'
09.
  require_once ROOT.'captcha/recaptchalib.php'
10.
  # oder 
11.
  include ROOT.'page/captcha/recaptchalib.php'
12.
  include_once ROOT.'page/captcha/recaptchalib.php'
13.
  require ROOT.'page/captcha/recaptchalib.php'
14.
  require_once ROOT.'page/captcha/recaptchalib.php'
15.
?>
Das ganze lässt sich dann auch für einzelne Projekte erweitern:
01.
<?php 
02.
  define( 'ROOT', '/var/www/' ); 
03.
  # definiere Konstante für url-shorter 
04.
  define( 'ROOT_S', ROOT.'page/' ); 
05.
  # definiere Konstante für onpaste 
06.
  define( 'ROOT_O', ROOT.'page/onpast/' ); 
07.
 
08.
  # oder für andere oft benötigte Daten 
09.
  define( 'LIBS', ROOT.'libs/' ); 
10.
  require LIBS.'recaptchalib.php' ); 
11.
?>
~Arano
Bitte warten ..
Mitglied: vServer
23.02.2014, aktualisiert 24.02.2014
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"
Bitte warten ..
Mitglied: Arano
23.02.2014 um 17:17 Uhr
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

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
Bitte warten ..
Mitglied: vServer
23.02.2014 um 17:24 Uhr
Nun den Public Key hier zwischen rein beim testscript, oder bin ich falsch?

01.
ini_set( 'display_errors','On' ); 
02.
ini_set( 'error_reporting',E_ALL ); 
03.
echo 'Hallo '; 
04.
require_once('meinpfad"); 
05.
$publickey = "<public_key>"; 
06.
$privatekey = "key"; 
07.
 
08.
echo 'Welt !';
Bitte warten ..
Mitglied: Arano
23.02.2014 um 17:44 Uhr
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
Bitte warten ..
Mitglied: vServer
23.02.2014 um 18:29 Uhr
In der registrieren.php habe ich nun folgendes Zeile 28:

01.
} else { 
02.
 
03.
	$smarty->assign("errorpass",false); 
04.
	$smarty->assign("erroruser",false); 
05.
	$smarty->assign("errorMail",false); 
06.
	$smarty->assign("recaptcha",false); 
07.
 
08.
}
und dieses hier ganz oben in der registrieren.php

01.
ini_set( 'display_errors','On' ); 
02.
ini_set( 'error_reporting',E_ALL ); 
03.
echo 'Hallo '; 
04.
require_once('/var/www/page/captcha/recaptchalib.php'); 
05.
$publickey = "X"; 
06.
$privatekey = "X"; 
07.
echo 'Welt !';
in der html von registrieren habe ich:
01.
{nocache}{$recaptcha}{/nocache}
angezeigt wird noch kein captcha
Bitte warten ..
Mitglied: Arano
23.02.2014 um 18:42 Uhr
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
Bitte warten ..
Mitglied: vServer
23.02.2014 um 18:53 Uhr
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
Bitte warten ..
Mitglied: Arano
23.02.2014 um 19:57 Uhr
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
Bitte warten ..
Mitglied: vServer
23.02.2014 um 21:36 Uhr
Ah das hab ich vergessen oder?

01.
# the response from reCAPTCHA  
02.
$resp = null;  
03.
# the error code from reCAPTCHA, if any  
04.
$error = null;  
05.
 
06.
# was there a reCAPTCHA response?  
07.
if ($_POST["recaptcha_response_field"]) {  
08.
        $resp = recaptcha_check_answer ($privatekey,  
09.
                                        $_SERVER["REMOTE_ADDR"],  
10.
                                        $_POST["recaptcha_challenge_field"],  
11.
                                        $_POST["recaptcha_response_field"]);  
12.
 
13.
        if ($resp->is_valid) {  
14.
                echo "You got it!";  
15.
        } else {  
16.
                # set the error code so that we can display it  
17.
                $error = $resp->error;  
18.
        }  
19.
}
und kann ich noch ein Error hinzufügen:
01.
            {if $recaptcha} 
02.
                	 <br /> 
03.
            <div class="alert alert-error"> 
04.
                   	<b>{$lang.error} :</b> Das Captcha war leider falsch! 
05.
                   	<a href="#" class="close" data-dismiss="alert">×</a> 
06.
            </div> 
07.
            {/if} 
Bitte warten ..
Mitglied: Arano
23.02.2014 um 21:49 Uhr
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:
01.
$publickey = "X";  
02.
$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
Bitte warten ..
Mitglied: vServer
23.02.2014, aktualisiert 24.02.2014
Hi,

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

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

die registrieren.html
01.
{include file="header.html" title=$hooks->title->title_registration} 
02.
      <div class="row-fluid"> 
03.
			{include file="sidebar.html"} 
04.
        <div class="span8"> 
05.
            {if $errorpass} 
06.
                	 <br /> 
07.
            <div class="alert alert-error"> 
08.
                   	<b>{$lang.error} :</b> Ihr Passwort ist ungültig! 
09.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
10.
            </div> 
11.
            {/if} 
12.
            {if $erroruser} 
13.
                	 <br /> 
14.
            <div class="alert alert-error"> 
15.
                   	<b>{$lang.error} :</b> Ihr Benutzername ist ungültig oder schon vorhanden! 
16.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
17.
            </div> 
18.
            {/if}  
19.
            {if $errorMail} 
20.
                	 <br /> 
21.
            <div class="alert alert-error"> 
22.
                   	<b>{$lang.error} :</b> Ihre E-Mail Adresse ist ungültig oder schon vorhanden! 
23.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
24.
            </div> 
25.
            {/if} 
26.
            {if $UserOrMailexist} 
27.
                	 <br /> 
28.
            <div class="alert alert-error"> 
29.
                   	<b>{$lang.error} :</b> Ihr Benutzername oder E-Mail Adresse existiert bereits!  
30.
                   	<a href="#" class="close" data-dismiss="alert">&times;</a> 
31.
            </div> 
32.
            {/if} 
33.
 
34.
	   {foreach item=i from=$hooks->addcontentregistration|@sortby:"#prio"} 
35.
		 	{if $i.id eq 'defaultRegistration'} 
36.
      					<div class="base-block"> 
37.
 							<div class="title">{$lang.registration}</div> 
38.
						   	  <form id="form1" name="form1" method="post" action=""> 
39.
								<label class="log-lab">{$lang.username}:</label> 
40.
								<input name="user" type="text" class="login-input-user" /> 
41.
								<label class="log-lab">{$lang.password}:</label> 
42.
								<input name="pass" type="password" class="login-input-pass" /><br /><br /> 
43.
								<label class="log-lab">{$lang.mail}:</label> 
44.
								<input name="mail" type="text" class="login-input-pass" /><br /> 
45.
								{nocache}{$recaptcha}{/nocache} 
46.
								<input type="submit" name="submit" value="{$lang.registration}" class="btn"/></br></br> 
47.
						   	  </form> 
48.
						</div> 
49.
 	 
50.
            {else}     
51.
 	 			{$i.content} 
52.
 	 		{/if} 
53.
	 {/foreach} 
54.
             
55.
        </div><!--/span--> 
56.
      </div><!--/row-->  
57.
 
58.
{include file="footer.html"}
und die registration.php
01.
require_once('/var/www/page/captcha/recaptchalib.php'); 
02.
$publickey = "x"; 
03.
$privatekey = "x"; 
04.
 
05.
if (!defined("IN_PASTE")) 
06.
      die("Access denied!"); 
07.
 
08.
if ($startUp->isLogged()) 
09.
        $startUp->redirect($conf['baseurl'].'/account.html'); 
10.
         
11.
if (isset($_POST['submit'])) { 
12.
        if ($startUp->checkMail($_POST['mail'])) { 
13.
                if (!empty($_POST['user'])) {  
14.
                	if (!empty($_POST['pass'])) {  
15.
                		// Check if data is save else we make an error 
16.
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true')) { 
17.
                        	$smarty->assign("UserOrMailexist",true);                        	 
18.
                        }                         
19.
                    } else  
20.
                    		$smarty->assign("errorpass",true); 
21.
                } else   
22.
                        $smarty->assign("erroruser",true);                  
23.
        } else 
24.
        		$smarty->assign("errorMail",true);  
25.
} else { 
26.
 
27.
	$smarty->assign("errorpass",false); 
28.
	$smarty->assign("erroruser",false); 
29.
	$smarty->assign("errorMail",false); 
30.
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error)); 
31.
 
32.
33.
  
34.
$hook->set_title('title_registration', 'Registration');  
35.
$hook->add_content_registration('defaultRegistration', '',10);  
36.
 
37.
if ($hook->hook_exist('registration_page'))   
38.
		$hook->execute_hook('registration_page');
Bitte warten ..
Mitglied: Arano
24.02.2014 um 10:57 Uhr
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
Bitte warten ..
Mitglied: vServer
24.02.2014 um 17:06 Uhr
Hi,

Eeeeeendlich, geil Respekt Danke jetzt funktioniert es endlich

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

01.
            {if $recaptcha} 
02.
                	 <br /> 
03.
            <div class="alert alert-error"> 
04.
                   	<b>{$lang.error} :</b> Ihr Captcha ist ungültig! 
05.
                   	<a href="#" class="close" data-dismiss="alert">×</a> 
06.
            </div> 
07.
            {/if}
Bitte warten ..
Mitglied: Arano
24.02.2014 um 17:30 Uhr
Huhu,

sehr schön !

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
Bitte warten ..
Mitglied: vServer
24.02.2014 um 17:34 Uhr
Kein Problem

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
Bitte warten ..
Mitglied: Arano
24.02.2014 um 20:41 Uhr
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: http://www.administrator.de/forum/recaptcha-registerformular-wird-nicht ...
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
Bitte warten ..
Mitglied: vServer
26.02.2014 um 22:25 Uhr
Hi, hab endlich wieder Zeit an mein Computer zu kommen

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

01.
# the response from reCAPTCHA  
02.
$resp = null;  
03.
# the error code from reCAPTCHA, if any  
04.
$error = null;  
05.
 
06.
# was there a reCAPTCHA response?  
07.
if ($_POST["recaptcha_response_field"]) {  
08.
        $resp = recaptcha_check_answer ($privatekey,  
09.
                                        $_SERVER["REMOTE_ADDR"],  
10.
                                        $_POST["recaptcha_challenge_field"],  
11.
                                        $_POST["recaptcha_response_field"]);  
12.
 
13.
        if ($resp->is_valid) {  
14.
                echo "You got it!";  
15.
        } else {  
16.
                # set the error code so that we can display it  
17.
                $error = $resp->error;  
18.
        }  
19.
}
Danke
Bitte warten ..
Mitglied: Arano
27.02.2014 um 10:49 Uhr
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
Bitte warten ..
Mitglied: vServer
27.02.2014 um 21:41 Uhr
Hm ja stimmt, folgendes würde reichen, weil nur das die Antwort prüft:

01.
if ($_POST["recaptcha_response_field"]) {  
02.
        $resp = recaptcha_check_answer ($privatekey,  
03.
                                        $_SERVER["REMOTE_ADDR"],  
04.
                                        $_POST["recaptcha_challenge_field"],  
05.
                                        $_POST["recaptcha_response_field"]);  
06.
 
07.
        if ($resp->is_valid) {  
08.
                echo "You got it!";  
09.
        } else {  
10.
                # set the error code so that we can display it  
11.
                $error = $resp->error;  
12.
        }  
13.
}
Gruß Tobi
Bitte warten ..
Mitglied: Arano
28.02.2014 um 10:57 Uhr
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
Bitte warten ..
Mitglied: vServer
28.02.2014, aktualisiert um 20:37 Uhr
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:

01.
require_once('/var/www/page/captcha/recaptchalib.php'); 
02.
$publickey = "x"; 
03.
$privatekey = "x"; 
04.
 
05.
if (!defined("IN_PASTE")) 
06.
      die("Access denied!"); 
07.
 
08.
if ($startUp->isLogged()) 
09.
        $startUp->redirect($conf['baseurl'].'/account.html'); 
10.
 
11.
if ($_POST["recaptcha_response_field"]) {  
12.
        $resp = recaptcha_check_answer ($privatekey,  
13.
                                        $_SERVER["REMOTE_ADDR"],  
14.
                                        $_POST["recaptcha_challenge_field"],  
15.
                                        $_POST["recaptcha_response_field"]);  
16.
 
17.
        if ($resp->is_valid) {  
18.
                echo "You got it!";  
19.
        } else {  
20.
                # set the error code so that we can display it  
21.
                $error = $resp->error;  
22.
        }  
23.
24.
    
25.
if (isset($_POST['submit'])) { 
26.
        if ($startUp->checkMail($_POST['mail'])) { 
27.
                if (!empty($_POST['user'])) {  
28.
                	if (!empty($_POST['pass'])) {  
29.
                		// Check if data is save else we make an error 
30.
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true')) { 
31.
                        	$smarty->assign("UserOrMailexist",true);                        	 
32.
                        }                         
33.
                    } else  
34.
                    		$smarty->assign("errorpass",true); 
35.
                } else   
36.
                        $smarty->assign("erroruser",true);                  
37.
        } else 
38.
        		$smarty->assign("errorMail",true);  
39.
} else { 
40.
 
41.
	$smarty->assign("errorpass",false); 
42.
	$smarty->assign("erroruser",false); 
43.
	$smarty->assign("errorMail",false); 
44.
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error)); 
45.
 
46.
47.
  
48.
$hook->set_title('title_registration', 'Registration');  
49.
$hook->add_content_registration('defaultRegistration', '',10);  
50.
 
51.
if ($hook->hook_exist('registration_page'))   
52.
		$hook->execute_hook('registration_page');
Danke
Bitte warten ..
Mitglied: Arano
28.02.2014 um 20:51 Uhr
Hi

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
Bitte warten ..
Mitglied: vServer
28.02.2014 um 21:17 Uhr
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?

01.
        if ($resp->is_valid) {  
02.
                echo "You got it!";  
03.
        } else {  
04.
                # set the error code so that we can display it  
05.
                $error = $resp->error;  
06.
        } 
Bitte warten ..
Mitglied: Arano
28.02.2014 um 21:48 Uhr
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
Bitte warten ..
Mitglied: vServer
28.02.2014 um 22:06 Uhr
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ß
Bitte warten ..
Mitglied: Arano
28.02.2014, aktualisiert um 22:27 Uhr
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
Bitte warten ..
Mitglied: vServer
28.02.2014 um 22:53 Uhr
Ah ok, top, habs nun zusammengestellt:

01.
require_once('/var/www/page/captcha/recaptchalib.php'); 
02.
$publickey = "x"; 
03.
$privatekey = "x"; 
04.
 
05.
if (!defined("IN_PASTE")) 
06.
      die("Access denied!"); 
07.
 
08.
if ($startUp->isLogged()) 
09.
        $startUp->redirect($conf['baseurl'].'/account.html'); 
10.
 
11.
if ($_POST["recaptcha_response_field"]) {  
12.
        $resp = recaptcha_check_answer ($privatekey,  
13.
                                        $_SERVER["REMOTE_ADDR"],  
14.
                                        $_POST["recaptcha_challenge_field"],  
15.
                                        $_POST["recaptcha_response_field"]);  
16.
17.
    
18.
if (isset($_POST['submit'])) { 
19.
        if ($startUp->checkMail($_POST['mail'])) { 
20.
                if (!empty($_POST['user'])) {  
21.
                	if (!empty($_POST['pass'])) {  
22.
                		// Check if data is save else we make an error 
23.
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) { 
24.
                        	$smarty->assign("UserOrMailexist",true);                        	 
25.
                        }                         
26.
                    } else  
27.
                    		$smarty->assign("errorpass",true); 
28.
                } else   
29.
                        $smarty->assign("erroruser",true);                  
30.
        } else 
31.
        		$smarty->assign("errorMail",true);  
32.
} else 
33.
if ($resp->is_valid) {  
34.
	echo "You got it!";  
35.
	} else {  
36.
		# set the error code so that we can display it  
37.
		$error = $resp->error;  
38.
}  { 
39.
 
40.
	$smarty->assign("errorpass",false); 
41.
	$smarty->assign("erroruser",false); 
42.
	$smarty->assign("errorMail",false); 
43.
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error)); 
44.
 
45.
46.
  
47.
$hook->set_title('title_registration', 'Registration');  
48.
$hook->add_content_registration('defaultRegistration', '',10);  
49.
 
50.
if ($hook->hook_exist('registration_page'))   
51.
		$hook->execute_hook('registration_page');
Bitte warten ..
Mitglied: Arano
01.03.2014 um 00:06 Uhr
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
Bitte warten ..
Mitglied: vServer
01.03.2014 um 23:53 Uhr
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:

01.
require_once('/var/www/page/captcha/recaptchalib.php'); 
02.
$publickey = "x"; 
03.
$privatekey = "x"; 
04.
 
05.
if (!defined("IN_PASTE")) 
06.
      die("Access denied!"); 
07.
 
08.
if ($startUp->isLogged()) 
09.
        $startUp->redirect($conf['baseurl'].'/account.html'); 
10.
 
11.
         
12.
if (isset($_POST['submit'])) { 
13.
if ($_POST["recaptcha_response_field"]) {  
14.
        $resp = recaptcha_check_answer ($privatekey,  
15.
                                        $_SERVER["REMOTE_ADDR"],  
16.
                                        $_POST["recaptcha_challenge_field"],  
17.
                                        $_POST["recaptcha_response_field"]);  
18.
        if ($startUp->checkMail($_POST['mail'])) { 
19.
                if (!empty($_POST['user'])) {  
20.
                	if (!empty($_POST['pass'])) {  
21.
                		// Check if data is save else we make an error 
22.
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'], $_POST[' recaptcha_check_answer'], 'true','true')) {  
23.
                        	$smarty->assign("UserOrMailexist",true);                        	 
24.
                        }                         
25.
                    } else  
26.
                    		$smarty->assign("errorpass",true); 
27.
                } else   
28.
                        $smarty->assign("erroruser",true);                  
29.
        } else 
30.
        		$smarty->assign("errorMail",true);  
31.
}  
32.
 
33.
else { 
34.
 
35.
	$smarty->assign("errorpass",false); 
36.
	$smarty->assign("erroruser",false); 
37.
	$smarty->assign("errorMail",false); 
38.
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error)); 
39.
 
40.
41.
 
42.
if ($resp->is_valid) {  
43.
                echo "You got it!";  
44.
        } else {  
45.
                # set the error code so that we can display it  
46.
                $error = $resp->error;  
47.
}  
48.
  
49.
$hook->set_title('title_registration', 'Registration');  
50.
$hook->add_content_registration('defaultRegistration', '',10);  
51.
 
52.
if ($hook->hook_exist('registration_page'))   
53.
		$hook->execute_hook('registration_page');
Bitte warten ..
Mitglied: Arano
02.03.2014, aktualisiert um 12:02 Uhr
Nehmen wir mal nur die IFs aus der "registration.php"

01.
if (isset($_POST['submit'])) { 
02.
    if ($startUp->checkMail($_POST['mail'])) { 
03.
        if (!empty($_POST['user'])) { 
04.
            if (!empty($_POST['pass'])) { 
05.
                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 !?
01.
if ($_POST["recaptcha_response_field"]) { 
02.
    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
Bitte warten ..
Mitglied: vServer
02.03.2014, aktualisiert um 13:35 Uhr
Hi,

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

01.
if (isset($_POST['submit'])) { 
02.
    if ($startUp->checkMail($_POST['mail'])) { 
03.
        if (!empty($_POST['user'])) { 
04.
            if (!empty($_POST['pass'])) { 
05.
              if ($_POST["recaptcha_response_field"]) { 
06.
                if ($resp->is_valid) { 
07.
                if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) {
im ganzen:

01.
require_once('/var/www/page/captcha/recaptchalib.php'); 
02.
$publickey = "x"; 
03.
$privatekey = "x"; 
04.
 
05.
if (!defined("IN_PASTE")) 
06.
      die("Access denied!"); 
07.
 
08.
if ($startUp->isLogged()) 
09.
        $startUp->redirect($conf['baseurl'].'/account.html'); 
10.
         
11.
if (isset($_POST['submit'])) { 
12.
        if ($startUp->checkMail($_POST['mail'])) { 
13.
                if (!empty($_POST['user'])) {  
14.
                	if (!empty($_POST['pass'])) { 
15.
                		if ($_POST["recaptcha_response_field"]) { 
16.
                			if ($resp->is_valid) { 
17.
                	// Check if data is save else we make an error 
18.
                        if (!$startUp->addUser($_POST['user'],$_POST['mail'],$_POST['pass'],'true','true',$_POST[' recaptcha_check_answer'])) { 
19.
                        	$smarty->assign("UserOrMailexist",true);                        	 
20.
                        }                         
21.
                    } else  
22.
                    		$smarty->assign("errorpass",true); 
23.
                } else   
24.
                        $smarty->assign("erroruser",true);                  
25.
        } else 
26.
        		$smarty->assign("errorMail",true);  
27.
} else { 
28.
 
29.
	$smarty->assign("errorpass",false); 
30.
	$smarty->assign("erroruser",false); 
31.
	$smarty->assign("errorMail",false); 
32.
	$smarty->assign("recaptcha", recaptcha_get_html($pub_key, $error)); 
33.
 
34.
35.
  
36.
$hook->set_title('title_registration', 'Registration');  
37.
$hook->add_content_registration('defaultRegistration', '',10);  
38.
 
39.
if ($hook->hook_exist('registration_page'))   
40.
		$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:
01.
if ($_POST["recaptcha_response_field"]) {  
02.
        $resp = recaptcha_check_answer ($privatekey,  
03.
                                        $_SERVER["REMOTE_ADDR"],  
04.
                                        $_POST["recaptcha_challenge_field"],  
05.
                                        $_POST["recaptcha_response_field"]); 
Gruß & Danke
Bitte warten ..
Mitglied: Arano
02.03.2014 um 14:58 Uhr
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
01.
// wenn das formular abgeschickt wurde 
02.
if( isset($_POST['submit']) ) 
03.
    // wenn beim captcha eine eingabe gemacht wurde 
04.
    if( isset($_POST["recaptcha_response_field"]) && !empty($_POST["recaptcha_response_field"]) ) 
05.
        // wenn das captcha richtig gelöst wurde / der besucher ein mensch ist 
06.
        if( true==$resp->is_valid ) 
07.
            // wenn die e-mail-adresse gültig ist 
08.
            if( $startUp->checkMail($_POST['mail']) ) 
09.
                // wenn ein benutzername angegeben wurde 
10.
                if( !empty($_POST['user']) ) 
11.
                    // wenn ein passwort angegeben wurde 
12.
                    if( !empty($_POST['pass']) ) 
13.
                        // ACHTUNG: wenn der account NICHT angelegt werden konnte. 
14.
                        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
01.
<?php 
02.
 
03.
require_once('/var/www/page/captcha/recaptchalib.php'); 
04.
$publickey = "x"
05.
$privatekey = "x"
06.
 
07.
if( !defined("IN_PASTE") ) 
08.
    die("Access denied!"); 
09.
 
10.
if( $startUp->isLogged() ) 
11.
    $startUp->redirect( $conf['baseurl'].'/account.html' ); 
12.
 
13.
if( isset($_POST['submit']) ) 
14.
15.
    if( isset($_POST["recaptcha_response_field"]) && !empty($_POST["recaptcha_response_field"]) ) 
16.
    { // isset() um zu prüfen ob es dieses inputfeld überhaupt giebt und 
17.
      // !empty() um sicher zu stellen das auch etwas eingegeben wurde 
18.
        $resp = recaptcha_check_answer( $privatekey,  
19.
                                        $_SERVER["REMOTE_ADDR"],  
20.
                                        $_POST["recaptcha_challenge_field"],  
21.
                                        $_POST["recaptcha_response_field"
22.
                                       ); 
23.
        if( true==$resp->is_valid ) 
24.
        { // Captcha wurde gelöst, besucher ist _wahrscheinlich_ ein mensch. 
25.
            if( $startUp->checkMail($_POST['mail']) ) 
26.
27.
                if( !empty($_POST['user']) ) 
28.
29.
                    if( !empty($_POST['pass']) ) 
30.
31.
                        // Check if data is save else we make an error 
32.
                        if( !$startUp->addUser( $_POST['user'], $_POST['mail'], $_POST['pass'], 'true', 'true') ) 
33.
34.
                            $smarty->assign( "UserOrMailexist", true ); 
35.
36.
37.
                    else  
38.
                        $smarty->assign( "errorpass", true ); 
39.
40.
                else   
41.
                    $smarty->assign( "erroruser", true ); 
42.
43.
            else 
44.
                $smarty->assign( "errorMail", true ); 
45.
46.
        else 
47.
48.
            // captcha wurde falsch gelöst = error 
49.
            $smarty->assign( "errorCaptcha", true ); 
50.
            $smarty->assign( "errorCaptchaMsg", $resp->error ); 
51.
52.
53.
    else 
54.
        $marty->assign( "errorCaptcha", true ); // kein captcha übertragen = error 
55.
56.
else 
57.
58.
    $smarty->assign( "errorpass", false ); 
59.
    $smarty->assign( "erroruser", false ); 
60.
    $smarty->assign( "errorMail", false ); 
61.
    $smarty->assign( "errorCaptcha", false ); 
62.
    $smarty->assign( "recaptcha", recaptcha_get_html( $publickey, $error ) ); 
63.
64.
  
65.
$hook->set_title( 'title_registration', 'Registration' ); 
66.
$hook->add_content_registration( 'defaultRegistration', '', 10 ); 
67.
 
68.
if( $hook->hook_exist('registration_page') )   
69.
    $hook->execute_hook( 'registration_page' ); 
70.
 
71.
?>
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.
01.
{if $errorCaptcha
02.
    <br /> 
03.
    <div class="alert alert-error"
04.
      <b>{$lang.error} :</b> Ihr Captcha ist ungültig! 
05.
      <!-- <br />Fehler: {$errorCaptchaMsg} --> 
06.
      <a href="#" class="close" data-dismiss="alert">×</a> 
07.
     </div> 
08.
{/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
Bitte warten ..
Mitglied: vServer
02.03.2014, aktualisiert um 16:54 Uhr
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
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Verschlüsselung & Zertifikate
gelöst Revocation Server innerhalb der PKI wird als offline angezeigt (1)

Frage von Snipes zum Thema Verschlüsselung & Zertifikate ...

Outlook & Mail
Outlook 2016 - Briefpapier Bilder werden nicht angezeigt (6)

Frage von Markowitsch zum Thema Outlook & Mail ...

VB for Applications
gelöst Mehrere Charts per VBA erstellen lassen, Titel wird nicht angezeigt

Frage von Aximand zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows Server
Mailserver auf Windows Server 2012 (8)

Frage von StefanT81 zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (8)

Frage von SarekHL zum Thema DSL, VDSL ...

Backup
Clients als Server missbrauchen? (8)

Frage von 1410640014 zum Thema Backup ...