Joomla.it Forum
Non solo Joomla... => Sviluppo => : danielemucilli 12 May 2014, 13:35:22
-
Ho questo form che però non funziona bene perchè qualsiasi codice inserisco o non inserisco, mi fa inviare lo stesso il modulo. Mi potete aiutare? Grazie
<?php
/**
* @package Joomla.Site
* @subpackage com_search
* @copyright Copyright (C) 2005 - 2012 Open Source Matters, Inc. All rights reserved.
* @license GNU General Public License version 2 or later; see LICENSE.txt
*/
defined('_JEXEC') or die;
/**
* Search Component Controller
*
* @package Joomla.Site
* @subpackage com_search
* @since 1.5
*/
class PrenotaController extends JController
{
public function display()
{
$db = JFactory::getDBO();
echo '<script src="http://www.reborapoint.it/components/com_chronoforms/js/formcheck/formcheck-max.js" ></script>';
echo '<link type="text/css" href="http://www.reborapoint.it/components/com_chronoforms/css/formcheck_fix.css" rel="stylesheet"></link>
<script type="text/javascript" src="http://www.reborapoint.it/components/com_chronoforms/js/formcheck/formcheck-yui.js"></script>
<script type="text/javascript" src="http://www.reborapoint.it/components/com_chronoforms/js/formcheck/formcheck-max.js"></script>
<script type="text/javascript" src="http://www.reborapoint.it/components/com_chronoforms/js/formcheck/lang/en.js"></script>
<script type="text/javascript">
window.addEvent(\'load\', function() {
new JCaption(\'img.caption\');
});
//<![CDATA[
window.addEvent(\'domready\', function() {
document.id(\'chronoform_prenota-ora\').addClass(\'hasValidation\');
formCheck_prenota_ora = new FormCheckMax(\'chronoform_prenota-ora\', {
onValidateSuccess: $empty,
display : {
showErrors : 0,
errorsLocation: 1 }
});
});
//]]>
function keepAlive() { var myAjax = new Request({method: "get", url: "index.php"}).send();} window.addEvent("domready", function(){ keepAlive.periodical(840000); });
</script>
';
echo '<link type="text/css" href="http://www.reborapoint.it/templates/prenota/css/template.css" rel="stylesheet"></link>';
echo '<link type="text/css" href="http://www.reborapoint.it/components/com_chronoforms/css/frontforms.css" rel="stylesheet"></link>
<link type="text/css" href="http://www.reborapoint.it/components/com_chronoforms/css/formcheck/theme/classic/formcheck.css" rel="stylesheet"></link>';
echo '<div class="moduletable">
<form class="Chronoform hasValidation" method="post" id="chronoform_prenota-ora" name="prenota-ora" action="index.php?option=com_prenota&task=inviaprenotazione">
<input type="hidden" value="" name="user_email">
<div style="" id="1_container_div" class="ccms_form_element cfdiv_header">
<p>Compila questo modulo per ordinare o richiedere un preventivo. Sarai ricontattato prima possibile.<br>Ti preghiamo di compilare tutti i campi obbligatori, segnati con l\'asterisco.</p>
<div class="clear">
</div>
</div>
<div style="" id="nome_cognome1_container_div" class="ccms_form_element cfdiv_text label_over multiline_start">
<label>Nome e Cognome *</label>
<input type="text" name="nome_cognome" value="" title="" class=" validate[\'required\',\'alphanum\']" size="30" maxlength="150">
<div class="small-message">Inserisci il tuo nome e cognome</div>
<div class="clear"></div>
<div id="error-message-nome_cognome"></div>
</div>
<div style="" id="indirizzo_consegna1_container_div" class="ccms_form_element cfdiv_text label_over multiline_add">
<label>Indirizzo di consegna *</label>
<input type="text" name="indirizzo_consegna" value="" title="" class=" validate[\'required\']" size="30" maxlength="150">
<div class="small-message">Inserisci di seguito separato dalla virgola, indirizzo, città, CAP</div>
<div class="clear"></div>
<div id="error-message-indirizzo_consegna"></div>
</div>
<div style="" id="numero_telefono1_container_div" class="ccms_form_element cfdiv_text label_over multiline_start">
<label>Numero di telefono *</label>
<input type="text" name="numero_telefono" value="" title="" class=" validate[\'required\',\'phone\']" size="30" maxlength="150">
<div class="small-message">Inserisci il tuo telefono prinicipale</div>
<div class="clear"></div>
<div id="error-message-numero_telefono"></div>
</div>
<div style="" id="numero_telefono_21_container_div" class="ccms_form_element cfdiv_text label_over multiline_add">
<label>Numero di telefono 2</label>
<input type="text" name="numero_telefono_2" value="" title="" class=" validate[\'phone\']" size="30" maxlength="150">
<div class="small-message">Inserisci il tuo telefono secondario</div><div class="clear"></div>
<div id="error-message-numero_telefono_2"></div>
</div>
<div style="" id="email1_container_div" class="ccms_form_element cfdiv_text label_over multiline_start">
<label>Email *</label>
<input type="text" name="email" value="" title="" class=" validate[\'required\',\'email\']" size="30" maxlength="150">
<div class="small-message">Inserisci la tua email</div><div class="clear"></div>
<div id="error-message-email"></div>
</div>
<div style="" id="note1_container_div" class="ccms_form_element cfdiv_textarea label_over multiline_add">
<label>Note</label>
<textarea name="note" title="" class="" rows="5" cols="29"></textarea>
<div class="clear"></div>
<div id="error-message-note"></div>
</div>
<input type="hidden" name="user_email" value="">
<div style="" id="ordine_tipo1_container_div" class="ccms_form_element cfdiv_select label_over multiline_start">
<label>Ordine Tipo *</label>
<select name="ordine_tipo" title="" class=" validate[\'required\']" size="1">
<option value="">Scegli il tipo</option>';
$query = "select * from #__iwt_prenotazione_tipologie order by titolo ASC";
$db->setQuery($query);
$bancali = $db->loadObjectList();
foreach($bancali as $b)
{
echo '<option value="'.$b->titolo.'">'.$b->titolo.'</option>';
}
echo '</select>
<div class="clear"></div>
<div id="error-message-ordine_tipo"></div>
</div>
<div style="" id="ordine_quantita1_container_div" class="ccms_form_element cfdiv_select label_over multiline_add">
<label>Ordine Quantità *</label>
<select name="ordine_quantita" title="" class=" validate[\'required\']" size="1">
<option value="">Scegli la quantità</option>';
$query = "select * from #__iwt_prenotazione_quantita order by titolo ASC";
$db->setQuery($query);
$bancali = $db->loadObjectList();
foreach($bancali as $b)
{
echo '<option value="'.$b->titolo.'">'.$b->titolo.'</option>';
}
echo '</select>
<div class="clear"></div>
<div id="error-message-ordine_quantita"></div>
</div>
<div style="" id="privacy_container_div" class="ccms_form_element cfdiv_checkbox">
<input type="hidden" alt="ghost" value="" name="privacy">
<input type="checkbox" name="privacy" class="validate[\'required\'] label_right" title="" id="privacy" value="1" checked="checked">
<label class="full_label" for="privacy">Acconsento al trattamento dei dati secondo la normativa sulla privacy. INFORMATIVA AI SENSI DELL\'ART. 13 DEL D. LEGS. 30 GIUGNO 2003 N. 196 -\'CODICE IN MATERIA DI PROTEZIONE DEI DATI PERSONALI</label>
<div class="clear"></div>
<div id="error-message-privacy"></div>
</div>
<div style="" id="2_container_div" class="ccms_form_element cfdiv_header">L\'invio di questo modulo, implica il consenso al trattamento dei dati secondo la normativa sulla privacy.
<div class="clear"></div>
</div>
<div style="" id="chrono_verification1_container_div" class="ccms_form_element cfdiv_text">
<label>Inserisci il codice di verifica</label>
<input type="text" name="chrono_verification" value="" title="" class="chrono_captcha_input validate[\'required\']" size="5" maxlength="5">
<img id="imgver_235" alt="" src="components/com_chronoforms/chrono_verification.php?imtype=0">
<img border="0" onclick="document.getElementById(\'imgver_235\').src = \'http://www.reborapoint.it/components/com_chronoforms/chrono_verification.php?imtype=0\' + \'&\' + Math.random();" alt="refresh" style="padding:0px 0px 15px 10px;" src="administrator/components/com_chronoforms/form_actions/load_captcha/refresh.png">
<div class="clear"></div>
<div id="error-message-chrono_verification"></div>
</div>
<div style="text-align:left" id="input_submit_121_container_div" class="ccms_form_element cfdiv_submit">
<input type="submit" value="Invia" class="invia" name="input_submit_12">
<input type="reset" value="Cancella" name="reset">
<div class="clear"></div>
<div id="error-message-input_submit_12"></div>
</div>
<input type="hidden" value="1" name="f90ec54921cb25ce0a4a1d435ad20e86">
<input type="hidden" value="inviaprenotazione" name="task">
<input type="hidden" value="com_prenota" name="option">
</form>
<div class="chronoform">
</div>
</div>';
}
public function inviaprenotazione()
{
$app = JFactory::getApplication();
$db = JFactory::getDBO();
$user = JFactory::getUser();
$query = "CREATE TABLE IF NOT EXISTS `#__iwt_prenota` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL,
`address` varchar(255) NOT NULL,
`tel_1` varchar(255) NOT NULL,
`tel_2` varchar(255) NOT NULL,
`email` varchar(255) NOT NULL,
`note` varchar(255) NOT NULL,
`ordine_tipo` varchar(255) NOT NULL,
`quantità` varchar(255) NOT NULL,
`puntovendita` varchar(255) NOT NULL,
`date` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1 ";
$db->setQuery($query);
$db->query();
$nome_cognome = JRequest::getVar('nome_cognome');
$indirizzo_consegna = JRequest::getVar('indirizzo_consegna');
$numero_telefono = JRequest::getVar('numero_telefono');
$numero_telefono_2 = JRequest::getVar('numero_telefono_2');
$email = JRequest::getVar('email');
$note = JRequest::getVar('note');
$ordine_tipo = JRequest::getVar('ordine_tipo');
$ordine_quantita = JRequest::getVar('ordine_quantita');
$html = "E' stato compilato un form con questi campi:<br/>
Nome e cognome: ".$nome_cognome."<br/>
Indirizzo di consegna: ".$indirizzo_consegna."<br/>
Numero di telefono: ".$numero_telefono."<br/>
Numero di telefono2: ".$numero_telefono_2."<br/>
Email: ".$email."<br/>
Note: ".$note."<br/>
Ordine tipo: ".$ordine_tipo."<br/>
Ordine quantità: ".$ordine_quantita."<br/>";
if(!$user->guest)
{
$html .= 'Punto vendita: '.$user->name;
$useraame = $user->name;
}
$mailer =& JFactory::getMailer();
$config =& JFactory::getConfig();
$sender = array(
$config->getValue( 'config.mailfrom' ),
$config->getValue( 'config.fromname' ) );
$mailer->setSender($sender);
$recipient = $email;
$mailer->addRecipient(array($recipient, $config->getValue( 'config.mailfrom' )));
$body = $html;
$mailer->isHTML(true);
$mailer->Encoding = 'base64';
$mailer->setBody($body);
$mailer->setSubject('Dettagli prenotazione su reborapoint.it');
$send =& $mailer->Send();
if ( $send == true ) {
$app->redirect('index.php?option=com_prenota', 'Prenotazione avvenuta con successo.');
} else {
$app->redirect('index.php?option=com_prenota', 'Errore: si è verificato un problema tecnico, riprovare più tardi.', 'error');
}
}
}
-
Sposto in Sviluppo...
-
Ho questo form
------------------------
chi l'ha sviluppato? tu?
-
Non l'ho sviluppato io, però non posso più contare su chi mi ha fatto questo componente! Mi potete aiutare? Non penso sia così complicato :-)
-
se non lo sai fare come fai a dire quanto è complicato?
io direi che è un bel casino visto come è scritto in controller, un bell'esempio di coding alla php nuke!
verifica di non aver disabilitato mootools, JCaption lo richiede, e di non aver disinstallato qualche altro componente richiesto, come chronoform, o di non aver aggiornato questi ultimi a versioni non compatibili (es basate su jquery).
ciao
-
Hai ragione scusa non so se è complicato, è tutta oggi che ci sbatto la testa, il problema è nella verifica del codice captcha che non avviene.
-
secondo me ti conviene buttare tutto... non è un estensione per joomla e non è nemmeno codice php...
qs cose non si fanno, minimo sono xss.
$nome_cognome = JRequest::getVar('nome_cognome');
$indirizzo_consegna = JRequest::getVar('indirizzo_consegna');
$numero_telefono = JRequest::getVar('numero_telefono');
$numero_telefono_2 = JRequest::getVar('numero_telefono_2');
$email = JRequest::getVar('email');
$note = JRequest::getVar('note');
$ordine_tipo = JRequest::getVar('ordine_tipo');
$ordine_quantita = JRequest::getVar('ordine_quantita');
-
Cosa sono xss?
Se io non vorrei buttarlo non c'è una soluzione?
-
è scritto sopra che cosa devi controllare, se non sei capace buttalo che è meglio
-
io lo rifarei.
Ma a che serve?
.. magari si può fare con estensioni già esistenti senza andare a scomodare sviluppatori
-
a spedire una mail se uno compila la form...
maurizio ha ragione, fai prima a rifarlo da zero.
ciao
-
Allora ho controllato, mootools non c'è nella libreria dei plugin di joomla 2.5!
Chronoforms non è stato cancellato, come anche gli altri componenti non sono stati aggiornati.
-
a spedire una mail se uno compila la form...
-----------------------------------------------------------
...e a che serve uno sviluppatore?... cioè non capisco cosa faccia quella roba che chronoform già non faccia....
voleva mettere un form fatto con CF in una sua estensione?! no dai....
-
L'unica cosa che ha fatto è darmi la possibilità in backend di andare ad aggiungere quantità e tipi di pellet, inoltre nel form in maniera invisibile, quando un utente era collegato, dovevo inviare il nome dell'utente.
Prima l'avevo fatto io con Chronoforms, però siccome arrivavano delle email vuote, ho chiesto allo sviluppatore, che mi ha fatto questo lavoro.
Ora sono abbastanza disperato, con Chronoforms non lo voglio rifare perchè andrei incontro al vecchio bug.
Che mi consigli?
-
difficile davvero consigliarti qualcosa di diverso che rivolgerti a professionisti... quello sviluppatore o non lo era o c'erano questioni che non so e ancor meno mi interessano.
Che io sappia chronoform non ha bug ed è di una malleabilità sconcertante
-
fatti aiutare dagli utenti della area form del forum, da ciò che hai detto non vedo niente che non si possa fare con chronoform.
ps: se quello sviluppatore non lo trovi più non mi sembra una brutta cosa...