Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    Ricaricare solo immagine captcha e non refresh di tutta la pagina

    Ciao,
    Vorrei un aiuto perché non riesco a ricaricare un'immagine captcha in un mio modulo, nel caso in cui la scritta non risultasse molto chiara. Dovrei fare il refresh, perciò, solo dell'immagine e NON di tutta la pagina.
    Da varie ricerche in rete, vedo che si può fare con AJAX, che però non conosco ancora. Perciò vi chiedo aiuto.
    La pagina php che genera l'immagine l'ho chiamata - captcha.php - mentre quella del form che la richiama - contatti.php.
    Vi mostro il semplice tag HTML di quest'ultima:

    codice:
     [img]captcha.php?token=<?php echo $url_key; ?>[/img]
    qui richiamo il file appunto captcha.php con il parametro in GET visto che poi - contatti.php - genera una chiave casuale univoca che salvo su db, e che viene appunto passata tra i due files, (NON uso perciò le sessioni, o i cookies come fanno molti script).

    Ho fatto vari tentativi, ad es. ho modificato il tag qui sopra in:

    codice:
    <iframe id="captcha" src="captcha.php?token=<?php echo $url_key; ?>" ></iframe>
    Ricarica l'immagine
    ovvero ho usato il tag iframe invece di img, e poi ho provato ad usare questo codice Javacscript:

    codice:
    function cambiaCaptcha()
    	{
    		document.getElementById('captcha').src='captcha.php?token=<?php echo $url_key; ?>';
    	}
    Se clicco allora sul link che ora appare, per cambiare appunto l'immagine, mi sparisce tutto e non vedo più niente.


    In seguito ho provato anche a modificare il codice Javascript, anche per evitare che il browser conservasse nella sua cache l'immagine precedente, come fa di default. Di conseguenza ho modificato il tag HTML, eliminando <iframe> e ritornando al semplice <img> dove passo un id che mi serve per dire allo script in .js, che qui sotto indico, di ricaricare appunto quel determinato id che contiene purtroppo la variabile in PHP che "scombina" il tutto.

    Ecco la nuova modifica:

    codice:
    [img]captcha.php?token=<?php echo $url_key; ?>[/img]
    Ricarica l'immagine
    Ecco il nuovo .js reloadImg(id) che però ancora NON funziona.

    codice:
    function reloadImg(id) {
       var obj = document.getElementById(id);
       var src = obj.src;
       var pos = src.indexOf('?');
       if (pos >= 0) {
          src = src.substr(0, pos);
       }
       var date = new Date();
       obj.src = src + '?v=' + date.getTime();
       return false;
    }
    Idee?
    Grazie e ciao.[B][U][B]

  2. #2
    Moderatore di JavaScript L'avatar di br1
    Registrato dal
    Jul 1999
    Messaggi
    19,998
    Hai provato a semplificare cosi':
    codice:
    [img]captcha.php?token=<?php echo $url_key; ?>[/img]
    '">Ricarica l'immagine
    Ovviamente la pagina php deve fornire un'immagine differente dalla precedente a parita' di key...

    Per i problemi di cache prova ad aggiungere un parametro:
    Il guaio per i poveri computers e' che sono gli uomini a comandarli.

    Attenzione ai titoli delle discussioni: (ri)leggete il regolamento
    Consultate la discussione in rilievo: script / discussioni utili
    Usate la funzione di Ricerca del Forum

  3. #3
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Body
    codice:
    <div id="spazio_codice">
    [img]captcha.php?token=<?php echo $url_key; ?>[/img]
    </div>
    Ricarica l'immagine
    head
    codice:
    function cambiaCaptcha(){
    var rand = Math.random();
    	document.getElementById("spazio_codice").innerHTML('[img]captcha.php?token=<?php echo $url_key; ?>&radom='+rand+'[/img]');
    	}
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

  4. #4
    Ciao, br1 ed Andrea,

    Purtroppo le due soluzioni proposte generano entrambi due volte lo stesso captcha con ovviamente due link, i quali cliccandoci sopra, NON creano un nuovo captcha ma mostrano, al contrario sempre lo stesso, che infatti non comunica con il db, dove nella tabella preposta, vedo ancora la stringa vecchia e NON una nuova e nessuna chiave nuova, bensì ancora quella precedente.

    Infatti - e qui chiarisco ulteriormente - la pagina contatti.php del form che genera la chiave casuale univoca che scambia poi con captcha.php, contiene questo codice:
    Codice PHP:
                   // Genero casualmente la chiave univoca per la tabella validation che i 2 files si scambiano e
            // Inserisco la stringa casuale di 4 lettere da leggere sopra al captcha
            
    $url_key sha1(uniqid(rand(), true)); 
            
            
    $captcha random_string(4);
                
            try
                {
                    
    $stmt $pdo->prepare("INSERT INTO validation (id_validation, url_key, captcha, expire_date) VALUES ('', ?, ?, DATE_ADD(NOW(), INTERVAL 5 MINUTE))");
            
                    
    $stmt->execute(array($url_key$captcha));
                }
            catch(
    PDOException $e)
                {
                    echo 
    "Error!: " $e->getMessage() . "
    "
    ;
                    die(); 
                } 
    Poi elimino tutti i record (stringhe e chiavi) sia che l'utente inserisca in modo corretto la stringa del captcha, sia che non lo faccia.

    Non capisco davvero come uscirne.
    Idee ulteriori?
    Grazie e ciao.

  5. #5
    Moderatore di Annunci siti web, Offro lavoro/collaborazione, Cerco lavoro L'avatar di cavicchiandrea
    Registrato dal
    Aug 2001
    Messaggi
    26,131
    Il php va gestito nel forum php attendi che Bruno sposti
    Cavicchi Andrea
    Problemi con javascript, jquery, ajax clicca qui

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.