Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di d-force
    Registrato dal
    Oct 2001
    Messaggi
    657

    Aiuto a scrivere codice php validazione campi.

    Salve a tutti, qualcuno potrebbe aiutarmi a scrivere un codice di validazione php per validare un campo?

    In pratica ho un form (rsform x Joomla) con diversi campi (nome, cognome, data arrivo, data partenza, ecc...)

    Adesso vorrei aggiungere un menu a cascata con i seguenti items:
    - nessuno
    - Bianco
    - Nero

    La regola di validazione dovrebbe essere la seguente:

    Se scegli Bianco e la data di arrivo è compresa tra il 1 novembre e il 30 novembre 2013 e dal 1 aprile al 30 aprile 2014, OK è valido.
    Se scegli Nero e la data di arrivo è compresa tra il 1 novembre e il 30 novembre 2013 e dal 1 aprile al 30 aprile 2014, OK è valido.
    Se scegli Nessuno e la data di arrivo è compresa tra il 1 novembre e il 30 novembre 2013 e dal 1 aprile al 30 aprile 2014, OK è valido.

    Se invece,

    Se scegli Bianco e la data di arrivo NON è compresa tra il 1 novembre e il 30 novembre 2013 e dal 1 aprile al 30 aprile 2014, ERRORE.Se scegli Nero e la data di arrivo NON è compresa tra il 1 novembre e il 30 novembre 2013 e dal 1 aprile al 30 aprile 2014, ERRORE.
    Se scegli Nessuno e la data di arrivo NON è compresa tra il 1 novembre e il 30 novembre 2013 e dal 1 aprile al 30 aprile 2014, OK è valido.

    Qualcuno è così gentile da aiutarmi a scriverlo?

    Grazie anticipatamente!

  2. #2

    Le date che hai scritto sono tutte identiche, perciò ti basta controllare se la data in arrivo è compresa tra quelle indicate (le trasformi in DATA e calcoli i millisecondi, se vuoi puoi creare una select con tutte le date, tramite la funzione apposita), in questo modo puoi evitare di inserire la select e usi 1 solo controllo sulla data anzichè 3.
    Se non sono indiscreto si può sapere a cosa vuoi applicare questo script?

  3. #3
    Utente di HTML.it L'avatar di d-force
    Registrato dal
    Oct 2001
    Messaggi
    657
    Ciao Bigdada e grazie per la tua risposta!

    Il problema è che non so assolutamente scrivere la regola in php e ho bisogno di qualcuno che la scriva per me.

    In pratica ho un modulo di prenotazioni, all'interno del quale vorrei mettere una select menu a discesa per far scegliere all'utente le varie offerte.

    Queste offerte sono valide solo se la data di arrivo è entro un certo periodo.

    Le date che ho scritto sono tutte identiche ma potrebbero anche essere diverse...

    Poichè l'utente deve inserire (oltre ai vari dati) anche la data di arrivo e di partenza, la select con le offerte dovrebbe andare a controllare se la data di arrivo corrisponde ai requisiti per quell'offerta specifica.

    Tutto il modulo si appoggia ad un file che esegue le varie validazioni dei campi, e vorrei aggiungere anche questa regola specifica.

    Di seguito il codice del file validation.php dove ci sono queste regole di validazione e a cui dovrei aggiungere anche questa.

    codice:
    <?php
    /**
    * @version 1.4.0
    * @package RSform!Pro 1.4.0
    * @copyright (C) 2007-2011 www.rsjoomla.com
    * @license GPL, http://www.gnu.org/copyleft/gpl.html
    */
    
    // no direct access
    defined( '_JEXEC' ) or die( 'Restricted access' );
    
    class RSFormProValidations
    {
    	function none($value,$extra=null,$data=null)
    	{
    		return true;
    	}
    
    	function alpha($param,$extra=null,$data=null)
    	{
    		if(strpos($param,"\n") !== false) 
    			$param = str_replace(array("\r","\n"),'',$param);
    			
    		for($i=0;$i<strlen($param);$i++)
    			if(strpos($extra,$param[$i]) === false && preg_match('#([^a-zA-Z ])#', $param[$i]))
    				return false;
    				
    		return true;
    	}
    	
    	function numeric($param,$extra=null,$data=null)
    	{
    		if(strpos($param,"\n") !== false) 
    			$param = str_replace(array("\r","\n"),'',$param);
    		
    		for($i=0;$i<strlen($param);$i++)
    			if (strpos($extra,$param[$i]) === false && !is_numeric($param[$i]))
    				return false;
    				
    		return true;
    	}
    	
    	
    		function validBonuscode($param,$extra = null)
    {
         if($param !== 'pdcuyd2013') 
           	 return false;
         	 return true;
    }
    
    	
    	function alphanumeric($param,$extra = null,$data=null)
    	{
    		if(strpos($param,"\n") !== false) 
    			$param = str_replace(array("\r","\n"),'',$param);
    		
    		for($i=0;$i<strlen($param);$i++)
    			if(strpos($extra,$param[$i]) === false && preg_match('#([^a-zA-Z0-9 ])#', $param[$i]))
    				return false;
    				
    		return true;
    	}
    	
    	function alphaaccented($value, $extra=null, $data=null) {
    		if (preg_match('#[^[:alpha:] ]#u', $value)) {
    			return false;
    		}
    		return true;
    	}
    	
    	function alphanumericaccented($value, $extra=null, $data=null) {
    		if (preg_match('#[^[:alpha:]0-9 ]#u', $value)) {
    			return false;
    		}
    		return true;
    	}
    	
    	function email($email,$extra=null,$data=null)
    	{
    		jimport('joomla.mail.helper');
    		
    		$email = trim($email);
    		return JMailHelper::isEmailAddress($email);
    	}
    	
    	function emaildns($email,$extra=null,$data=null)
    	{
    		// Check if it's an email address format
    		if (!RSFormProValidations::email($email,$extra,$data))
    			return false;
    		
    		$email = trim($email);
    		list($user, $domain) = explode('@', $email, 2);
    		
    		// checkdnsrr for PHP < 5.3.0
    		if (!function_exists('checkdnsrr') && function_exists('exec') && is_callable('exec'))
    		{
    			@exec('nslookup -type=MX '.escapeshellcmd($domain), $output);
    			foreach($output as $line)
    				if (preg_match('/^'.preg_quote($domain).'/',$line))
    					return true;
    			
    			return false;
    		}
    		
    		// fallback method...
    		if (!function_exists('checkdnsrr') || !is_callable('checkdnsrr'))
    			return true;
    		
    		return checkdnsrr($domain, substr(PHP_OS, 0, 3) == 'WIN' ? 'A' : 'MX');
    	}
    	
    	function uniquefield($value, $extra=null,$data=null)
    	{
    		$db 	=& JFactory::getDBO();
    		$form   = JRequest::getVar('form');
    		$formId = (int) @$form['formId'];
    		
    		$db->setQuery("SELECT `SubmissionValueId` FROM #__rsform_submission_values WHERE FormId='".$formId."' AND `FieldName`='".$db->getEscaped($data['NAME'])."' AND `FieldValue`='".$db->getEscaped($value)."'");
    		return $db->loadResult() ? false : true;
    	}
    	
    	function uniquefielduser($value, $extra=null,$data=null)
    	{
    		$db 	=& JFactory::getDBO();
    		$form   = JRequest::getVar('form');
    		$formId = (int) @$form['formId'];
    		$user	=& JFactory::getUser();
    		
    		$db->setQuery("SELECT sv.`SubmissionValueId` FROM #__rsform_submission_values sv LEFT JOIN #__rsform_submissions s ON (sv.SubmissionId=s.SubmissionId) WHERE sv.FormId='".$formId."' AND sv.`FieldName`='".$db->getEscaped($data['NAME'])."' AND sv.`FieldValue`='".$db->getEscaped($value)."' AND (".($user->get('guest') ? "s.`UserIp`='".$db->getEscaped($_SERVER['REMOTE_ADDR'])."'" : "s.`UserId`='".(int) $user->get('id')."'").")");
    		return $db->loadResult() ? false : true;
    	}
    	
    	function uszipcode($value)
    	{
    		return preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$value);
    	}
    	
    	function phonenumber($value)
    	{
    		return preg_match("/\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b/i", $value);
    	}
    	
    	function creditcard($value,$extra=null,$data=null)
    	{
    		$value = preg_replace ('/[^0-9]+/', '', $value);
    		if (!$value)
    			return false;
    		
    		if (preg_match("/^([34|37]{2})([0-9]{13})$/", $value)) // Amex
    			return true;
    		
    		if (preg_match("/^([30|36|38]{2})([0-9]{12})$/", $value)) // Diners
    			return true;
    		
    		if (preg_match("/^([6011]{4})([0-9]{12})$/", $value)) // Discover
    			return true;
    			
    		if (preg_match("/^([51|52|53|54|55]{2})([0-9]{14})$/", $value)) // Master
    			return true;
    			
    		if (preg_match("/^([4]{1})([0-9]{12,15})$/", $value)) // Visa
    			return true;
    		
    		return false;
    	}
    
    	function custom($param,$extra=null,$data=null)
    	{
    		if(strpos($param,"\n") !== FALSE) 
    			$param = str_replace(array("\r","\n"),'',$param);
    		
    		for($i=0;$i<strlen($param);$i++)
    			if(strpos($extra,$param[$i]) === false)
    				return false;
    				
    		return true;
    	}
    
    	function password($param,$extra=null,$data=null)
    	{
    		if ($data['DEFAULTVALUE'] == $param)
    			return true;
    		
    		return false;
    	}
    	
    	function ipaddress($param,$extra=null,$data=null)
    	{
    		return preg_match('#\b(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\b#', $param, $match);
    	}
    	
    	function validurl($param,$extra=null,$data=null)
    	{
    		$format = 
    		'/^(https?):\/\/'.                                         // protocol
    		'(([a-z0-9$_\.\+!\*\'\(\),;\?&=-]|%[0-9a-f]{2})+'.         // username
    		'(:([a-z0-9$_\.\+!\*\'\(\),;\?&=-]|%[0-9a-f]{2})+)?'.      // password
    		'@)?(?#'.                                                  // auth requires @
    		')((([a-z0-9][a-z0-9-]*[a-z0-9]\.)*'.                      // domain segments AND
    		'[a-z][a-z0-9-]*[a-z0-9]'.                                 // top level domain  OR
    		'|((\d|[1-9]\d|1\d{2}|2[0-4][0-9]|25[0-5])\.){3}'.
    		'(\d|[1-9]\d|1\d{2}|2[0-4][0-9]|25[0-5])'.                 // IP address
    		')(:\d+)?'.                                                // port
    		')(((\/+([a-z0-9$_\.\+!\*\'\(\),;:@&=-]|%[0-9a-f]{2})*)*'. // path
    		'(\?([a-z0-9$_\.\+!\*\'\(\),;:@&=-]|%[0-9a-f]{2})*)'.      // query string
    		'?)?)?'.                                                   // path and query string optional
    		'(#([a-z0-9$_\.\+!\*\'\(\),;:@&=-]|%[0-9a-f]{2})*)?'.      // fragment
    		'$/i';
    		
    		return preg_match($format, $param, $match);
    	}
    	
    	function regex($value,$pattern=null,$data=null)
    	{
    		return preg_match($pattern, $value);
    	}
    <?php
    /**
    * @version 1.4.0
    * @package RSform!Pro 1.4.0
    * @copyright (C) 2007-2011 www.rsjoomla.com
    * @license GPL, http://www.gnu.org/copyleft/gpl.html
    */
    
    // no direct access
    defined( '_JEXEC' ) or die( 'Restricted access' );
    
    class RSFormProValidations
    {
    	function none($value,$extra=null,$data=null)
    	{
    		return true;
    	}
    
    	function alpha($param,$extra=null,$data=null)
    	{
    		if(strpos($param,"\n") !== false) 
    			$param = str_replace(array("\r","\n"),'',$param);
    			
    		for($i=0;$i<strlen($param);$i++)
    			if(strpos($extra,$param[$i]) === false && preg_match('#([^a-zA-Z ])#', $param[$i]))
    				return false;
    				
    		return true;
    	}
    	
    	function numeric($param,$extra=null,$data=null)
    	{
    		if(strpos($param,"\n") !== false) 
    			$param = str_replace(array("\r","\n"),'',$param);
    		
    		for($i=0;$i<strlen($param);$i++)
    			if (strpos($extra,$param[$i]) === false && !is_numeric($param[$i]))
    				return false;
    				
    		return true;
    	}
    	
    	
    		function validBonuscode($param,$extra = null)
    {
         if($param !== 'pdcuyd2013') 
           	 return false;
         	 return true;
    }
    
    	
    	function alphanumeric($param,$extra = null,$data=null)
    	{
    		if(strpos($param,"\n") !== false) 
    			$param = str_replace(array("\r","\n"),'',$param);
    		
    		for($i=0;$i<strlen($param);$i++)
    			if(strpos($extra,$param[$i]) === false && preg_match('#([^a-zA-Z0-9 ])#', $param[$i]))
    				return false;
    				
    		return true;
    	}
    	
    	function alphaaccented($value, $extra=null, $data=null) {
    		if (preg_match('#[^[:alpha:] ]#u', $value)) {
    			return false;
    		}
    		return true;
    	}
    	
    	function alphanumericaccented($value, $extra=null, $data=null) {
    		if (preg_match('#[^[:alpha:]0-9 ]#u', $value)) {
    			return false;
    		}
    		return true;
    	}
    	
    	function email($email,$extra=null,$data=null)
    	{
    		jimport('joomla.mail.helper');
    		
    		$email = trim($email);
    		return JMailHelper::isEmailAddress($email);
    	}
    	
    	function emaildns($email,$extra=null,$data=null)
    	{
    		// Check if it's an email address format
    		if (!RSFormProValidations::email($email,$extra,$data))
    			return false;
    		
    		$email = trim($email);
    		list($user, $domain) = explode('@', $email, 2);
    		
    		// checkdnsrr for PHP < 5.3.0
    		if (!function_exists('checkdnsrr') && function_exists('exec') && is_callable('exec'))
    		{
    			@exec('nslookup -type=MX '.escapeshellcmd($domain), $output);
    			foreach($output as $line)
    				if (preg_match('/^'.preg_quote($domain).'/',$line))
    					return true;
    			
    			return false;
    		}
    		
    		// fallback method...
    		if (!function_exists('checkdnsrr') || !is_callable('checkdnsrr'))
    			return true;
    		
    		return checkdnsrr($domain, substr(PHP_OS, 0, 3) == 'WIN' ? 'A' : 'MX');
    	}
    	
    	function uniquefield($value, $extra=null,$data=null)
    	{
    		$db 	=& JFactory::getDBO();
    		$form   = JRequest::getVar('form');
    		$formId = (int) @$form['formId'];
    		
    		$db->setQuery("SELECT `SubmissionValueId` FROM #__rsform_submission_values WHERE FormId='".$formId."' AND `FieldName`='".$db->getEscaped($data['NAME'])."' AND `FieldValue`='".$db->getEscaped($value)."'");
    		return $db->loadResult() ? false : true;
    	}
    	
    	function uniquefielduser($value, $extra=null,$data=null)
    	{
    		$db 	=& JFactory::getDBO();
    		$form   = JRequest::getVar('form');
    		$formId = (int) @$form['formId'];
    		$user	=& JFactory::getUser();
    		
    		$db->setQuery("SELECT sv.`SubmissionValueId` FROM #__rsform_submission_values sv LEFT JOIN #__rsform_submissions s ON (sv.SubmissionId=s.SubmissionId) WHERE sv.FormId='".$formId."' AND sv.`FieldName`='".$db->getEscaped($data['NAME'])."' AND sv.`FieldValue`='".$db->getEscaped($value)."' AND (".($user->get('guest') ? "s.`UserIp`='".$db->getEscaped($_SERVER['REMOTE_ADDR'])."'" : "s.`UserId`='".(int) $user->get('id')."'").")");
    		return $db->loadResult() ? false : true;
    	}
    	
    	function uszipcode($value)
    	{
    		return preg_match("/^([0-9]{5})(-[0-9]{4})?$/i",$value);
    	}
    	
    	function phonenumber($value)
    	{
    		return preg_match("/\(?\b[0-9]{3}\)?[-. ]?[0-9]{3}[-. ]?[0-9]{4}\b/i", $value);
    	}
    Grazie per il tuo aiuto!

  4. #4
    Non ti riscrivo tutti il codice perchè sarebe troppo lungo, però ti do dei consigli che ti possono aiutare.

    Usa explode per scompattare la data in input, semplifichi i controlli (http://php.net/manual/en/function.explode.php).
    Es. ($pieces è un array):
    codice:
    $pizza  = "piece1 piece2 piece3 piece4 piece5 piece6";
    $pieces = explode(" ", $pizza);
    A questo punto crei una serie di IF annidati.

    1. Controlli se il primo elemento dell'array (il giorno scritto SOLO in NUMERO) è < alla data massima e > della data minima (primo if)

    2. Confronti il secondo elemento con un array che contiene i mesi validi (per 3 mesi ci saranno 6 campi, 3 testuali e 3 numerici in modo da non limitare il formato inserito), se è corretto passi all'ultimo if.

    3. Controlli il terzo elemento con la data da te scelta.

    In questo modo hai controllato se la data inserita corrisponde ad un certo range di date da te scelte, per ogni possibilità di data devi creare una serie di if annidati e di array che vengono richiamati in base alla scelta fatta nella select (puoi usare un semplice onclick su un bottone).

    Adesso devi solo controllare se la data è stata inserita nel formato giusto ed eccotti il tuo controlo.

  5. #5
    Utente di HTML.it L'avatar di d-force
    Registrato dal
    Oct 2001
    Messaggi
    657
    Ciao Bigdada, ti ringrazio ma come ho indicato nel precedente post non so scrivere php e ho bisogno che qualcuno scriva per me questo pezzo di codice per la validazione del campo.

    Il codice che ho indicato io non è altro che un pezzo del file che già effettua la validazione dei vari campi del mio modulo e non deve essere riscritto.

    Devo solo aggiungere la validazione del menu a discesa con le regole che ho indicato...

  6. #6
    La vedo dura se vuoi creare del codice php senza conoscere php.
    Ti conviene seguire le guide su HTML.it e php.net.
    Non capisco il tuo problema, lo script che hai postato convalida i campi in input (più semplice non c'era??) e quello che ti ho scritto fa i controlli (gli if si imparano subito dopo la creazione di variabili e suno uguali per tutti i linguaggi, il resto lo trovi nel web) sulla validità della data per l'offerta, tu devi solo assemblarli.

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.