[risolto] evitare refresh index dopo recaptcha sbagliato

andreto

Utente Attivo
5 Dic 2012
88
0
0
Ciao a tutti,
vorrei aggiungere il recaptcha di google al modulo registrazione del mio sito però noto che se sbaglio a scrivere le parole, il recaptcha aggiorna completamente la pagina eliminando tutti i dati già inseriti dall'utente nelle input text e quindi l'utente dovrebbe riscriverli tutti.

Ho provato ajax ma senza successo.

- Potrei passare le variabili contenenti i valori delle input text alla pagina verify.php e poi ritornarle alla index.php.
- Potrei anche usare history.back() di javascript.

Ma ad essere sincero nessuna di queste due soluzioni mi piace.

Vorrei non far ri-aggiornare la pagina index.php.

Sapete dirmi se esiste un metodo per fare questo?

Grazie :byebye:
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Ciao, potresti risolvere cosi
PHP:
<input type="text" name="nome" value="<?php echo isset($_POST['nome']) ? $_POST['nome'] : ""; ?>"/>
I campi compilati verranno reimpostati
 

andreto

Utente Attivo
5 Dic 2012
88
0
0
Ciao, potresti risolvere cosi
PHP:
<input type="text" name="nome" value="<?php echo isset($_POST['nome']) ? $_POST['nome'] : ""; ?>"/>
I campi compilati verranno reimpostati

Grazie criric per la risposta,
avrei voluto però non uscire dalla pagina index proprio come avviene con ajax o al massimo includendo il recaptcha in un iframe ma non ci sono riuscito.
Se questo è comunque il metodo più semplice o consigliato userò questo.


Curiosità: Come mai facebook una volta utilizzava il recaptcha e ora non più?
Immagino per questione estetica e di velocità di iscrizione però con quale altro metodo si protegge contro i robot o spammer?
C'è un metodo valido come il recaptcha che non faccia perdere tempo all'utente nel registrarsi?
 

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
Non so come hai strutturato la pagina ma in teoria il submit dovrebbe richiamare la stessa index che verifica i dati inseriti e il captcha e se tutto regolare reindirizza da qualche parte
Io uso questa classe php, mi trovo abbastanza bene anche se utilizzo solo l'immagine senza audio e pulsante aggiorna
In pratica memorizza in sessione il codice che dovrai poi verificare con il post
 

andreto

Utente Attivo
5 Dic 2012
88
0
0
Non so come hai strutturato la pagina ma in teoria il submit dovrebbe richiamare la stessa index che verifica i dati inseriti e il captcha e se tutto regolare reindirizza da qualche parte
Io uso questa classe php, mi trovo abbastanza bene anche se utilizzo solo l'immagine senza audio e pulsante aggiorna
In pratica memorizza in sessione il codice che dovrai poi verificare con il post

Risolto così:

prova.php

PHP:
<?php session_start(); ?>
<html>
    <body> 
     
      <form method="post" action="verify-captcha.php">
      <input type="text" name="nome" value="<?php echo ($_SESSION['nome']); unset($_SESSION['nome']); ?>" /> 
      
        <?php
          require_once('recaptcha-php-1.11/recaptchalib.php');
          $publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
          echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" />
      </form>
            
      </body>
  </html>

verify-captcha.php

PHP:
<?php
session_start();
$nome = $_POST["nome"];

  require_once('recaptcha-php-1.11/recaptchalib.php');
  $privatekey = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {    
	$_SESSION['nome']=$nome;
    header("location:prova.php");
	exit;
  } else {
    // ok
  }
  ?>

come ti sembra?
 
Ultima modifica:

criric

Super Moderatore
Membro dello Staff
SUPER MOD
MOD
21 Ago 2010
5.607
54
48
TN
puoi utilizzare la funzione array_merge() per unire alla sessione tutti gli elementi del post
PHP:
$_SESSION = array_merge($_SESSION, $_POST);
prima però ti conviene ripulirli
PHP:
foreach ($_POST as $key => $value) {
    $_POST[$key] = htmlentities($value);
}
 
Ultima modifica:

andreto

Utente Attivo
5 Dic 2012
88
0
0
Perfetto, ora mi piace di più :fonzie::fonzie:

Questo è il risultato:

prova.php (rimasto invariato)
PHP:
<?php session_start(); ?>

<html>
    <body> 
     
      <form method="post" action="verify-captcha.php">
      <input type="text" name="nome" value="<?php echo ($_SESSION['nome']); unset($_SESSION['nome']); ?>" /> 
      
        <?php
          require_once('recaptcha-php-1.11/recaptchalib.php');
          $publickey = "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"; 
          echo recaptcha_get_html($publickey);
        ?>
        <input type="submit" />
      </form>
            
      </body>
  </html>

verify-captcha.php
PHP:
<?php
session_start();
include ('ripulisci.php');
ripulisci ($_POST);

  require_once('recaptcha-php-1.11/recaptchalib.php');
  $privatekey = "yyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyyy";
  $resp = recaptcha_check_answer ($privatekey,
                                $_SERVER["REMOTE_ADDR"],
                                $_POST["recaptcha_challenge_field"],
                                $_POST["recaptcha_response_field"]);

  if (!$resp->is_valid) {    
	$_SESSION = array_merge($_SESSION, $_POST);
        header("location:prova.php");
	exit;
  } else {
    # ok
  }
  ?>

ripulisci.php
PHP:
<?php
function ripulisci(&$v)
{
# controlliamo che la variabile sia un array
if (is_array($v))
 {
# se si tratta di un array inizializziamo il ciclo
 foreach ($v as $k => $val)
 {
# filtriamo tutti i valori
 $v[$k] = htmlentities(strip_tags(trim($val)),ENT_QUOTES);
 }
 }else{
# se la variabile non è un array
# applichiamo i filtri senza ciclo
 $v = htmlentities(strip_tags(trim($v)),ENT_QUOTES);
 }
# in ogni caso otterremo il valore di ritorno
return $v;
}
?>

Grazie :beer:
 
Ultima modifica di un moderatore:

Longo8

Utente Attivo
28 Mar 2011
1.694
0
36
Alla registrazione ormai sono pochi i siti che usano il captcha.
È una questione di estetica e di usabilità anche perché poi viene sempre (o quasi) richiesta una conferma della mail all'utente per l'attivazione del profilo.
 
Discussioni simili
Autore Titolo Forum Risposte Data
L (risolto) MySQL 0
B getElementById su piu id(Risolto) Javascript 6
L Esercitarsi con Js [RISOLTO] Javascript 4
C [RISOLTO]Inserimento variabile php in input html PHP 20
L risolto visualizzazione e ordinamento dati PHP 1
moustache [RISOLTO] SQL PHP IIS PHP 8
Sergio Unia Ricezione email con destinatari multipli [Risolto] PHP 2
L update tabelle in php mysql [risolto] PHP 6
M Semplice visualizzatore di immagini [risolto con plugin wp] PHP 7
L [RISOLTO] Stampa a video risultato count in html PHP 13
L [RISOLTO] Eliminare una discussione creata PHP 3
tomorc [HTML] Problema con scroll bar (risolto) HTML e CSS 0
A [PHP] Problema query insert [RISOLTO] PHP 14
B [PHP] recuperare IP dei server in load balancing [RISOLTO] PHP 3
K [RISOLTO] Problema Griglia Php+Mysql PHP 13
S [RISOLTO] aggiorna tabella da select option asp classic Classic ASP 7
elpirata [RISOLTO][Javascript] Datapicker e autocompletamento campo input Javascript 2
elpirata [RISOLTO][Mysql] Problema insert valori apostrofati MySQL 1
elpirata [RISOLTO][Mysql] Contare le occorrenze in un campo tipo varchar MySQL 2
G [MS Access] Gestione biglietti [RISOLTO] MS Access 2
G [MS Access] Casella combinata & Query [RISOLTO] MS Access 4
G [MS Access] Query mese corrente con conteggio [RISOLTO] MS Access 2
M [RISOLTO]Windows media player non mi funziona più su win 10 pro 64 bit Windows e Software 2
C [RISOLTO][PHP] Errore di sintassi PHP 8
IT9-Gpp [RISOLTO] Leggere variabile restituita da success Ajax 3
Kolop [RISOLTO][PHP] Problema Pagination PHP 2
C [RISOLTO][PHP] Funzione ONclick PHP 14
C [RISOLTO][PHP] Conteggio righe di una tabella PHP 4
N [PHP] Utilizzo variabili di sessione [Risolto] PHP 13
Tommy03 [RISOLTO][PHP] Webserver o devserver? PHP 2
Sergio Unia Recupero dati da una vecchia versione MySql [Risolto] MySQL 4
spider81man [PHP] Problemi cancellazione dato su DB [RISOLTO] PHP 1
A [RISOLTO]Inserimento Immagini da pc a MySql PHP 15
A [PHP] RISOLTO Invio Mail con Tabella PHP 2
felino Risolto - [Wordpress][WooCommerce] PayPal Checkout e campi di fatturazione WordPress 2
elpirata [PHP][RISOLTO] Sommare gli importi estratti da un ciclo while PHP 3
elpirata [PHP][RISOLTO] Effettuare la somma dei tempi di lavorazione PHP 3
elpirata [PHP] [RISOLTO]Sovrascrivere testo in una tabella PHP 2
A [RISOLTO]Recuperare dati inviati con json tramite php PHP 4
C [RISOLTO][PHP] Passaggio variabili senza refresh di pagina PHP 7
elpirata [PHP][RISOLTO] Errore di tipo Notice: Undefined index - Come risolvere quando si hanno tante var PHP 10
S Problema in PHP per invio file XML - RISOLTO- PHP 8
A [Javascript] [RISOLTO] Doppio "submit", in uno stesso "Form" , che puntino ad "action" diversi Javascript 1
marino51 [Risolto]videochat di messenger ha smesso di funzionare sul telefonino Smartphone e tablet 1
A [Javascript] [HTML] RISOLTO...Allungare un box all'apertura della pagina No Mouse over Javascript 9
ken_korn [Javascript][Risolto] browser.tab.Tabs.favIconUrl non funziona Javascript 5
A [RISOLTO] HighChart e PHP PHP 4
A [RISOLTO] PHP Selezionare tutti i file con stessa estensione PHP 2
A [RISOLTO] Table elaborata da codice PHP con dati da DB non visualizzata in IFRAME PHP 15
T [Photoshop] Problema creazione pennello personalizzato [RISOLTO] Photoshop 3

Discussioni simili