• Super User

    Non conosco il plugin che hai indicato, ma quello che uso io, Fast Secure Contact Form, integra anche la funzione che cerchi. Magari puoi provarlo. E' aggiornato e non mi ha mai dato problemi. Ciao


  • User Attivo

    Veramente? Allora lo istallo subito, grazie tante, ciao.


  • Super User

    Se ti serve aiuto chiedi pure. Ciao


  • User Attivo

    Istallato ma non troppo l'opzione "Lunghezza minima campo di testo"
    Solo quella max trovo.
    😞


  • Super User

    Senza vedere il codice del form non è facile darti una dritta 😞

    Non so se sai scrivere un po' in php, tuttavia in linea teorica dovresti fare una cosa del genere:
    prendere la variabile in cui c'è il tuo testo e controllare con strlen($variabile) che sia della lunghezza giusta, impostare una variabile d'errore a true se non lo è, e prima di far partire il form controllare che quella variabile sia true/false. Puoi anche lanciare un alert subito per avvisare l'utente.

    Ma così a parole non è facile...
    perché non usi pastebin.com come ti suggerisce Katherine, così vediamo il codice del form? 😉


  • User Attivo

    Si, teoricamente ho capito il concetto, ma non so applicarlo nel php.
    Poi, ripeto, il plugin suggerito non mi sembra avere questa funzione in default.
    Credo che un programmatore php ci possa impegnare due o tre minuti la massimo ad inserire al punto giusto quel controllo.
    Più tardi provo allora ad inserire quel codice, ma lo puoi trovare nel plugin mm forms community di cui ho dato il link.
    Grazie


  • Super User

    @marta_de_angelis said:

    Istallato ma non troppo l'opzione "Lunghezza minima campo di testo"
    Solo quella max trovo.

    Hai ragione sorry...avevo guardato frettolosamente. Ho fatto una ricerca ma sembra che i vari plugin esistenti permettano di settare solo la lunghezza massima. Però io proverei lo stesso a installare cforms o contact form 7 che sono i più usati e completi in assoluto per creare form e vedere se hanno anche quella funzione. Ciao

    EDIT: Tra l'altro cforms II ha un'ottimo forum di supporto in italiano e magari trovi qualcosa
    http://gidibao.net/forum/forumdisplay.php?19-cformsII


  • User Attivo

    Ora provo con cforms, l'altro lo conosco mi sembra che non ha quella funzione. Ne ho già provati almeno 7-8.
    Strana questa cosa, però.

    Ma dato che a me serve per pubblicare delle informazioni non esiste un altro plugin che può avere questa capacità?


  • Super User

    a me serve per pubblicare delle informazioni

    Forse se spieghi meglio a che ti serve possiamo aiutarti a trovare un altro tipo di plugin.

    Katherine


  • User Attivo

    Anche con cforms non trovo la funzione.

    L'ho detto cosa devo fare: un visitatore mi deve mandare i suoi dati ed una descrizione della sua attività che deve avere un minimo di lunghezza.


  • Super User

  • User Attivo

    Anche questo ultimo plugin ha solo la funzione maxlength.
    Trovo assurdo tutto questo.
    Eppure trovo milioni di form che hanno la funzionalità lunghezza minima.
    Provo a rintracciare uno di questi forum e vedere che software hanno usato.
    (Anche diggita.it per esempio ha questa funzione).


  • Super User

    Se trovi qualcosa di fatto con Wordpress e guardi nel sorgente pagina in molti casi è possibile risalire al plugin.


  • Super User

    Marta, altrimenti tagliamo la testa al toro: guardiamo il codice del tuo form ed aggiungiamo il controllo che ti manca. 😉


  • User Attivo

    @valijolie said:

    marta, altrimenti tagliamo la testa al toro: guardiamo il codice del tuo form ed aggiungiamo il controllo che ti manca 😉

    Veramente grazie a tutti per la disponibilità e gentilezza.
    😘


  • User Attivo

    Se per favore date una occhiata a questo plugin:

    wordpress.org/extend/plugins/mm-forms-community/

    Per inserire quel controllo sulla lunghezza del testo minimo.
    Oltre al fatto che ve ne sarei molto grata, è sicuramente un qualcosa utile anche per altri.
    🙂


  • User Attivo

    Dopo aver notato che nel 100% dei plugin da me testati manca il minlength per il testo di un campo (manca anche nei form html) vi invio qui la parte di validazione (sperando sia questa quella che serve) del file mmforms.php del plugin mmforms community.
    In modo che inserite quel controllo per la textarea o un altro campo, vedete voi.
    Grazie, ciao

    [PHP]function validate($contact_form) {
    $fes = $this->form_elements($contact_form['form'], false);
    $valid = true;
    $reason = array();

        foreach ($fes as $fe) {
            $type = $fe['type'];
            $name = $fe['name'];
            $values = $fe['values'];
            
            // Before validation corrections
            if (preg_match('/^(?:text|email)
    
    • ?$/', $type))
      $_POST[$name] = trim(strtr($_POST[$name], "\n", " "));

            if (preg_match('/^(?:select|checkbox|radio)
      
    • ?$/', $type)) {
      if (is_array($_POST[$name])) {
      foreach ($_POST[$name] as $key => $value) {
      if (! in_array($value, $values)) // Not in given choices.
      unset($_POST[$name][$key]);
      }
      } else {
      if (! in_array($_POST[$name], $values)) // Not in given choices.
      $_POST[$name] = '';
      }
      }

            if ('acceptance' == $type)
                $_POST[$name] = $_POST[$name] ? 1 : 0;
            
            // Required item (*)
            if (preg_match('/^(?:text|textarea|checkbox)
      
    • $/', $type)) {
      if (empty($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_required');
      }
      }

            if ('select*' == $type) {
                if (empty($_POST[$name]) ||
                        ! is_array($_POST[$name]) && '---' == $_POST[$name] ||
                        is_array($_POST[$name]) && 1 == count($_POST[$name]) && '---' == $_POST[$name][0]) {
                    $valid = false;
                    $reason[$name] = $this->message('invalid_required');
                }
            }
      
            if (preg_match('/^email
      
    • ?$/', $type)) {
      if ('*' == substr($type, -1) && empty($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_required');
      } elseif (! empty($_POST[$name]) && ! is_email($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_email');
      }
      }

            if (preg_match('/^captchar$/', $type)) {
                $captchac = '_mmf_captcha_challenge_' . $name;
                if (! $this->check_captcha($_POST[$captchac], $_POST[$name])) {
                    $valid = false;
                    $reason[$name] = $this->message('captcha_not_match');
                }
                $this->remove_captcha($_POST[$captchac]);
            }
        }
            
        return compact('valid', 'reason');
      

      }[/PHP]


  • User Attivo

    Ciao marta_de_angelis,
    puoi provare ad utilizzare il codice qui sotto:
    [php]
    function validate($contact_form) {
    $fes = $this->form_elements($contact_form['form'], false);
    $valid = true;
    $reason = array();

        foreach ($fes as $fe) {
            $type = $fe['type'];
            $name = $fe['name'];
            $values = $fe['values'];
            
            // Before validation corrections
            if (preg_match('/^(?:text|email)
    
    • ?$/', $type))
      $_POST[$name] = trim(strtr($_POST[$name], "\n", " "));

            if (preg_match('/^(?:select|checkbox|radio)
      
    • ?$/', $type)) {
      if (is_array($_POST[$name])) {
      foreach ($_POST[$name] as $key => $value) {
      if (! in_array($value, $values)) // Not in given choices.
      unset($_POST[$name][$key]);
      }
      } else {
      if (! in_array($_POST[$name], $values)) // Not in given choices.
      $_POST[$name] = '';
      }
      }

            if ('acceptance' == $type)
                $_POST[$name] = $_POST[$name] ? 1 : 0;
            
            // Required item (*)
            if (preg_match('/^(?:text|textarea|checkbox)
      
    • $/', $type)) {
      if (empty($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_required');
      }
      else{
      if ($_POST[$name]=="nome_Campo_da_Validare")
      {
      $lunghezza_minima=500; //500caratteri inclusi spazi e punteggiatura
      if(strlen($_POST[$name])<$lunghezza_minima)
      { $valid = false;
      $reason[$name] = "Il testo inserito è troppo corto";
      }
      }
      }

            if ('select*' == $type) {
                if (empty($_POST[$name]) ||
                        ! is_array($_POST[$name]) && '---' == $_POST[$name] ||
                        is_array($_POST[$name]) && 1 == count($_POST[$name]) && '---' == $_POST[$name][0]) {
                    $valid = false;
                    $reason[$name] = $this->message('invalid_required');
                }
            }
      
            if (preg_match('/^email
      
    • ?$/', $type)) {
      if ('*' == substr($type, -1) && empty($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_required');
      } elseif (! empty($_POST[$name]) && ! is_email($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_email');
      }
      }

            if (preg_match('/^captchar$/', $type)) {
                $captchac = '_mmf_captcha_challenge_' . $name;
                if (! $this->check_captcha($_POST[$captchac], $_POST[$name])) {
                    $valid = false;
                    $reason[$name] = $this->message('captcha_not_match');
                }
                $this->remove_captcha($_POST[$captchac]);
            }
        }
            
        return compact('valid', 'reason');
      

      }
      }
      [/php]Non ho testato il codice ma mi sembra possa funzionare. Puoi personalizzare [php]$lunghezza_minima[/php] a seconda della lunghezza necessaria.
      Questa riga invece [php]
      if ($_POST[$name]=="nome_Campo_da_Validare")
      [/php] va modificata sostituendo nome_Campo_da_Validare con il valore "name" dell'input type='text' o della textarea
      contenente la descrizione.
      Naturalmente questa modifica andrà replicata ogni volta che aggiornerai il plugin. 😉
      Fammi sapere se funziona tutto. 😉


  • User Attivo

    Per ora sto ricevendo

    Parse error: syntax error, unexpected T_VAR

    qui mi sembra:

    var $__form_id = 0;
    function set_formid($form_id){

            $this->__form_id =  $form_id;
            
    }
    

    Come mai?

    Grazie
    🙂


  • User Attivo

    Mi è sfuggita una parentesi graffa nel copia/incolla
    il codice è quindi:
    [php]
    function validate2($contact_form)
    {
    $fes = $this->form_elements($contact_form['form'], false);
    $valid = true;
    $reason = array();

        foreach ($fes as $fe) {
            $type = $fe['type'];
            $name = $fe['name'];
            $values = $fe['values'];
    
            // Before validation corrections
            if (preg_match('/^(?:text|email)
    
    • ?$/', $type))
      $_POST[$name] = trim(strtr($_POST[$name], "\n", " "));

            if (preg_match('/^(?:select|checkbox|radio)
      
    • ?$/', $type)) {
      if (is_array($_POST[$name])) {
      foreach ($_POST[$name] as $key => $value) {
      if (! in_array($value, $values)) // Not in given choices.
      unset($_POST[$name][$key]);
      }
      } else {
      if (! in_array($_POST[$name], $values)) // Not in given choices.
      $_POST[$name] = '';
      }
      }

            if ('acceptance' == $type)
            $_POST[$name] = $_POST[$name] ? 1 : 0;
      
            // Required item (*)
            if (preg_match('/^(?:text|textarea|checkbox)
      
    • $/', $type)) {
      if (empty($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_required');
      }
      else{
      if ($_POST[$name]=="nome_Campo_da_Validare")
      {
      $lunghezza_minima=500; //500caratteri inclusi spazi e punteggiatura
      if(strlen($_POST[$name])<$lunghezza_minima)
      { $valid = false;
      $reason[$name] = "Il testo inserito è troppo corto";
      }
      }
      }

                if ('select*' == $type) {
                    if (empty($_POST[$name]) ||
                    ! is_array($_POST[$name]) && '---' == $_POST[$name] ||
                    is_array($_POST[$name]) && 1 == count($_POST[$name]) && '---' == $_POST[$name][0]) {
                        $valid = false;
                        $reason[$name] = $this->message('invalid_required');
                    }
                }
      
                if (preg_match('/^email
      
    • ?$/', $type)) {
      if ('*' == substr($type, -1) && empty($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_required');
      } elseif (! empty($_POST[$name]) && ! is_email($_POST[$name])) {
      $valid = false;
      $reason[$name] = $this->message('invalid_email');
      }
      }

                if (preg_match('/^captchar$/', $type)) {
                    $captchac = '_mmf_captcha_challenge_' . $name;
                    if (! $this->check_captcha($_POST[$captchac], $_POST[$name])) {
                        $valid = false;
                        $reason[$name] = $this->message('captcha_not_match');
                    }
                    $this->remove_captcha($_POST[$captchac]);
                }
            }
      
            return compact('valid', 'reason');
        }
      

      }
      [/php]
      ho corretto anche il post precedente 😉