Skocz do zawartości
  • Przeglądający   0 użytkowników

    Brak zarejestrowanych użytkowników, przeglądających tę stronę.

Promowane odpowiedzi

adam2350    11

Siemka.

Chciałem zrobić recaptcha do mojego formularza kontaktowego ale jest błąd. Nawet jeżeli ktoś nie zaznaczy w formularzu recaptcha to i tak wiadomość zostanie wysłana. Czy można tak zrobić żeby wiadomości o błędach wyświetlały się pod formularzem zamiast na "stronie bez formularza" tzn. gdy kliknę wyślij to strona się odświeża i wyświetla komunikat o błędzie.

<?php 
require_once 'autoload.php';
$siteKey = '6LctFyoUAAAAAEFsCOiCaRqZ5UDwGKOtCOyLj7CX';
$secret = '';
$lang = 'pl';
    if(isset($_POST['g-recaptcha-response']))
    {
       //Tworzymy obiekt wykorzystując w tym celu nasz klucz prywatny zdefiniowany wcześniej
     $recaptcha = new \ReCaptcha\ReCaptcha($secret);
     //za pomocą stworzonego obiektu wysyłany otrzymane dane do Google i otrzymany wynik przypisujemy do zmiennej
     $resp = $recaptcha->verify($_POST['g-recaptcha-response'], $_SERVER['REMOTE_ADDR']);
     //warunek sprawdzający czy test został wykonany poprawnie jeśli tak to wyświetlamy komunikat o sukcesie
     //zaś jeśli nie to o porażce
	 if($resp->isSuccess())
     {
		 echo "Suksces."; #tego bym nie chciał
     }
     else
     {
		 echo "błąd"; #tego też :) Dziekuję :)
     }
    }
    else
    {
?>
<h2>Zapraszamy do kontaktu</h2>
<form method="post" action="index.php">
    <label>Nick (lub imię i nazwisko):</label> <input type="text" name="nick"/><br><br>
    <label>E-Mail:</label> <input type="email" name="adres"/><br><br>
    <label>Treśc:</label> <textarea  id="opis"  onkeyup="ograniczZnaki(this,10000);"
name="wiad" rows="5" ></textarea>
    <span id="counter">Pozostało 0/10000 znaków</span>
	        <div class="g-recaptcha" data-sitekey="6LctFyoUAAAAAEFsCOiCaRqZ5UDwGKOtCOyLj7CX"></div>
        <script type="text/javascript" src="https://www.google.com/recaptcha/api.js?hl=pl"></script>
<input type="submit" value="Wyślij" name="send"/><br><br>
</form>
<?php
	}
	$nick = $_POST['nick'];
	$adres = $_POST['adres'];
	$wiad = $_POST['wiad'];
	$adresod = "";
	$adresdo = "";
	$temat = "Forularz kontakowy.";
	$tresc = "Nick: ".$nick."\n<br>"
			 ."Adres E-mail: ".$adres."\n<br>"
			 ."Tresc: ".$wiad."\n<br>";
	$tresc2 = "Nick: ".$nick."\n<br>"
			 ."Adres E-mail: ".$adres."\n<br>"
			 ."Tresc: ".$wiad."\n<br>"
			 ."<b>Wiadomość jest potwierdzeniem wysłania wiadomości do obsługi serwisu </b><br>Odpowiedź zostanie udzielona do 24h.<b><font color='red'>Wiadomość jest wysyłana automatycznie prosimy na nią nie odpowiadać!<b></font>";
		$headers = 'MIME-Version: 1.0' . " \r\n";
      $headers .= 'Content-type: text/html; charset=UTF-8' . " \r\n";
      $headers .= "From: Strona Minecraft <$adresod>".PHP_EOL."Reply-To: $adres";	
	if (isset($_POST['send'])) {
        if (empty($nick) || strlen($nick)<=2) { 
                echo "<div class='red'>Proszę podać Nick, musi on zawierać przynajmiej dwa znaki<br /></div>";
}elseif (!ereg("^[a-zA-Z0-9.-_]+@[a-zA-Z0-9.-_]+.[a-z]{2,4}$", $_POST["adres"])) {
                echo "<div class='red'>Wprowadzony e-mail jest za krótki, lub nieprawny, musi zawierać znak @.<br /></div>";
}elseif (empty($wiad) || strlen($wiad)<=5) {
                echo "<div class='red'>Nie ma treści wiadomosci lub jest ona za krutka<br /></div>";
}else {
mail($adresdo, $temat, $tresc, $headers, $adresod);
	if(mail($adres, $temat, $tresc2, $headers)){
	echo "<div class='green'>Widomośc wysłano</div>";
} else{
			echo "<div class='red'>Wiadomość nie została wysłana. Nieznany błąd.</div>";
}
}
}
?>

 

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
pBartnik    416

Nie ogarniam, nie działa prawidłowo jak mówisz ReCaptcha, a Ty chcesz aby błąd był wyświetlany na osobnej stronie tak? Po wysłaniu formularza?

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach
adam2350    11
3 minuty temu, pBartnik napisał:

Nie ogarniam, nie działa prawidłowo jak mówisz ReCaptcha, a Ty chcesz aby błąd był wyświetlany na osobnej stronie tak? Po wysłaniu formularza?

Właśnie nie działa prawidłowo bo nawet jak nie zaznaczę recaptcha to i tak wiadomość się wyśle. Błąd najlepiej żeby został wyświetlany pod formularzem ew. nad. Teraz jest wyświetlany na stronie index.php ale bez formularza a ja tutaj chciałbym też formularz.

Udostępnij tego posta


Odnośnik do posta
Udostępnij na innych stronach

Jeśli chcesz dodać odpowiedź, zaloguj się lub zarejestruj nowe konto

Tylko zarejestrowani użytkownicy mogą komentować zawartość tej strony.


×