Salta el contingut

Llenguatge PHP: Conceptes

Sintaxi

Enllaç a W3Schools i PHP.net

Un script PHP s'executa en el servidor i el resultat de codi HTML s'envia al servidor.

Bàsicament s'escriu en una pàgina .php, que el motor d'execució de l'Apache interpreta.

El codi o script PHP comença amb <?php o acaba amb ?>

1
2
3
<?php
// el codi PHP s'escriu aquí
?>

Una pàgina .php pot incloure tant codi HTML com codi PHP.

exemple1.php
<!DOCTYPE html>
<html>
<body>

<h1>My first PHP page</h1>

<?php
echo "Hola a tothom!";
?>

</body>
</html>
exemple1.php exemple1.php

Les instruccions amb PHP, s'acaben amb ; .

1
2
3
<?php
    echo "Hola a tothom!";
?>

Usarem echo per imprimir o generar codi HTML segons el que indiquem.

Barrejar HTML i PHP

exemple2.php
1
2
3
<p>Aquesta línia es mostrarà al navegador</p>
<?php echo 'Això serà interpretat.'; ?>
<p>Aquesta línia també es mostrarà al navegador i no serà interpretada per PHP.</p>
exemple2.php exemple2.php

Podem mostrar HTML segons un codi PHP

exemple3.php
1
2
3
4
5
<?php if ($expresión == true): ?>
    Això es mostrarà si l'expressió és certa.
<?php else: ?>
    En cas contrari es mostrarà això.
<?php endif; ?>
exemple3.php exemple3.php

NOTA

Si l'extensió del fitxer no és .php, no s'interpreta el codi i retornarà tal qual el codi

Comentaris

Enllaç a W3Schools i PHP.net

Un comentari a php és una línia que no s'executarà, per tant no tindrà cap resultat. Per tant només és de lectura per un programador.

Els comentaris han de servir per:

  • Explicar la lògica del codi, tant per un mateix programador, com altres persones
  • Capçalera de l'arxiu de codi per ubicar a dins d'un projecte.
  • Comentar una part de codi en etapa de prova i depuració de la lògica php.

Warning

En cap cas un codi comentat ha de quedar en presentació o explotació d'un codi php

Per comentar un codi php ho podem fer amb:

  • // comentari de codi d'una línia
  • # comentari de codi d'una línia
  • /* i */ comentari de codi de vàries línies
<!DOCTYPE html>
<html>
<body>
    <?php
    // Aquest és un comentari
        # Això també és un comentari

    /*
        Aquest és un comentari
        de codi de diverses línies
        ...
    */
?>
</body>
</html>

Variables

Enllaç a W3Schools i PHP.net

Les variables ens serveixen per a guardar valors d'informació d'un tipus de dades. Per això diguem que són tipades, però al moment de declarar-les, no s'indica el tipus, sino que s'assigna el resultat d'una expressió que és d'un tipus. Es pot canviar el tipus de la variable cada vegada que s'assigna un nou valor.

Regles:

  • Es declaren amb $ al davant i nom variable.
  • S'hi assigna un valor amb =.
  • Ha de començar amb un lletra o _
  • No pot començar amb un número
  • Ha de contenir A-Z,a-z, _
  • Són case-sensitive

    $nom = "Judit";

Cal tenir present l'àmbit de les variables:

  • local -> A dins d'una funció.
  • global -> A qualsevol lloc del codi.
  • static -> A dins d'una funció, però es manté valor.

NOTA

Pot ser bona tàctica per depurar una programa, anar inspeccionant els seus valors mentre s'executa el codi.

Podeu trobar més info

També podem usar la referència d'una variable amb els ímbol & al davant.

1
2
3
4
5
6
7
<?php
    $var = "Pere";
    $Refvar = &$var;

    $Refvar = "Carme";
    echo $var;  //El valor de $var s'ha modificat
?>

Tipus

Enllaç a W3Schools i PHP.net

Totes les variable contenen un valor que és d'un tipus definit:

  • boolean
  • integer
  • float (o double)
  • string

i tipus composts:

  • array
  • object

i també especials:

  • resource
  • NULL

Podem fer coses com:

1
2
3
4
5
<?php
    $var = "Pere";
    $var = 3;
    $var = ($var == 3);
?>

Observem

Si usem var_dump(), podrem observar el valor i tipus assignat:

1
2
3
4
5
6
7
8
<?php
    $var = "Pere";
    var_dump($var);
    $var = 3;
    var_dump($var);
    $var = ($var == 3);
    var_dump($var);
?>
Ens mostra:

string(4) "Pere" 
int(3) 
bool(true)

Constants

Enllaç a W3Schools i PHP.net

Una constant és un identificador que té un valor assignat que no variable

Per declarar-la: define(nom, valor, case-sensitive)

exemple4.php
1
2
3
4
<?php
    define("Missatge", "Benvinguts als apunts!");
    echo Missatge;
?>
exemple4.php exemple4.php

Podem usar unes constants predefinides.

Operadors

Enllaç a W3Schools i PHP.net

Els operadors són esencials per a crear i usar expressions en php.

Les expressions les usen per aplicar lògica al nostre codi desenvolupat

Tenim diversos coses a tenir en compte:

  • Precedència: que pot fer variar el valor final
  • tipus d'operadors: no és el mateix sumar que comparar:

L'operador més usat és el d'assignació

1
2
3
<?php
    $valor = $a * (3 + $b);
?>

En aquest exemple que sumarem el valor de la variable a la suma de b + 3

Alternatives

Enllaç a W3Schools i PHP.net

Formen part de la lògica d'execució d'un codi desenvolupat i anirà associat a una expressió que farà que s'executi un codi o no.

Normalment caldrà definir la condició, que serà una expressió lògica i les accions que executarà en cas d'avaluar-se a cert i les altres en cas de fals.

Seria un psedocodi similar a:

    Obtenir Temperatura
    SI (Temperatura < 0) LLAVORS
        escriure "Està glaçant!"
    SINO
        escriure "S'hi està ."
    FSI

Tenim:

  • if
  • if else
  • elseif / else if
  • switch

Exemple:

exemple5.php
<?php
    $t = date("H");
        if ($t < "8") {
      echo "Bona matinada!";
    } elseif ($t < "20") {
      echo "Bon dia!";
    } else {
      echo "Bona nit!";
    }
?>
exemple5.php exemple5.php

Podem observar com diguem una frase o una altra depenent de l'hora del dia que s'executi el codi.

La sintaxi bàsica és:

sintaxis bàsica if
<?php
    if (condició)
    {
        // accions de condició certa
    }
    else
    {
        // accions de condició falsa
    }
?>
sintaxis elseif
<?php
    if (condició1)
    {
        // accions de condició 1 certa
    }
    elseif (condició2)
    {
        // accions de condició 2 certa
    }
    else
    {
        // accions de condició falsa
    }
?>

Bucles

Enllaç a W3Schools i PHP.net

Formen part de la lògica d'execució d'un codi desenvolupat i ens ajuda a repetir unes instruccions un número definit o indefinit (condició) de vegades.

Bucle
    Mentre (Condició sigui certa)
        ...
        Processar
        ...
    FMentre

Normalment seguiran la lògica de:

  • Esquema de recorregut: Executar unes instruccions per tots els elements a tractar. Exemple: Comptar persones.
  • Esquema de recerca: Executar unes instruccions cercant algun element a dins dels candicats. Caldrà definir una condició de trobat i de final. Per exemple: cercar a una persona.
Esquema de recorregut
    Obtenir 1r element
    Mentre (No final)
        Processar 
        Obtenir següent element
    FMentre
Esquema de recerca
    Obtenir 1r element
    Mentre (No trobat) I (No final)
        Processar 
        Obtenir següent element
    FMentre
    Si Trobat Llavors
        accions trobat
    Sino
        accions No trobat
    FSi

NOTA

Cal definir bé les condicions de final per no generar un bucle infinit. Cal definir com obtenir següent element.

De la nostra manera de pensar, podriem tenir un destí a arribar

Caminem
    Posició actual
    Mentre (No hem arribat al destí)
        Fem una passa
    FMentre

    //Quan sortim del bucle, significa que hem arribat al final.

Podem tenir condicions més complexes a avaluar. O fins i tot més d'una acció a realitzar.

Caminem
    Posició actual
    Mentre (No hem arribat al destí O estem cansats)
        Fem una passa
        SI (el destí és cap a la dreta)
            Girem a la dreta
        SINO SI(el destí és cap a l'esquerra)
            Girem a l'esquerra
        FSI
    FMentre

    //Quan sortim del bucle, significa que hem arribat al final o bé estem cansats.

Tenim 4 tipus de bucles:

while: Repeteix instruccions mentre la condició sigui certa.

exemple6
1
2
3
4
5
6
7
8
<?php
    $i = 0;
    while ($i < 10)
    {
        echo $i;
        $i++;
    }
?>
exemple6.php exemple6.php

do while: Repeteix instruccions fins que una condició deixa de ser certa

<?php
    $i = 0;
    do
    {
        echo $i;
        $i++;
    } while ($i < 10);

    // Sempre farà com a mínim una volta
?>

for: Repeteix instruccions un número específic de vegades

1
2
3
4
<?php
    for($i=0; $i < 10, $i++)
        echo $i;
?>

for each: repeteix instruccions per cada un dels elements d'un array.

1
2
3
4
5
6
<?php
    foreach($array as $valor)
    {
        //aquí posem el codi de processar
    }
?>

Funcions

Enllaç a W3Schools i PHP.net

Una funció s'usa per estructurar el codi de manera descendent i poder usar i repetir la seva lògica tantes vegades com sigui necessari.

Una funció no s'executa quan s'interpreta l'script php, cal fer una crida a la mateixa.

El nom de la funció ha de començar amb una lletra o bé _.

Els noms de les funcions:

- Són case-sensitive al declarar-les.
    - Donarà errada per duplicitat sense diferenciar majúscules de minúscules.
- Són case-insensitive al cridar-les.
    - No donarà errada al diferenciar majúscules de minúscules al cridar-les.

Warning

function Exemple(){
    ...
}

i 
function exemple(){
    ...
} 

donaria errada de declaració per duplicitat de l'identificador!

Warning

function Exemple(){
    ...
}

Exemple();
exemple();

Faria la crida a la funció Exemple() dues vegades corectament !

Poden o no retornar un valor.

La sintaxi és:
function Nomfunció(paràmetres)
{
    // lògica de la funció

    // valor de retorn?
}

Un petit exemple, de com definir i cridar a una funció sense paràmetres ni que retorni res.

1
2
3
4
5
6
7
8
9
<?php

    function Saludar()
    {
        echo "Hola a tothom!";
    }

    Saludar();
?>
Els paràmetres o arguments ens permeten passar valor a dins de la funció i tindran un àmbit local de la mateixa.

exemple7.php
<?php

    function Saludar($nom)
    {
        echo "Hola " . $nom;
    }

    Saludar("Pere");
    Saludar("Marta");
?>
exemple7.php exemple7.php

Versió 7

A partir de la versió 7 del php, podem tipar els paràmetres

<?php

    function sumar(int $num1, int $num2)
    {

        return $num1 + $num2;
    }

    echo sumar(2,"3");
?>
El valor de "3" serà modificat a tipus int

Podem passar arguments per:

  • valor. Permet passar valors o agafar els valors dels arguments passats.
  • referència: usem & al davant de l'argument i farà referència a la posició de memòria

exemple8.php
<?php

    function acumular(int &$num1, int $num2)
    {

        $num1 += $num2;
    }

    $a = 4;
    $b = 1;
    acumular($a,$b);
?>
exemple8.php exemple8.php

Valors per defecte.

exemple9.php
<?php

    function acumular(int $num1, int $num2 = 1)
    {

        return $num1 + $num2;
    }

    $a = 4;
    $a = acumular($a);
    echo "<br>a: " . $a;
    $a = acumular($a,4);
    echo "<br>a: " . $a;
?>
exemple9.php exemple9.php

Podem indicar un valor per defecte si no passem aquest argument. Ha d'estar a la dreta dels argument, com a últim passat.

Versió 8

A partir de la versió 8 de php podem usar els paràmetres anomenats (named arguments)

paràmetres anomenats
<?php

    function Saludar($nom, $cognom = "")
    {

        echo "Hola " . $nom . " " . $cognom;
    }

    Saludar(cognom: "Bosch", nom: "Maria");
?>

POO Mètodes

Més endavant veurem com la lògica de les funcions serà usada en la implementació dels mètodes d'una classe.

Recursivitat

PHP permet recursivitat en la crida de funcions i es pot cridar a si mateixa.

    <?php    
        function mostra($numero) {    
            if($numero<=5){    
                echo "$numero <br/>";    
            mostra($numero+1);    
            }  
        }    

        mostra(1);    
    ?> 

Includes

Enllaç a W3Schools i PHP.net

Els arxius include ens donen la oportunitat d'escriure funcions generals de la nostra aplicació i poder-la incloure en les diferents pàgines .php que desenvolupem.

Ens ajudarà a desenvolupar codi més estructurat.

Tenim diverses opcions:

  • include: inclou l'arxiu. Si no el troba, no l'inclou i continua.
  • require: inclou l'arxiu. Si no el troba, ara s'atura i dona errada.
  • include_once: inclou l'arxiu, només la 1a vegada. Si no el troba, no l'inclou i continua
  • require_once: inclou l'arxiu, només la 1a vegada. Si no el troba, ara s'atura i dona errada.

Info

Podem veure com ho fem.

Taules

Enllaç a W3Schools i PHP.net

Una taula és una estructura de dades que permet desar informació composta. Pot contenir informació indexada amb diferents valors de diferents tipus.

per definir un array fem

1
2
3
<?php
    $dades = array();
?>

Si volem guardar-hi valors els separem entre comes al moment d'assignar.

1
2
3
<?php
    $noms = array("Judit", "Laia", "Marc");
?>

Ara la taula té 3 valors de tipus string.

De manera bàsica accedim a la informació amb índexs de posicions.

1
2
3
<?php
    echo $noms[0];
?>

Ens mostrarà el valor de "Judit"

Tenim 3 tipus d'arrays:

  • indexats: Assignem valors i accedim al valor per posició
  • Associatius: Assignem parella de clau / valor i accedim per clau al valor
  • Multidimensional: Tenim diversos nivells de guardar valors, de forma indexada o associativa

Per guardar un valor associat a una clau fem:

1
2
3
4
5
<?php
    // clau => valor

    $alumne = array("nom" => "Judit", "cognoms" => "Soler");
?>

Per accedir al nom fariem:

1
2
3
<?php
    echo $alumne["cognom"];
?>
exemple10.php exemple10.php

Ens mostrarà el valor de "Soler"

Podem fer arrays multidimensionals per guardar, per exemple, valors de varis alumnes d'un grups:

1
2
3
4
5
<?php
    $alumnes = array( array("nom" => "Judit", "cognoms" => "Soler"),
                      array("nom" => "Laia", "cognoms" => "Soler"),
                      array("nom" => "Marc", "cognoms" => "Martinez") );
?>

Per accedir al nom del 2n alumne:

1
2
3
<?php
    echo $alumnes[1]["nom"];
?>

exemple11.php exemple11.php

Ens mostrarà el valor de "Laia"

Podem fer arrays multidimensionals associatius

1
2
3
4
5
<?php
    $dades = array( "pare" => array("nom" => "Pere", "cognoms" => "Soler"),
                    "mare" => array("nom" => "Laia", "cognoms" => "Martinez"),
                    "fill" => array("nom" => "Marc", "cognoms" => "Soler Martinez") );
?>

Ara per saber el nom del fill fariem:

1
2
3
<?php
    echo $dades["fill"]["nom"];
?>

Ens mostrarà el nom de "Marc"

nota

Per recorrer tots els valors d'un array podem usar for o foreach

Hi ha un llista de funcions de php disponibles per a realitzar diverses accions:

  • afegir valors
  • ordenar valors
  • eliminar valors
  • fusionar valors
  • ...

Superglobals

Enllaç a W3Schools i PHP.net

Són variables internes al llenguatge i ens donen informació interessant per desenvolupar, per exemple quina és la IP que ens fa la petició a la pàgina

  • $GLOBALS: ens dona accés a totes les variables d'àmbit global de la pàgina.
  • $_SERVER: ens dona accés a informació de l'entorn del servidor
  • $_REQUEST: ens dona informació de la petició de la pàgina .php (POST i GET)
  • $_POST: ens dona informació de les dades enviades per POST
  • $_GET: ens dona informació de les dades enviades per GET
  • $_FILES: ens dona informació dels fitxers pujats en la petició de la pàgina.
  • $_ENV: ens dona informació sobre l'entorn del servidor.
  • $_COOKIE: ens dona informació de les cookies enviades cap al servidor.
  • $_SESSION: ens permet accedir a variables de sessió de navegació d'una aplicació web.

Totes aquestes variables són arrays associatius, per exemple:

1
2
3
<?php
    $ip = $_SERVER['REMOTE_ADDR']
?>

Formularis

Enllaç a W3Schools i PHP.net

Els Formularis ens serveixen per a poder inserir i/o gestionar dades de l'aplicació web amb l'usuari.

Els formularis estan basat en etiquetes HTML que ens serveixen per a formatar les dades per inserir o gestionar.

La idea d'un formulari és que ens permet enviar dades cap a la banda del servidor i les podem processar per:

  • Desar dades a una BdD
  • Realitzar uns càlculs
  • Usar les dades per cridar a un WebServices
1
2
3
4
5
6
7
<html>
    <form action="accio.php" method="post">
     <p>Nom: <input type="text" name="nom" /></p>
     <p>Edat: <input type="text" name="edat" /></p>
     <p><input type="submit" /></p>
    </form> 
</html>

Ens interessa:

  • FORM: Etiqueta d'inici/Fi de Formulari HTML
  • action: atribut que ens indica quina pàgina .php cridarà a l'enviar el formulari
  • method: atribut de valor GET o POST, indicant si s'envien les dades per URL o per capçalera HTTP.
  • name: atribut que ens servirà per identificar el valor al PHP del servidor.
  • submit: Botó per enviar el formulari.

Una vegada hem rebut la petició de la pàgina .php al servidor, les dades es carreguen de manera automàtica a l'array:

  • $_GET: si teniem atribut method="GET"
  • $_POST: si teniem atribut method="POST"

En l'exemple anterior les dades serien:

"nom" => Nom_entrat
"edat" => edat_entrada

Fariem:

1
2
3
4
<?php
    $nom = $_GET["nom"]
    $edat = $_GET["edat"]
?>

Un exemple podira ser:

1
2
3
4
<?php
    $nom = $_GET["nom"];
    $edat = $_GET["edat"];      echo "Hola " . $nom . " tens " . $edat . " anys.";
?>

Sempre serà una bona pràctica assegurar-nos que tenim els valors a dins d'array.

1
2
3
4
5
6
7
8
9
<?php

    if (isset($_GET["nom"]) and isset($_GET["edat"]))
    {
        $nom = $_GET["nom"];
        $edat = $_GET["edat"];
        echo "Hola " . $nom . " tens " . $edat . " anys.";
    }
?>

Pel que fa a la validació dels valors, ho farem sempre per optimitzar a la banda del client:

  • javascript: funció de validació dels camps. Caldrà crear l'atribut id
  • HTML5: diferents valors dels INPUT types

A la banda del servidor farem les validacions necessàries en fase de precondicions

Com ho fem per...

Funcions php

Enllaç a W3Schools i PHP.net

Les funcions php són funcions ja predefinides pel propi llenguatge PHP i les podem usar directament sense have d'incloure cap arxiu.

Ens permetrà resoldre multitud de diverses lògiques sobre les dades del codi, per exemple:

  • sobre números: abs(), asin(), floor(), max(), min(), ...
  • sobre strings: chr(), str_reverse(), trim(), ...
  • sobre dates: date_diff(), date_add(), date_create(), ...
  • ...

Excepcions

Enllaç a W3Schools i PHP.net

Les excepcions són una manera de tractar una errada en l'execució de codi.

Normalment estarà associat a l'errada d'accés a un recurs, una bdd o bé d'alguna errada d'execució d'una instrucció, per exemple, una divisió per 0.

Podem llançar o crear una excepció throw:

<?php   
    function divide($dividend, $divisor)
    {
        if($divisor == 0)
        {
            throw new Exception("Division by zero");
        }
        return $dividend / $divisor;
    }

    echo divide(5, 0);
?>

Per controlar aquestes errades tenim el try...catch que ens permetrà controlar aquest fet.

1
2
3
4
5
6
7
8
9
<?php
    try 
    {
      \\ codi que pot llançar una excepció
    } catch(Exception $e) 
    {
      \\ codi que s'executa quan ocurreix una excepció.
    }
?>

Per exemple:

<?php
    function divide($dividend, $divisor)
    {
        if($divisor == 0) {
            throw new Exception("Divisió per zero");
        }
         return $dividend / $divisor;
    }

    try {
      echo divide(5, 0);
    } catch(Exception $e) {
      echo "No podem dividir per 0.";
    }
?>  
exemple12.php exemple12.php

D'aquesta manera el nostre codi quedarà protegit i no donarà una errada d'execució del php, interrumpent l'script php.

L'objecte Exception $e ens permetrà accedir per exemple a la descripció de l'errada.

Bones pràctiques!

Per tant usarem sempre try...catch sempre que ens calgui executar controladament un codi amb possibilitat d'errada.

Sessions

Enllaç a W3Schools i PHP.net

Les variables de sessió és la manera que hi ha per mantenir de valors entre diferents pàgines php.

La navegació per una aplicació web des de un navegador client, fa que s'executi una pàgina .php diferent a cada petició HTTP GET, això provoca que el domini de les variables s'acabi en l'execució del codi de la pàgina .php.

Potser molt útil, per exemple, en casos de voler desar informació d'usuari 'logat' en una intranet.

S'usa la variable superglobal $_SESSION, que conté un array associatiu de valors, on la clau és l'identificador.

Per exemple:

pàgina1.php
1
2
3
4
5
<?php
    session_start();
    // assignem un nom a l'usuari
    $_SESSION["usuari"] = "Mercè";
?>
pàgina2.php
1
2
3
4
5
<?php
    session_start();
    // recuperem aquest valor
    echo "Usuari: " . $_SESSION["usuari"];
?>

D'aquesta manera podem veure com podem recuperar el nom de l'usuari en una pàgina diferent de la que s'ha assignat el valor.

Fixeu-vos que s'escriu session_start();, això servei per iniciar el treball amb sessions. No significa que s'inicia una sessió. Una sessió s'inicia en la 1a petició HTTP GET que fa un navegador client a un servidor web i es manté constant mentre navega per diferents pàgines.

Per saber com s'identifica la sessió de navegació, el servidor web usa una cookie que envia i consulta al navegador del client.

Podem consultar tots els valors desats a la variable $_SESSION:

1
2
3
4
<?php
    session_start();
    var_dump($_SESSION);
?>

La sessió vé identificada per un ID

1
2
3
4
<?php
    session_start();
    echo session_id();
?>

Per borrar totes les variables i destruir la sessió:

1
2
3
4
5
6
7
8
9
<?php
    session_start();
    // elimina totes les variables de la sessió
    // però manté el id de la sessió igual.
    session_unset();

    // destrueix la sessió i genera un id nou.
    session_destroy();
?>

La sessió es destruirà automàticament quan el servidor web detecti que la navegació s'ha acabat del tot i la cookie no tingui validesa. Això sol passar normalment quan es tanca el navegador completament. Ull amb les pestanyes del navegador que mantenen la mateixa sessió oberta normalment.

Cookies

Enllaç a W3Schools i PHP.net

Les cookies són valors que es desen al navegador del client i serveixen per identificar la seva navegació cap a l'aplicació web del servidor.

En aquest aspecte el client pot configurar el navegador per que no accepti cookies. I també la LOPD afecta en el seu ús, que cal ser acceptat per part de l'usuari que navega.

Aquest valor que es desa al navegador del client, s'envia automàticament cap al servidor cada vegada que el client navega a una pàgina, a través del protocol HTTP. I el servidor per codi php pot enviar cookies que es desaran al navegador del client.

Una cookie té els següents paràmetres:

  • nom de la cookie
  • valor de la cookie
  • data en que expira i desapareix del nevegador
  • ruta a dins de la web a on s'aplica
  • domini a on s'aplica
  • indicar si s'envia només sota https
  • només per ús de protocol http, no permet ser usada des de javascript al navegador

Serà accesible per la variable àrray associatiu superglobal $_COOKIE a dins del php que permet recollir els valors de les cookies enviades des de el navegador del client.

Per exemple:

1
2
3
4
<?php
    // recollim el valor d'una cookie que ens indica la última visita a la pàgina
    $dataultima = $_COOKIE["ultimavisita"];
?>

de manera segura podriem fer:

1
2
3
4
5
<?php
    // recollim el valor d'una cookie que ens indica la última visita a la pàgina
    if (isset($_COOKIE["ultimavisita"]))
        $dataultima = $_COOKIE["ultimavisita"];
?>
Per crear o enviar una cookie cap al navegador fariem servir la instrucció setcookie().

1
2
3
4
<?php
    //creem cookie d'ultima visita
    setcookie("ultimavisita",date("Ymd"));
?>

O indiquem que expira al cap de 1 any

1
2
3
4
<?php
    //creem cookie d'ultima visita, expira a 60*60*24*365=31.536.000 segons
    setcookie("ultimavisita",date("Ymd"),time()+31536000);
?>
Per borrar una cookie al navegador, el que fem és indicar que expira ja o bé ja ha expirat.

1
2
3
4
<?php
    //creem cookie d'ultima visita, expira ara mateix, per tant s'esborra per expirada
    setcookie("ultimavisita",date("Ymd"),time()-1);
?>
Per indicar que una cookie només s'aplica a /intranet

1
2
3
4
<?php
    //creem cookie d'ultima visita a la intranet, expira en 1 hora
    setcookie("ultimavisita",date("Ymd"),time()+3600,"/intranet");
?>

Des de el navegador client sempre podem anar a observar les cookies associades a un domini que tenim i les podem eliminar.

Nota

Les cookies són una eina complementaria a les variables de sessió i que conjuntament ens poden servir per donar seguretat a l'aplicació web.

Cal tenir present que una variable de sessió sempre la podrem assignar i recuperar el valor a la mateixa pàgina php, mentre que una cookie, sempre haurem de crear-la i enviar-la al client i posteriorment recuperar en una segona crida a la pàgina php.