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!