Skip to content

Latest commit

 

History

History
145 lines (105 loc) · 4.9 KB

form.md

File metadata and controls

145 lines (105 loc) · 4.9 KB

Formularis

Enviar dades amb formularis

Comencem per un exemple senzill, un formulari amb dos camp de text:

<html>
<body>
  <form action="processa.php" method="post">
     Nom:<input type="text" name="nom"><br>
     Email: <input type="text" name="email"><br>
     <input type="submit" value="Enviar">
  </form>
</body>
</html>

Fixeu-vos que:

  • El tag <form> envolta tots els camps del formulari.

    • method: indica la forma d'enviament de la informació (POST o GET).
    • action: indica el fitxer on s'enviaran les dades
  • Dintre trobem diversos camps <input>, tants com camps de dades (nom i email) vulguem posar.

  • name: És molt important el atribut name que s'ha de posar a cada camp del formulari. Indica el nom que l'identifica i que ens permetrà recuperar el valor introduït.

  • submit: El darrer <input> és de tipus submit

    • És el botó per enviar les dades quan les haguem introduït.
    • Si no el posem no podrem enviar les dades al servidor.
    • El atribut value és el text que mostrarà el botó.

Obtenir dades enviades

La pàgina destí utilitza un array associatiu (PHP superglobals) que són generats automàticament per PHP i que permeten obtenir les dades que ha introduïdes per l'usuari.

Existeixen 3 arrays diferents:

  • Array $_GET: conté les variables si el formulari ha estat enviat pel mètode GET.
  • Array $_POST: conté les variables si el formulari ha estat enviat pel mètode POST.
  • Array $_REQUEST: conté les variables passades per qualsevol dels 2 mètodes (GET o POST).

En aquests arrays associatius, el name del camp del formulari serà una clau que contidrà el valor entrat al formulari.

El fitxer que recollirà la informació processa.php pot contenir el següent:

<html>
  <body>
  <!-- Codi HTML per aquí... -->
  <? php
      $nom = $_REQUEST['nom'];  //Obtenim el nom introduït
      $email = $_REQUEST['email']  
      echo "Hola, $nom!";       //Mostrem una salutació
  ?>
  <!-- Més codi HTML per allà... -->
  </body>
</html>

Fixeu-vos que:

  • Obtenim el valor entrat al formulari a partir de l'array associatiu $_REQUEST i indicant la clau nom $_REQUEST['nom'].
  • En el form anterior hem posat els noms de les variables NOM i EMAIL (paràmetre "NAME") i amb aquest mateix nom les hem capturat.
  • També podríem haver utilitzat $_POST['nom'] perquè el formulari s'han enviat utilitzant el mètode post.

POST i GET

Quan un formulari envia dades ho pot fer mitjançant dos mètodes diferents:

GET

Característiques del mètode GET:

  • Els valors introduits al formulari aperèixen a l'adreça URL i són visibles per tothom.

  • Les dades s'afegeixen a la capçalera de la petició HTTP.

  • Té limitació en la quantitat de dades a enviar.

    • Màxim 2000 caràcters.
  • Les sol·licitud GET es guarden en l'historial del navegador.

  • Les sol·licitud GET poden ser bookmarked.

POST

Característiques del mètode POST:

  • Els valors introduits al formulari es transmeten de manera oculta (no aparèixen a la barra d'adreces del navegador).
  • Les dades s'afegeixen en el cos de la petició HTTP.
  • No hi ha límits en la quantitat d'informació a enviar.
  • Les dades s'afegeixen en el cos de la petició HTTP.
  • Les sol·licitud POST NO es guarden en l'historial del navegador.
  • Les sol·licitud POST NO poden ser bookmarked.

En general, els desenvolupadors prefereixen POST per enviar dades de formularis.

Exemple

En aquest exemple veurem com es pot mostrar el formulari i processar les dades del formulari en una mateixa pàgina php.

<html>
  <body>
  
    <?php
    if($_SERVER['REQUEST_METHOD'] != 'POST') {
    //Mostrem el formulari
    ?>
      <form action="processa.php" method="post">
      Nom:<input type="text" name="nom"><br>
      Email: <input type="text" name="email"><br>
      <input type="submit" value="Enviar">
      </form>
    <?php
    } else {
     //Processem les dades
    ?>
      <h2>Formulari enviat.</h2>
      <p>Hola <?php echo $_POST['nom'];?> </p>
    <?php
    }
    ?>
    
  </body>
</html>

Fixeu-vos que:

  • La condició $_SERVER['REQUEST_METHOD'] != 'POST' ens permet saber si no s'han introduit dades al formulari i per tant cal mostrar el formulari.

Referències