Manual de PHP

Este es un manual creado con la intención de ser útil, y no de explicar todas las funciones de PHP.

Explicando todas las funciones, conocerías el lenguaje PHP, pero tal vez no se te ocurriesen cosas útiles que hacer con ello. Este manual está enfocado a casos reales y que considero útiles.

AVISOS IMPORTANTES de elecciones y errores personales

Soy un homo sapiens. Los homo sapiens tienen manías y a veces cometen errores o hacen las cosas de formas poco comunes con respecto a otros homo sapiens. Yo soy rarito, así que te aviso:

Uso print() en vez de echo(). Para la mayoría de los casos es indiferente usar una función u otra. La inmensa mayoría de la gente usa echo() mientras yo uso print(). Supongo que se deba a que estaba acostumbrado a escribir en otros lenguajes de programación antes que PHP, como BASIC. Que yo sepa, puedes sustituir cualquier print() por un echo() y funcionará correctamente.

Para hacer este manual he escrito todos los códigos a mano y no he probado ninguno, por lo que pueden contener errores de escritura, o confusiones por mi parte, abajo de todo en cualquier página de mi web (wasge.es) tienes mi dirección de e-mail para contactar conmigo. Si ves algo raro no te cortes y dímelo, para corregirlo.

Introducción básica a PHP (variables, matrices, print y foreach)

En PHP hay variables (como en cualquier lenguaje) que son capaces de almacenar una cosa dentro de ellas.

$titulo = "Página web de ejemplo";
Esto hace que la variable $titulo tenga como contenido la cadena de texto "Página web de ejemplo".

Una de las cosas que podemos hacer con el contenido de una cadena es imprimirlo en el documento, de tal forma que al cargar la página aparezca el contenido de la variable. Esto se hace con la función print().

Con esto nos podemos ahorrar escribir varias veces lo mismo, de esta forma:

<?php
$titulo = "Esto es una página web que tiene un título muy largo";
?>
<html>
  <head>
    <title><?php print($titulo); ?></title>
  </head>
  <body>
    <h1><?php print($titulo); ?></h1>
    <p>Bienvenidos a mi web, la he llamado <?php print($titulo); ?>.</p>
  </body>
</html>

Ahora explicaré lo que es una matriz.
Una matriz es como un conjunto de variables, de forma que en una matriz puedes tener varias cosas.

$noticias[0] = "Acabo de crear una web de ejemplo";
$noticias[1] = "Mi web de ejemplo ahora tiene una martiz";
$noticias[2] = "Ahora mi web imprime los contenidos de la matriz";
$noticias[3] = "Gracias a mi matriz es más rápido escribir las noticias";

Ahora, la matriz $noticias tiene cuatro variables dentro, cada una de ellas tiene una noticia dentro. Estas serán las noticias de la web.

Vamos a hacer que todas estas noticias aparezcan en nuestra web, pero que apaarezcan bien organizadas. Además, vamos a aprender el funcionamiento de foreach() (traducido sería "para cada") para hacer algo con cada noticia.

A foreach() le decimos la matriz que tiene que coger y cómo se llamará la variable que nos dará cada vez, de tal forma que para cada noticia nos deje la noticia como $noticiaactual para poder manejarla. Foreach hará cada vez lo que se encuentre dentro de los corchetes y cada vez irá variando el contenido de $noticiaactual hasta recorrerse toda la matriz.

<?php
$titulo = "Web de noticias de prueba"
$noticias[0] = "Acabo de crear una web de ejemplo";
$noticias[1] = "Mi web de ejemplo ahora tiene una martiz";
$noticias[2] = "Ahora mi web imprime los contenidos de la matriz";
$noticias[3] = "Gracias a mi matriz es más rápido escribir las noticias";
?>
<html>
  <head><title><?php print($titulo) ?></title></head>
  <body>
    <h1><?php print($titulo); ?></h1>
    <h3>Noticias</h3>
    <?php
    foreach ($noticias as $noticiaactual) {
      print ("<b>Aquí empieza una nueva noticia:</b><br>");
      print ($noticiaactual);
      print ("<br>");
      print ("<small>Fin de la noticia, gracias por leerla.</small><br>");
    }
    ?>
  </body>
</html>

Enviar datos al servidor (datos "get")

Para enviar datos al servidor hay dos sistemas, POST (enviar) y GET (cojer). La diferencia es sencilla: cuando enviamos datos con GET, esos datos van al final de la dirección, y son visibles en la URL, pero cuando los enviamos con POST los datos van dentro de la petición, pero no exactamente en la dirección, de forma que "no se ven".

En este manual sólo voy a explicar GET, aunque POST viene muy bien para contraseñas, pero no quiero enrollarme mucho.

Para explicar el funcionamiento del envío de datos con el método GET, voy a explicarlo con un formulario para cambiar el color de fondo de la web.

<form method="get" action="">
  <select name="color">
    <option value="red">Rojo</option>
    <option value="blue">Azul</option>
    <option value="green">Verde</option>
    <option value="#0080ff">Color preferido de WASGE</option>
  </select>
  <input type="submit" value="Cambiar color de fondo">
</form>


Como puedes ver, he dejado la propiedad "action" en blanco. La propiedad "action" indica a dónde tiene que mandar los datos, y al estar en blanco el navegador envía la petición a la URL actual.
Dentro del formulario hay un campo <select> llamado "color", y dentro hay varias opciones (<option>) cuyos valores (value) son colores que el navegador entiende (colores básicos en inglés y cualquier color en hexadecimal).

Ahora vamos con la parte de la recepción de datos en el servidor. Para esto usamos una matriz llamada $_GET (para envíos post hay otra matriz igual llamada $_POST). En esta martiz se encuentran todos los datos que se hayan enviado por la URL, y podemos acceder a ella de una forma muy sencilla. Necesitamos acceder a la variable "color" que enviamos desde el formulario anterior, así que hacemos esto:

<body bgcolor="<?php print($_GET["color"]; ?>">

Esto, una vez procesado por PHP dará como resultado (en caso de elegir el color rojo):

<body bgcolor="red">

El sistema es bastante simple, ahora hay que juntarlo todo y veremos que no es nada complicado:

<html>
<head><title>Mi web</title></head>
<body bgcolor="<?php print($_GET["color"]; ?>">
<form method="get" action="">
  <select name="color">
    <option value="red">Rojo</option>
    <option value="blue">Azul</option>
    <option value="green">Verde</option>
    <option value="#0080ff">Color preferido de WASGE</option>
  </select>
  <input type="submit" value="Cambiar color de fondo">
</form>
</body>
</html>

Función isset()

Ahora voy a explicar la función isset (en inglés "está definido) puesto que nos va a venir muy bien. La función isset() simplemente nos dice si una variable existe (da igual si tiene contenido dentro, o el contenio que tenga, la cosa es si existe esa variable).

...
<?php
if (isset($_GET["color"]) {
  $colordefondo = $_GET["color"];
} else {
  $colordefondo = "white";
}
?>
<body bgcolor="<?php print($colordefondo); ?>">
...


Con eseto conseguimos que si en la dirección (URL) está definida la variable "color", la nueva variable $colordefondo sea igual al "color" de la URL. Si no (en inglés "else") el $colordefondo será blanco (en inglés "white")

Sesiones de PHP

Las sesiones son una cosa bastante fácil de utulizar, sólo hay que tener una cosa bien clara, hay que iniciar el sistema de sesiones de PHP antes de que se envíe cualquier dato, para que PHP introduzca los datos necesarios antes que el resto de la página.

Las sesiones se inician con una función: session_start(); y son mucho más fáciles de usar de lo que posiblmente hayas pensado, puesto que es una simple matriz cuyo contenido perdura en todas las páginas de un mismo servidor web en las que se haya iniciado el sistema de sesiones.

Ahora vamos a mezclar esto con el ejemplo anterior y el anterior, de tal forma que si está definido el color de fondo en la dirección, lo cambie al valor que hay en la sesión, y si no, ponga el color que está almacenado en la sesión.

<?php
// cuando pongo dos barras PHP ignora este comenario.
session_start(); // empieza la sesión
if (!isset($_SESSION["color"]) { // la exclamación significa lo contrario, es decir, si no existe(sigue abajo)
$_SESSION["color"] = "white"; // lo creamos por primera vez, y el contenido será "white" (blanco)
}
if (isset($_GET["color"])) { // si en la dirección hay un "color" (sigue abajo)
  $_SESSION["color"] = $_GET["color"]; // entonces lo guardamos en la sesión
}
?>

Fecha de creación: 6/12/2010 5:41:57 | Última modificación: 6/2/2015 0:40:53 | Hora del servidor: 24/11/2017 13:52:22