Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    27

    controllo captcha lato server?

    Salve a tutti, arrivo direttamente dalla sezione HTML del forum.
    Dunque, sto cercando di integrare un captcha (che ho scaricato già fatto) nella mia shoutbox. Fino ad ora sono riuscito a far funzionare tutto, però come mi ha fatto notare un vostro collega della sezione HTML tutto girava lato client, e quindi i bot riuscivano a fregarmi e a spammare nella shoutbox.

    Sono quasi totalmente ignorante riguardo php, mi servirebbe quindi un grosso aiuto per capire come fare a costruire qualcosa lato server che poi lanci al client il captcha e di ritorno prenda quanto ha inserito, controllando lato server se è stato inserito correttamente o meno il codice.

    Fino ad ora ho usato il seguente form

    codice:
    <form id="chatForm" name="chatForm" method="post" action="index.php">
    		
    
    
    			<?php $name = ($params->get("name")) ? $user->get('name') : $user->get('username'); ?>
    			<?php if($loggedin != 'guest') :  /* If they are logged in, then print their nickname */ ?>
    			<label><?php echo JText::_( 'NAME'); ?> <?php echo $name; ?></label>
    			<input type="hidden" name="shoutboxname" id="shoutboxname" class="inputbox" value="<?php echo $name; ?>" />
    			<?php else:  /* Otherwise allow the user to pick their own name */ ?>
    			<label for="shoutboxname"><?php echo JText::_('Nome:'); ?></label>
    			<input type="text" name="shoutboxname" id="shoutboxname" class="inputbox" value="<?php if (isset($_COOKIE['jalUserName'])) { echo $_COOKIE['jalUserName']; } ?>" />
    			<?php endif; ?>
    			<?php if (!$params->get('url')) : ?>
    			<span style="display: none">
    			<?php endif; ?>
    			<label for="shoutboxurl">Url:</label>
    			<input type="text" name="shoutboxurl" id="shoutboxurl" class="inputbox" value="<?php if (isset($_COOKIE['jalUrl'])) { echo $_COOKIE['jalUrl']; } else { echo 'http://'; } ?>" />
    			<?php if (!$params->get('url')) : ?>
    			</span>
    			<?php endif; ?>
    			
    			<label for="chatbarText"><?php echo JText::_( 'Messaggio:'); ?></label>
    			<?php if ($params->get('textarea')) : ?>
    			<?php
    			$Form = '';
    			$mainframe->triggerEvent('onBBCode_RenderForm', array('document.forms.chatForm.chatbarText', &$Form) );
    			echo $Form;
    			?>
    			<textarea rows="4" cols="16" name="chatbarText" id="chatbarText" class="inputbox"></textarea>
    			<?php else: ?>
    			<input type="text" name="chatbarText" id="chatbarText" class="inputbox"/>
    			<?php endif; ?>
    			<input type="text" name="website" id="website" class="website" />
    		</p>
    		<?php if(JPluginHelper::isEnabled('system', 'yvsmiley')): ?>
    		<?php echo JText::_( 'SMILEYS'); ?>
    		<?php 
    		$smilies = '';
    		$mainframe->triggerEvent('onSmiley_RenderForm', array('document.forms.chatForm.chatbarText', &$smilies, 'sbsmile') );
    		echo $smilies;
    		?>
    		<?php endif; ?>
    		<input type="hidden" id="jal_lastID" value="<?php echo $lastID + 1; ?>" name="jal_lastID" />
    		<input type="hidden" name="shout_no_js" value="true" />
    		
    		<input type="submit" name"submit" class="button" value="invia" onClick="return PopupCentrata()"/>
    		
    	</form>
    in rosso ho evidenziato l'input che lancia la funzioncina PopupCentrata(), che ha il seguente codice:

    codice:
     function PopupCentrata(){
       retval = false;
       var w = 300; 
       var h = 220;
       var l = Math.floor((screen.width-w)/2);
       var t = Math.floor((screen.height-h)/2);
       var xyz = window.open("/modules/mod_shoutbox/captcha/pagina.php","Captcha","resizable=0,location=0,width=" + w + ",height=" + h + ",top=" + t + ",left=" + l);
    	 return retval;
    	}
    lo scopo di questa funzioncina fino ad ora era quello di aprire una finestrella popup in cui caricava il codice contenuto in "pagina.php", che mostrava un'immagine e chiedeva il codice rappresentato su quest'ultima. Una volta inserito il codice corretto, veniva inoltrato il submit della finestra padre tramite window.opener.document.chatForm.submit().

    Se dovesse servire vi posto anche il codice contenuto nel file pagina.php.

    Detto questo mi affido a voi, spero riusciate a capire quanto ho scritto. Grazie in anticipo, attendo vostre notizie a riguardo!

  2. #2
    Io ti consiglierei di abbandonare questo metodo e, concettualmente, affidarti a questo.

    Crea un'immagine con php, (cerca su google) mettendogli all'interno il codice captcha e contemporaneamente salva quel codice all'interno del Database.

    Poi richiama il file php all'interno del tag <img> e inserisci nel form un campo codice captcha da far inserire al momento della compilazione del form.

    All'invio del form, controlla se il codice inserito nel form è presente nel DB.

    Se presente procedi con l'invio del messaggio e cancella il codice dal DB, se non è presente blocca il processo e fai visualizzare un messaggio di errore

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2007
    Messaggi
    27
    grazie per la risposta, ho risolto installando una shoutbox che comprendeva un filtro anti spambot..

    però mi hai incuriosito con sta cosa dell'immagine di php per renderla ancora + sicura bisognerebbe aumentare il numero delle immagini?

    e per quanto riguarda le finestre popup e i controlli lato server di un codice, captcha o non, come funziona il tutto? cioè, le informazioni che client e server si scambiano come viaggiano? chi invia a chi cosa?

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2005
    Messaggi
    579
    allora praticamente capchta è un sistema che serve per vedere se chi invia i dati è una macchina o una persona. Si basa sul un tema molto semplice :

    - crei una immagine con php , con un codice alfanumerico dentro
    - poi chiedi alla persona di ricopiare il codice in una input box
    - infine lo script provvederà a vedere se il codice è esatto


    il sistema capchta ti evita i bot tanto carini

    qua trovi un tutorial carino dove riprodure un semplice sistema in php http://www.ebug.it/?p=54


    ciao
    l'uomo è tutto ciò che non può essere

    http://www.ebug.it Discussioni da web Designer

    http://www.ebug.it/?p=354 e Dart Fener dove lo mettiamo lol

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 © 2025 vBulletin Solutions, Inc. All rights reserved.