Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 15
  1. #1
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026

    Definizione dell'array $_POST

    Salve
    Vorrei capire come definire da subito la variabile $_POST['user']
    Perchè quando accedo per la prima volta alla pagina in questo caso sayhello.php
    mi da questo avviso:
    codice:
    Notice: Undefined index: user in C:\Xampp_7\xampp\htdocs\prove\sayhello.php on line 20
    Mentre il codice che ho scritto è questo:
    codice:
    ...
    <body>
    <?php
    $user='';
     ?>
    <form method="POST" action="sayhello.php">
    Your Name:<input type="text" name="user">
    
    
    <input type="submit" value="Say Hello">
    <?php
    print 'Hello, ';
    // Stampa quanto inviato nel parametro di modulo chiamato 'user'
    print $_POST['user'];
    print '!';
    ?>
    </body>
    ...

  2. #2
    Codice PHP:
    $user = ($_POST['user']) ? $_POST['user'] : null
    Social Network in costruzione.. Misto tra Twitter e Facebook.. Twitbook o facetter?

  3. #3
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ciao 0-c00l.
    Ho inserito il tuo codice, ma gli effetti non cambiano, anzi mi da ulteriori avvisi:
    codice:
    Notice: Undefined index: user in C:\Xampp_7\xampp\htdocs\prove\sayhello.php on line 11
    E questo avviso è riferito alla linea di codice che mi hai passato.
    Vorrei solo avvisarti che sto lavorando in localhost.
    In alternativa si potrebbe mettere un controllo per vedere che non viene passato, e quindi dare una risposta di default?
    Grazie.

  4. #4
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    @Ironmax

    E' sbagliata l'impostazione generale dello script.
    Se vuoi mantenere nello stesso script sia la visualizzazione iniziale (in cui c'è un form con la richiesta del nome) sia la parte che riceve i dati dal form e li utilizza, devi usare un if iniziale che distingua le due cose (ad esempio verificando con isset($_POST['nome'] se è stato passato un valore).
    Se non è stato passato il valore (o un valore nullo) stampi la form, altrimenti il messaggio di benvenuto

  5. #5
    Utente di HTML.it L'avatar di Luke70
    Registrato dal
    Jul 1999
    Messaggi
    767
    Originariamente inviato da 0-c00l
    Codice PHP:
    $user = ($_POST['user']) ? $_POST['user'] : null
    E' meglio na verifica con isset(), così non hai notice

    Codice PHP:
    $user = (isset($_POST['user'])) ? $_POST['user'] : null

  6. #6
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Ciao Luke70,
    Si il codice che mi hai passato funziona, solo che continuo ad avere una notice sulla riga di stampa e cioè:
    codice:
    ...
    print $_POST['user'];
    ...
    Quindi se ho capito bene devo mettere un controllo, tipo if, per verificare sè c'è qualcosa dentro oppure no ed in un secondo tempo stampare la condizione che si verifica?
    Altrimenti avrei sempre un notice, iniziale, finche non valorizzo almeno una volta la variabile?
    Grazie.

  7. #7
    Originariamente inviato da Ironmax
    Ciao Luke70,
    Si il codice che mi hai passato funziona, solo che continuo ad avere una notice sulla riga di stampa e cioè:
    codice:
    ...
    print $_POST['user'];
    ...
    Quindi se ho capito bene devo mettere un controllo, tipo if, per verificare sè c'è qualcosa dentro oppure no ed in un secondo tempo stampare la condizione che si verifica?
    Altrimenti avrei sempre un notice, iniziale, finche non valorizzo almeno una volta la variabile?
    Grazie.

    devi poi stampare $user.

    Il codice di Luke70 ti permette di valorizzare una variabile in maniera tale da non avere notice: nel caso in cui la chiave 'user' non sia presente nell'array $_POST, $user viene inizializzata con un valore nullo, in altri punti dello script verificherai se $user === null o $user !== null gestendo secondo la tua logica tale situazione.

  8. #8
    Originariamente inviato da Ironmax

    Quindi se ho capito bene devo mettere un controllo, tipo if, per verificare sè c'è qualcosa dentro oppure no ed in un secondo tempo stampare la condizione che si verifica?
    Altrimenti avrei sempre un notice, iniziale, finche non valorizzo almeno una volta la variabile?
    Grazie.
    Devi verificare se in $_POST esiste la variabile attesa e che questa sia valorizzata. $_POST e' superglobale e come tale e' sempre settato. Meglio ancora se controlli che nell'indice associato sia presente il valore atteso. Per esempio se il dato arriva dal form ci sara' sicuramente presente un submit mentre user potrebbe essere vuoto.

    Comunque per seguire la tua traccia:

    codice:
    ...
    <body>
    
    <?php
    
    if(empty($_POST['user'])) {
     ?>
          <form method="POST" action="sayhello.php">
          Your Name:<input type="text" name="user">
          
    
          <input type="submit" value="Say Hello">
    <?php
    } else {
              print 'Hello, ';
              // Stampa quanto inviato nel parametro di modulo chiamato 'user'
              print $_POST['user'];
              print '!';
            }
    ?>
    
    </body>
    ...

    @edit ..... hello! Ratatuia...

    Il silenzio è spesso la cosa migliore. Pensa ... è gratis.

  9. #9
    Originariamente inviato da piero.mac
    @edit ..... hello! Ratatuia...

    ma zalve!

  10. #10
    Utente di HTML.it L'avatar di Ironmax
    Registrato dal
    Dec 2008
    Messaggi
    1,026
    Grazie dell'aiuto a tutti.
    Alla fine ho adottato la soluzione di piero.mac solo con l'aggiunta del form anche nel else.

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.