Visualizzazione risultati 1 fino 6 di 6

Discussione: GET sì POST no

  1. #1
    Guest

    Predefinito GET sì POST no

    Ciao a tutti,

    ho un problema con l'invio dei dati di un form. La situazione è questa: in una pagina ho un form fatto così:

    Codice HTML:
    <form action="script_view.php" method="post" encType="text/plain">
    
    <input name="testo" type="text" size="50" maxlength="255">
    <br>
    <input name="autore" type="text" size="50" maxlength="255">
    <br>
    <input name="emailautore" type="text" size="50" maxlength="255">
    <br>
    <input name="inseritore" type="text" size="50" maxlength="255">
    <br>
    <input name="emailinseritore" type="text" size="50" maxlength="255">
    <br>
    <input type="submit" value="Invia">&nbsp;<input type="reset" value="Reset">
    </form>
    mentre script_view.php contiene il seguente codice:

    Codice PHP:
    <?php

    // Salva i dati inseriti nel database

    if(isset($_POST))
    {echo
    "Dati inviati <br>";}
    else
    {echo
    "Dati NON inviati <br>";}

    $ip=$REMOTE_ADDR;
    $testo=$_POST['testo'];
    $autore=$_POST['autore'];
    $emailautore=$_POST['emailautore'];
    $inseritore=$_POST['inseritore'];
    $emailinseritore=$_POST['emailinseritore'];
    $now=date("D d-M-Y H:i:s", time());

    echo
    "Ip: $ip <br>";
    echo
    "Testo: $testo <br>";
    echo
    "Autore: $autore <br>";
    echo
    "E-mail autore: $emailautore <br>";
    echo
    "Inseritore: $inseritore <br>";
    echo
    "E-mail inseritore: $emailinseritore <br>";
    echo
    "Data inserimento: $now <br>";

    $numero=count($_POST);

    print_r($_POST);
    echo
    "<br>Numero elementi: $numero";
    ?>
    Se inserisco dei dati, il codice php mi restituisce "Dati inviati", ma non mi fa vedere nessun dato nelle istruzioni echo e la variabile $numero contiene 0.

    Dove sbaglio?

    Perchè se faccio la stessa cosa sostituendo GET al posto di POST funziona tutto?

    Grazie mille per le risposte.

    Marco.

    FunCool: Ricordati di usare i tag per il codice.
    Ultima modifica di funcool : 17-04-2006 alle ore 15.38.46

  2. #2
    Ospite Guest

    Predefinito

    Hai sbagliato if..else..le graffe....
    scrivi così

    Codice PHP:
    <?php

    // Salva i dati inseriti nel database

    if(isset($_POST))
    {echo
    "Dati inviati <br>";

    $ip=$REMOTE_ADDR;
    $testo=$_POST['testo'];
    $autore=$_POST['autore'];
    $emailautore=$_POST['emailautore'];
    $inseritore=$_POST['inseritore'];
    $emailinseritore=$_POST['emailinseritore'];
    $now=date("D d-M-Y H:i:s", time());

    echo
    "Ip: $ip <br>";
    echo
    "Testo: $testo <br>";
    echo
    "Autore: $autore <br>";
    echo
    "E-mail autore: $emailautore <br>";
    echo
    "Inseritore: $inseritore <br>";
    echo
    "E-mail inseritore: $emailinseritore <br>";
    echo
    "Data inserimento: $now <br>";

    $numero=count($_POST);

    print_r($_POST);
    echo
    "<br>Numero elementi: $numero";
    }
    else
    {echo
    "Dati NON inviati <br>";}

    ?>
    cmq io fossi in te darei un nome al pulsante submit, cmq l'errore era nella sintassi della espressione condizionale. se chiusi la graffa..poi è come se uscissi

    FunCool: Ricordati di usare i tag per il codice.
    Ultima modifica di funcool : 17-04-2006 alle ore 17.12.51

  3. #3
    Guest

    Predefinito

    No, il problema non è quello. Come ho scritto, utilizzando il metodo GET invece che POST tutto funziona. E poi le graffe le volevo proprio così. Quello che non funziona è che, utilizzando il metodo POST, la variabile $_POST è inizializzata ma non contiene niente.

  4. #4
    Guest

    Predefinito

    ti faccio una domanda un po' idiota...nn me ne volere...sul form hai controllato ke l'attributo method sia post? certe volte ci si dimentica...
    cmq è meglio se posti un link...

  5. #5
    Ospite Guest

    Predefinito

    cmq con mio escono anche con post quindi qualcosa c'entrerà. Usa un nome per l'invio...come ti ho detto perchè così come fai tu può funzionare ma non è corretto.
    lo usi qui o con register_global a off?

    EDIT: ho visto ora che nel mio file html non avevo messo encType="text/plain", ho provato a toglierlo anche nel tuo e funziona, ragione però non la so..quindi ricapitolando i tuoi 2 file togliendo quello funzionano...

    FunCool: Non fare UP, usa il tasto Edita.
    Ultima modifica di funcool : 19-04-2006 alle ore 11.06.01

  6. #6
    Guest

    Predefinito

    Il modo per creare un form è:

    CODICE HTML:
    Codice:
    <form action="script_view.php" method="POST" enctype="application/x-www-form-urlencoded" onsubmit="javascript: return check_form(this)">
    ecc ecc
    </form>
    enctype="application/x-www-form-urlencoded" perchè nel form usi solo testo e non file
    onsubmit="check_form(this)" perchè un controllino sui dati che si inseriscono in un form ci sta sempre bene

    check_form avrà una struttura se ad esempio vuoi che il campo testo e autore siano obbligatori e che i campi mail siano effettivamente delle mail
    Codice:
    function check_form(obj_form) {
        if (obj_form.testo.value == "" ||  obj_form.autore.value == "") return false;
        regexp_email = /([a-zA-Z0-9\_\-\.]+)@([a-zA-Z0-9\_\-\.]+)\.([a-zA-Z0-9\_]+)/;
       myarray = regexp_email.exec(obj_form.emailautore.value);
       if (!myarray || myarray[0] != obj_form.emailautore.value) {
          alert("Indirizzo E-mail non valido");
          return false;
       }
       myarray = regexp_email.exec(obj_form.emailinseritore.value);
       if (!myarray || myarray[0] != obj_form.emailinseritore.value) {
          alert("Indirizzo E-mail non valido");
          return false;
       }
       return true;
    }
    Il codice PHP che hai scritto dovrebbe fuzionare.
    Una sola cosa: mi è capitato di avere dei problemi facendo il controllo con isset($_POST) specie se si hanno più form in una stessa pagina. Per essere sicuro di quale post ho fatto submit dò un nome al pulsante e poi guardo se esiste il post con quel nome
    HTML:
    Codice:
    <input type="submit" name="submit_form" value="Submit">
    e in PHP:
    Codice:
    if (isset($_POST['submit_form']))
    FunCool: I tag del forum sono formati con le parentesi quadre e non con < e >. Per adesso ti ho modificato io il post, la prossima volta cerca di stare più attento.
    Ultima modifica di funcool : 19-04-2006 alle ore 18.19.24

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •