Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012

    Espressioni regolari per campi form



    ci stò diventando di gomma!!!!!

    ammetto anche che sono un pò ostiche per me le ER

    questa porzione di codice che fa parte di una funzione non funziona
    Codice PHP:
      if ($special_chars !="" && $error == 0)
        {
        if (
    eregi("[:;,/\\\?\"\'\^]",trim($_POST[$campo])))
          {
          
    $error=1;
          
    $message="ERRORE... non sono concessi i caratteri / \\ ; \" e , ";
          
    $result=array($error,$message);
          return 
    $result;
          }  
        } 
    e , ovviamente, nemmeno questa ...

    Codice PHP:
      if ($email !="" && $error == 0)
        {
        if (!
    eregi("^([a-z0-9_\.-])+@(([a-z0-9_-])+\\.)+[a-z]{2,6}$",trim($_POST[$campo])))
          {
          
    $error=1;    
          
    $message="ERRORE... L' indirizzo e-mail  deve essere un indirizzo valido";
          
    $result=array($error,$message);
          return 
    $result;
          }
        } 
    qualcuno può aiutarmi ??
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  2. #2
    Per la mail ho risolto in questo modo:

    Codice PHP:
    if (!eregi("^[a-zA-Z0-9\-\._]+@[a-zA-Z0-9_\-]+(\.[a-zA-Z0-9\-\._]{2,4})+$"$mail)) {... 
    Vengono accettate in questo modo solo caratteri alfanumerici sia nel nome dell'account che in quello del dominio e vengono accettati anche i sottodomini. L'estensione deve essere compresa tra le 2 e le 4 lettere.

    Riguardo alla prima porzione di codice invece non so come devi analizzare..


  3. #3
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    ciao e innanzitutto grazie per la risposta... andando avanti con tutte le prove mi sono reso conto che il problema è ben diverso.... mi spiego:

    ho 2 file:

    register.php ( il form )
    e check.php (il controllore di validità)

    c'è qualcosa di piu che la semplice espressione regolare!!!

    ecco i codici:

    register.php
    Codice PHP:
    <?
    session_start
    ();
    include(
    "root.php");
    include (
    $walk.'service.func.php');
    include (
    $walk.'template/layout_short.php');
    include (
    $walk.'gears/data.php');
    include (
    $walk.'gears/login.php');
    head();
    ?>





    <form method="POST" action="check.php" id="corpo,5,1">
    <table border="0" style="border-collapse: collapse" width="100%" id="table1">
        <tr>
            <td align="center" colspan="3" id="intestazione,5,1"><h2>Form di Registrazione</h2></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
            <td></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
            <td></td>
        </tr>
        <tr>
            <td align="center" colspan="3"><? if (isset($message)) echo $message?></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
            <td></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
            <td></td>
        </tr>
        <tr>
            <td width="116" align="right">nome :</td>
            <td><input type="text" name="nome" size="20" class="input" maxlength="20" <? if (isset($_POST['nome'])) echo " value=\"{$_POST['nome']}\""?>><font color="#FF0000">*</font></td>
        </tr>
        <tr>
            <td width="116" align="right">cognome :</td>
            <td><input type="text" name="cognome" size="30" class="input" maxlength="30" <? if (isset($_POST['cognome'])) echo " value=\"{$_POST['cognome']}\""?>></td>
        </tr>
        <tr>
            <td width="116" align="right">provenienza :</td>
            <td><input type="text" name="provenienza" size="40" class="input" maxlength="40" <? if (isset($_POST['provenienza'])) echo " value=\"{$_POST['provenienza']}\""?>></td>
        </tr>
        <tr>
            <td width="116" align="right">e-mail :</td>
            <td><input type="text" name="email" size="30" class="input" maxlength="30" <? if (isset($_POST['email'])) echo " value=\"{$_POST['email']}\""?>><font color="#FF0000">*</font></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
            <td></td>
        </tr>
        <tr>
            <td width="116" align="right">username :</td> 
            <td><input type="text" name="username" size="12" class="input" maxlength="12" <? if (isset($_POST['username'])) echo " value=\"{$_POST['username']}\""?>><font color="#FF0000">*</font></td>
        </tr>
        <tr>
            <td width="116" align="right">password :</td>
            <td><input type="text" name="password" size="12" class="input" maxlength="12" ><font color="#FF0000">*</font></td>
        </tr>
        <tr>
            <td width="116" align="right">ridigita password :</td>
            <td><input type="text" name="ripassword" size="12" class="input" maxlength="12"><font color="#FF0000">*</font></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
            <td></td>
        </tr>
        <tr>
            <td width="116" align="right" valign="top">
            <input type="checkbox" name="privacy" value="si" class="input"></td>
            <td valign="top"><textarea rows="5" name="privacy" cols="54" class="input"></textarea></td>
        </tr>
        <tr>
            <td align="center" colspan="2"></td>
        </tr>
        <tr>
            <td width="116" align="right"></td>
        <td align="center" bgcolor="#FFFFFF">
        <u><font color="#FF0000">TUTTI I CAMPI CONTRASSEGNATI DA UN * SONO OBBLIGATORI</font></u>
        </td>
            <td width="116" align="right"></td>
        </tr>
        <tr>
            <td align="center" colspan="3"></td>
        </tr>
        <tr>
            <td align="center" colspan="3"><input type="submit" value="registrami" name="invia" class="butt"></td>
        </tr>
        <tr>
            <td align="center" colspan="3"></td>
        </tr>
    </table>
    </form>
    <?

    foot
    ();
    edit ($_SESSION);
    ?>

    e check.php
    Codice PHP:
    <?
    include("root.php");
    include(
    $walk."mysql.func.php");
                       
    $result=check_form('nome',$empty='y',$special_chars='y');

    if (
    $result[0]==0$result=check_form('email',$empty='y',$email='y');

    if (
    $result[0]==0$result=check_form('username',$empty='y',$special_chars='y',$min_length='6');

    if (
    $result[0]==0$result=check_form('password',$empty='y',$special_chars='y',$min_length='6');

    if (
    $result[0]==0$result=check_form('ripassword',$empty='y',$special_chars='y',$min_length='6');



    if (
    $result[0]==0)
      {
      
    $user_list=colonna('utenti','username');
      if (
    in_array($_POST['username']))
        {
        
    $error=1;
        
    $message="<font color=\"#cc0000\">ERRORE... il nome utente è stato già scelto. Prego sceglierne un altro differente.</font>";
        }
      }

    if (
    $result[0]==&& isset($_POST['privacy']) && empty($_POST['privacy']))
      {
      
    $error=1;
      
    $message="ERRORE... ACCETTARE I TERMINI DI REGISTRAZIONE";

      }

    if (
    $result[0]==0)
      {
      
    // vai alla registrazione effettiva nel db
      
    }
    else
      {
      
    $message=$result[1];
      include (
    'register.php');
      
    edit ($_POST);
      }







    function 
    check_form($campo,$empty='',$min_length='',$max_length='',$email='',$special_chars='')
      {
      global 
    $_POST;
      global 
    $error;

      
    $error=0;
      
    $message="";
      
      
      if (
    $empty != "")
        {
        if (empty(
    $_POST[$campo]) && $_POST[$campo] == "")
          {
          
    $error=1;
          
    $message="il campo $campo e' obbligatorio";
          
    $result=array($error,$message);
          return 
    $result;  
          }
        }
      
      
      if (
    $special_chars != '')
        {
        if (
    eregi("[:;,/\\\?\"\'\^]",trim($_POST[$campo])))
          {
          
    $error=1;
          
    $message="ERRORE... non sono concessi i caratteri / \\ ; \" e , ";
          
    $result=array($error,$message);
          return 
    $result;
          }  
        }
      
      if (
    $min_length != '')
        {
        if (
    strlen(trim($_POST[$campo])) < $min_length)
          {
          
    $error=1;
          
    $message "il campo $campo deve avere almeno $min_length caratteri";
          
    $result=array($error,$message);
          return 
    $result;
          }
        }
      
      if (
    $max_length != '')
        {
        if (
    strlen(trim($_POST[$campo])) > $max_length)
          {
          
    $error=1;
          
    $message "il campo $campo non deve avere piu' di  $max_length caratteri";
          
    $result=array($error,$message);
          return 
    $result;
          }
        }

      if (
    $email != '')
        {
        if(!
    preg_match'/^[\w\.\-]+@\w+[\w\.\-]*?\.\w{1,4}$/',trim($_POST[$campo])))
          {
          
    $error=1;    
          
    $message="ERRORE... L' indirizzo e-mail  deve essere un indirizzo valido";
          
    $result=array($error,$message);
          return 
    $result;
          }
        }

      
      
    $result=array($error,$message);
      return 
    $result;  
      }  

    ?>

    provare per credere!! la funzione non lavora correttamente, mi salta i controlli e non capisco da dove è dovuto.. credo nella dichiarazione delle variabili per la funzione ma nn ne sono sicuro...
    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

  4. #4
    Sarà un metodo un pò artigianale, ma io proverei con qualche "echo" per vedere come vengono modificati i valori e se il listato risponde correttamente in base ad un input controllato. Ovviamente sarà sufficiente prendere di mira una funzione alla volta per vedere se tutto funziona.

    Non è un grandissimo aiuto, però potrebbe servirti

  5. #5
    Utente di HTML.it L'avatar di dottwatson
    Registrato dal
    Feb 2007
    Messaggi
    3,012
    grazie nophiq ho rosolto

    semplicemente perchè

    la funzione accetta questi parametri

    function check_form($campo,$empty='',$min_length='',$max_le ngth='',$email='',$special_chars='')


    e io facevo le chiamatye alla funzione con questa forma

    if ($result[0]==0) $result=check_form('username',$empty='y',$special_ chars='y',$min_length='6');


    in pratica , in questo esempio, anzichè fare l'assegnazione corretta alle variabili, assegnava per esempio $special_chars a $min_length ) in quanto seguiva la linearità delle variabili dichiarate ...

    ora funziona tutto alla perfezione

    grazie comunque



    Non sempre essere l'ultimo è un male... almeno non devi guardarti le spalle

    il mio profilo su PHPClasses e il mio blog laboweb

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.