recaptcha 2.0

Fragen zu PHP.
Fragen zu we:Tags bitte im Forum webEdition Templates erstellen (we:Tags) posten.
Falken
Senior Member
Beiträge: 231
Registriert: So 10. Jul 2005, 19:06

recaptcha 2.0

Beitragvon Falken » So 11. Mär 2018, 18:45

Hallo Forum,
generell gefragt: lässt sich recaptcha 2.0 im WebEdition Formular einsetzen und wenn ja gibts da eine Info für Dummies?
Danke!

StefanW
webEdition Partner
webEdition Partner
Beiträge: 48
Registriert: Mi 10. Jun 2009, 08:44
Wohnort: Weiterstadt

Re: recaptcha 2.0

Beitragvon StefanW » Mo 12. Mär 2018, 17:02

Hallo Falken,

das geht. Ich hatte das mal so gelöst.
### Die Seite mit dem Formular ###

Code: Alles auswählen

		<form enctype="multipart/form-data" name="formmail" id="formmail" action="<?php echo $PHP_SELF; ?>" method="post">
			...
		</form>
	
	<?php 


		/*****************************************************
		FORM WAS SUBMITTED
	******************************************************/

	} else if($_POST['form_submit']) { 

	?>
	<we:include type="template" id="xxx" comment="reCaptcha.tmpl"/>
	<?php
		#error_reporting(E_ALL);
		#ini_set('display_errors',1);

		if ($_POST["g-recaptcha-response"]) {

			// key
			$secret = ###deinsecretkey###;

			// init the recaptcha validation class
			$reCaptcha = new reCaptcha($secret, $_POST['g-recaptcha-response']);

			// google's response was successful, so proceed request
			if($reCaptcha->success()){ ?>
	<we:sendMail id="####" subject="subject" from="no-reply@doman.de"  recipient="info@doman.de" mimetype="text/html" charset="UTF-8" />

	<p>
		Ihre Anfrage wurde versendet und wird schnellstmöglich bearbeitet.
	</p>
	<?php

			} else {

				// google's response failed: exit
				die();
			} // eof if $response not null ... 

		}	

	} // eof post form submit
	?>
### Das Include reCaptcha.tmpl ###

Code: Alles auswählen

<?php


class reCaptcha {
	
	var $secret = '';
	var $g_recaptcha_response = '';
	var $google_api_url = 'https://www.google.com/recaptcha/api/siteverify';
	var $response = null;
	
	function __construct($secret, $g_recaptcha_response){
		$this->secret = $secret;
		$this->g_recaptcha_response = $g_recaptcha_response;
		
		
		// fire action
		$this->validateCaptcha();
		
	}
	
	public function validateCaptcha(){
		
		// check secret key
		$post_data = 'secret='.$this->secret.'&response='.$this->g_recaptcha_response.'&remoteip='.$_SERVER['REMOTE_ADDR'] ;

		$ch = curl_init();  
		curl_setopt($ch, CURLOPT_URL, $this->google_api_url);
		curl_setopt($ch, CURLOPT_POST, true);
		curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
		curl_setopt($ch, CURLOPT_HTTPHEADER, 
								array('Content-Type: application/x-www-form-urlencoded; charset=utf-8', 
											'Content-Length: ' . strlen($post_data)));
		curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data); 
		$google_response = curl_exec($ch);       
		$this->response = json_decode($google_response);
		curl_close($ch);
		
		$this->success();
	
	}
	
	public function success(){
		return ($this->response==true) ? true : false;
	}
	
}

?>
Gruß
Stefan

Falken
Senior Member
Beiträge: 231
Registriert: So 10. Jul 2005, 19:06

Re: recaptcha 2.0

Beitragvon Falken » Di 13. Mär 2018, 13:39

Danke - klingt gut.
Werd ich kurzfristig probieren ob ich schaffe und mich dann melden.

mokraemer
Senior Member
Beiträge: 2489
Registriert: So 8. Aug 2010, 01:23
Wohnort: Mainz

Re: recaptcha 2.0

Beitragvon mokraemer » Di 13. Mär 2018, 14:02

Es wäre hier vielleicht auch denkbar ein custom-tag zu machen auf der Grundlage we:captcha. Irgendwo müssen ja die secrets etc. auch gespeichert werden und da kann man dann auch die Tabelle tblCaptcha nutzen.
Es wäre somit auch einfacher und portabler und könnte auch (ggfs. per type) in das we:captcha eingebunden werden.
webEdition-Kern-Entwickler

Falken
Senior Member
Beiträge: 231
Registriert: So 10. Jul 2005, 19:06

Re: recaptcha 2.0

Beitragvon Falken » Mi 28. Mär 2018, 11:55

Hallo Stefan,
nochmals vielen Dank, leider scheint mir wissensmäßig noch was zu fehlen, dass ich das hinbekomme.

Also ich hab folgendes gemacht:
Wie beim recatpcha beschrieben das im Head eingebunden:
<script src='https://www.google.com/recaptcha/api.js'></script>
Im Formular selbst dies reingegeben:
<div class="g-recaptcha" data-sitekey="public-key"></div>
recaptcha-template angelegt mit deinem Code (darin hab ich nix geändert oder eingetragen)
Bis hierher keine Auffälligkeiten
---------------------
Formularseite:
we:form durch deine Zeile ersetzt: <form enctype="multipart/form-data" name="formmail" id="formmail" action="<?php echo $PHP_SELF; ?>" method="post">
Nach dem Formular deinen PHP-Code reingegeben und den Secret key (ich habe den Code in 2 Komma gesetzt da das sonst beim Speichern bemängelt wird 'mein secret code' ) sowie die ID vom recaptcha-template hinterlegt, Emailempfänger eingetragen

Und jetzt steht ich vor dem Problem, dass Webedition beim Speichern diese Meldung bringt:
Fehler beim Speichern der Vorlage anfragevorlage.tmpl
error: syntax error, unexpected '}'
Line: 1191
Code:
1189: </html>
1190:

So viele Zeilen hat die Vorlage gar nicht, jedoch gibt es noch die Hauptvorlage in der die Formularvorlage eingebunden ist.
Ohne die neuen Zusätze kommt keine Fehlermeldung.

Hast Du eine Ahnung was das sein könnte bzw. was ich falsch mache?

Danke!


Zurück zu „PHP“

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast