17. Canvi de document. Correu
Índex
Canvi d'un document a un altre
Amb la funció header() es pot passar d'un document PHP a un altre document (PHP o no).
- header("Location: adreça");
on adreça és l'adreça del document de destí, que pot ésser representada mitjançant un literal o una variable. Aquesta funció no pot ésser precedida de cap instrucció d'(X)HTML en el document en què s'usa. A més, si en un document se'n fa servir més d'un, els diversos casos han de dependre de condicions (if o altres) mútuament excloents.
La funció header() és molt utilitzada per a la remissió automàtica a un document o un altre depenent d'alguna variable o conjunt de variables, introduïdes per l'usuari (per exemple mitjançant formularis) o de procedència diversa (per exemple dia i hora).
- <?php
-
- $dia_setmana = gmdate(w); // Determinació del dia de la setmana
- if ($dia_setmana == "0") { // Si és diumenge
- header ("Location: 17b.htm"); // Vés a aquest document
- }else{ // Si no és diumenge
- header ("Location: 17c.htm"); // Vés a aquest altre
- }
-
- ?>
- Document HTML que es presenta si és diumenge
- Document HTML que presenta si no és diumenge
Vegeu-ne el resultat
Aquesta funció es fa servir sovint en validacions de formularis:
- Recepció de les dades d'un formulari;
- if (Comprovació, més o menys complexa, de l'adequació de les dades){
- continua el procés previst;
- }else{
- header ("Location: document_de_notificació_d'error");
- }
Tramesa per correu electrònic
Es fa servir la funció mail(), amb el format següent::
- mail(destinatari,tema,contingut,complements);
Notem algunes particularitats de l'ús de mail():
- L'ordre dels arguments és rellevant: el destinatari és necessàriament el primer, el tema necessàriament el segon, etc.
- Els arguments destinatari i contingut són obligatoris.
- L'argument contingut pot ésser una cadena de text o un document HTML.
- L'argument complements ha de contenir, almenys, una adreça de correu corresponent, en principi, al remitent remot, amb el format 'From: adreça'. (S'entén que el remitent remot és l'usuari que activa la tramesa; el veritable remitent és el servidor on s'allotja el web).
- L'argument complements també pot contenir indicacions 'cc: adreça' i 'bcc: adreça', corresponents a les opcions amb còpia i amb còpia oculta.
- Document HTML on es recullen les dades.
- <?php
-
- if($_POST['dest']=="" || $_POST['mstg']=="" || $_POST['cerm']==""){ // Comprova que s'hagin omplert els camps obligatoris
-
- $lloc = '17f.htm'; // Determinació del document de destí en cas d'error
-
- }else{
-
- $text= stripcslashes($_POST['mstg']) . "\n\n" . "Adreça IP del Remitent: " . $_SERVER['REMOTE_ADDR']; // Afegeix al text informació sobre el servidor de l'usuari
- $remitent = 'From: ' . $_POST['cerm']; // Dóna el format adequat a la informació sobre el remitent remot
-
- mail($_POST['dest'], $_POST['titl'], $text, $remitent); // Fa la tramesa
-
- $lloc = '17g.htm'; // Determinació del document de destí en cas d'encert
-
- }
-
- header("Location: $lloc"); // Remissió al document adequat
-
- ?>
- Document HTML que es presenta si no s'ha omplert correctament el formulari.
- Document HTML que presenta si s'ha omplert correctament el formulari.
Vegeu-ne el resultat
En el cas dels formularis de recollida de dades, l'usuari no indica el destinatari, sinó que aquest és prefixat en el propi programa.
Tramesa d'un document HTML per correu electrònic
És un cas particular de l'anterior; en el paràmetre complements cal fer constar que el text s'ha d'interpretar com HTML.
- ...
- $complements = 'From: ' . $_POST['cerm'] . "\r\n";
- $complements .= 'MIME-Version: 1.0' . "\r\n";
- $complements .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
- ...
- mail($_POST['dest'], $_POST['titl'], $text, $complements);
- ...
Vegeu-ne el resultat