Pagina 2 di 2 primaprima 1 2
Visualizzazione dei risultati da 11 a 16 su 16
  1. #11
    Utente di HTML.it
    Registrato dal
    Nov 2008
    Messaggi
    22
    Perfetto. riepilogando, per andare sul tranquillo la norma diventa:
    - [lato client: controlli prima del submit]
    - lato server: controllo della pagina chiamante
    - " validazione dei campi (stessa routine js eventualmente utilizzata punto 1)
    - " controllo campi a fine DB (e' sufficiente mysql_real_escape_string?)

    altri suggerimenti?
    Grazie, ciao
    Carlo

  2. #12
    ho fatto una prova semplice di un ipotetico form che manda tramite POST nome e cognome ad una pagina php. qui vengono eseguiti i controlli: se il campo cognome è vuoto, tramite redirect si viene rispediti alla pagina col form.
    prima di tutto questo la variabile $nome viene resa una variabile di sessione, in modo che in teoria dovrebbe mantenersi anche dopo il redirect.

    ovviamente non poteva che non funzionare

    riporto il semplice codice qui di seguito, sperando che mi possiate dare una mano.

    FORM.PHP :

    Codice PHP:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 
    <html xmlns="http://www.w3.org/1999/xhtml"> 
    <head> 
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 
    <title>test</title> 
    </head>  
    <body>  
    <?php     
       session_start
    ();     
       
    $_SESSION['nome']=$nome
    ?>  
    <form name="form1" method="post" action="controlli.php">     
    <input type="text" name="nome" id="nome" value="<?php echo $nome ?>">     
    <input type="text" name="cognome" id="cognome">     
    <input type="submit" name="button" id="button" value="Invia"> 
    </form>  
    </body> 
    </html>
    qui all'inizio la variabile $nome sarà nulla


    CONTROLLO.PHP:

    Codice PHP:
    <?php     
       $nome
    =$_POST['nome'];     
       
    $cognome=$_POST['cognome'];          
       
    session_start();     
       
    $_SESSION['nome']=$nome;     
       if (empty(
    $cognome)){         
            
    header("location:form.php");     
       }      
    ?>
    dopo il redirect, la variabile di sessione $nome, dovrebbe avere il valore che è stato inserito nel form

    grazie

  3. #13
    nessun consiglio?

    grazie

  4. #14
    quando tu esegui "header("location:form.php"); " ricarichi la pagine "form.php" reinterpretando il suo contenuto.

    Se nel file "form.php" inserisci
    codice:
    <?php     
       session_start();     
       $_SESSION['nome']=$nome;
    ?>
    in pratica vai a riresettare la variabile impsotata prima del redirect.
    se vuoi ricavare il nome dal per stamparlo, devi leggere dalla $_SESSION non scriverci.


    Il seguente codice, nel ritorno verifica il codice di ritorno.
    Se non corretto annulla le variabili, altrimenti le riprende.

    Pagina "form.php"
    Codice PHP:
    <?php
    session_start
    ();
    if (
    $_GET['Ret']!=$_SESSION['cod_return']){ //Verificare anche che se 'Ret' non è settata annulli il contenuto delle variabili.
     
    $_SESSION['nome']=""$_SESSION['cognome']="";$_SESSION['cod_return']="";
    }

    //Ricava Variabili da $_SESSION
      
    $nome=$_SESSION['nome'];
      
    $cognome=$_SESSION['cognome'];


    ?>

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html xmlns="http://www.w3.org/1999/xhtml">
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>test</title>
    </head>  
    <body>  

    <form name="form1" method="post" action="controllo.php">     
    <input type="text" name="nome" id="nome" value="<?php echo $nome ?>">
         
    <input type="text" name="cognome" id="cognome">     
    <input type="submit" name="button" id="button" value="Invia">
    </form>  
    </body>
    </html>
    pagina "controllo.php"
    Codice PHP:
    <?php     
       session_start
    (); 
       
    $nome=$_POST['nome'];     
       
    $cognome=$_POST['cognome'];          
       
    $_SESSION['nome']=$nome;     
       if (empty(
    $cognome)){         
           
    /* INIZIO: Codice per gestire ritorno */
           
    $CodeRET="sdfdgfksgkgsk";
           
    $_SESSION['cod_return']=$CodeRET;
           
    /* FINE: Codice per gestire ritorno */
            
    header("location:form.php?Ret=$CodeRET");     
       }     
    ?>

    Nota:
    E' inoltre consigliabile mettere il "session_start(); " all'inizio del file in modo che non dia possibili problemi di header già inviati.

  5. #15
    grazie mille dragon, in effetti ieri sera ero riuscito a risolvere il problema...in pratica invertivo i 2 estremi dell'uguale, pensando che fosse la stessa cosa!

    in pratica non pensavo a questo fatto:
    "3+3=6 è come dire 6=3+3", invece "$_SESSION['nome']=$nome non è uguale a $nome = $_SESSION['nome']"!!

    ho dunque fatto un esempio semplice semplice:

    form.php:

    Codice PHP:
    <?php     
       session_start
    ();     
       
    $nome $_SESSION['nome']; 
    ?>  
    <form action="controlli.php" method="post">   
      <input name="nome" type="text" id="nome" value="<?php echo $nome?>">   
      <input type="submit" name="button" id="button" value="Invia"> 
    </form>

    controlli.php:

    Codice PHP:
    <?php     
      
    // recupero col post la variabile del modulo     
      
    $nome $_POST['nome'];     
      
    // apro la sessione e rendo di sessione la variabile acquisita     
      
    session_start();     
      
    $_SESSION['nome']=$nome;     
      
    header ("location:form.php"); 
    ?>
    in questo modo tutto funziona, si viene rediretti alla pagina form.php, e nel campo di input viene stampato il nome scritto precedentemente.

    pero' è subentrato un altro problema su server (in locale non succede):
    se dopo un primo redirect cambio il contenuto del campo di input, con il secondo redirect, nella casella di testo stampa ancora il primo nome inserito (in pratica la variabile di sessione non viene aggiornata, devo per forza riavviare il browser).
    come posso fare per ovviare il problema senza chiudere la sessione?

    vorrei evitare di chiudere la sessione perchè poi nel form vero e proprio che dovro' costruire ci saranno una decina di campi, e non vorrei che in caso di un secondo redirect (dovuto a un secondo errore nella compilazione del form) i campi del form precedentemente inseriti vengano cancellati...

    grazie mille!

  6. #16

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 © 2026 vBulletin Solutions, Inc. All rights reserved.