[PHP] $_REQUEST e $_POST

Discussione in 'PHP' iniziata da Francesco Iacomino, 14 Settembre 2018.

  1. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Buongiorno a tutti, stavo facendo un pò di pratica con il php ed ho avuto un problema con il seguente esercizio:

    PHP:
    <html>
    <head></head>
    <body>
    <form action="Esercizio.php?step=1" method="POST">
      <label>Inserisci le tue passioni</label><br>
      <?php
        
    for($i=0$i<10$i++){
        echo  
    "<input type='text' name='giochi{$i}' placeholder='Inserisci i tuoi giochi'";
            if(isset(
    $_POST['step'])){
              
    $giochi=$_POST["giochi{$i}"];
              echo 
    "value='$giochi'";
               }
              echo 
    "><br>";
        }
       
    ?>

      <input type="submit" value="Invia" name="invia"><input type="reset">
    </form>
    </body>
    <html>

    In pratica, nella form, ho inserito in action ho inserito la query string seguito da step=1, in modo da caricare sulla stessa pagina il continuo dell'esercizio.
    Però, nonostante il method sia il POST, se uso $_POST la condizione if viene saltata, mentre se uso $_REQUEST va tutto a buon fine.
    Come mai? Grazie

    Inviato dal mio SM-G935F utilizzando Tapatalk
     
    Ultima modifica di un moderatore: 14 Settembre 2018
  2. Max 1

    Max 1 Super Moderatore Membro dello Staff SUPER MOD MOD

    Registrato:
    29 Febbraio 2012
    Messaggi:
    3.204
    Mi Piace Ricevuti:
    246
    Punteggio:
    63
    Sesso:
    Maschio
    @francesco lacomino
    quando posti codice PHP usa il tag [ PHP]
     
  3. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Ok, mi dispiace per l'errore...

    Inviato dal mio SM-G935F utilizzando Tapatalk
     
  4. Rikk73

    Rikk73 Utente Attivo

    Registrato:
    7 Aprile 2015
    Messaggi:
    118
    Mi Piace Ricevuti:
    5
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    .NET Software Developer
    Località:
    Arezzo
    La variabile 'step' non la passi POST, ma GET in querystring della url, quindi vi correggere il codice in qualcosa del tipo:

    PHP:
    //...
      //...
        //...
            
    if(isset($_GET['step']) && $_GET['step'] == 1){
              
    $giochi=$_POST["giochi{$i}"];
              echo 
    "value='$giochi'";
               }
        
    //...
      //...
    //...
    Nella if la seconda parte del controllo ( && $_GET['step'] == 1 ) è solo una ulteriore precauzione, o magari può tornarti utile in seguito per azioni diverse
     
  5. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Grazie del suggerimento... In internet leggevo che era possibile usare il metodo post se in input gli attributi type erano di tipo "hidden". Tu sapresti dirmi come funziona? Geazie

    Inviato dal mio SM-G935F utilizzando Tapatalk
     
  6. marino51

    marino51 Utente Attivo

    Registrato:
    28 Febbraio 2013
    Messaggi:
    2.164
    Mi Piace Ricevuti:
    94
    Punteggio:
    48
    Occupazione:
    free lance
    Località:
    Lombardia
    di seguito, una soluzione più semplice senza la gestione del contatore,

    il contatore andrebbe aggiornato con l'inserimento di ogni "gioco"
    ma poi andrebbe gestito anche in caso di cancellazione di un "input" già inserito
    insomma qualcosa da gestire con javascript

    ho inserito anche il codice per visualizzare il contenuto di array, puoi vedere subito il risultato di GET, POST e REQUEST facendo delle prove (se ti interessa)

    trovi anche lo "step" hidden (anche se non usato)
    PHP:
    <?php
    require_once 'myUtils/show_vars.php';
    echo 
    "<h3>GET</h3>".show_var($_GET)."<br /><br />";
    echo 
    "<h3>POST</h3>".show_var($_POST)."<br /><br />";
    echo 
    "<h3>REQUEST</h3>".show_var($_REQUEST)."<br /><br />";
    ?>
    <html>
    <head></head>
    <body>
    <form action="_test.php?step=10" method="POST">
      <label>Inserisci le tue passioni</label><br />
      <?php
        $step 
    = ( isset($_POST['step']) ? $_POST['step'] : ); 

        for(
    $i=0$i<10$i++)
        {
          
    $giochi = ( isset($_POST['giochi'][$i]) ? $_POST['giochi'][$i] : "" );

          echo 
    "<input type='text' name='giochi[$i]' placeholder='Inserisci i tuoi giochi' value='".$giochi."' />";
          echo 
    "<br /><br />";
        }
      
    ?>
      <input type="hidden" name="step" value="0" />
      <input type="submit" value="Invia" name="invia"><input type="reset" />
    </form>
    </body>
    <html>

    qui lo script da includere
    https://forum.mrwebmaster.it/threads/show_var-e-log_var.50370/
     
  7. Rikk73

    Rikk73 Utente Attivo

    Registrato:
    7 Aprile 2015
    Messaggi:
    118
    Mi Piace Ricevuti:
    5
    Punteggio:
    18
    Sesso:
    Maschio
    Occupazione:
    .NET Software Developer
    Località:
    Arezzo
    i campi input di tipo hidden sono visti esattamente come gli altri, nessuna differenza per php (o qualsiasi altro linguaggio server side), l'unica differenza è che nel rendering dell'html non vengono visualizzati
     
  8. Francesco Iacomino

    Francesco Iacomino Nuovo Utente

    Registrato:
    6 Marzo 2018
    Messaggi:
    11
    Mi Piace Ricevuti:
    0
    Punteggio:
    1
    Sesso:
    Maschio
    Scusa il ritardo... Lo devo studiare bene il tuo suggerimento. Essendo poco esperto faccio fatica a capirlo subito. Grazie mille

    Inviato dal mio SM-G935F utilizzando Tapatalk
     
Sto caricando...

Condividi questa Pagina