Extra Block Types (EBT) - Nueva experiencia con Layout Builder❗

Extra Block Types (EBT): tipos de bloques con estilo y personalizables: Presentaciones de diapositivas, Pestañas, Tarjetas, Acordeones y muchos más. Configuraciones integradas para fondo, DOM Box y plugins de JavaScript. Experimenta hoy el futuro de la construcción de diseños.

Módulos de demostración EBT Descargar módulos EBT

❗Extra Paragraph Types (EPT) - Nueva experiencia con Paragraphs

Extra Paragraph Types (EPT): conjunto de módulos basado en párrafos de forma análoga.

Módulos de demostración EPT Descargar módulos EPT

Scroll

Lecciones de PHP - Lección 1 - Trabajo con formularios

10/05/2025, by Ivan

En la vida cotidiana recibimos información por televisión, radio, internet o mediante comunicación directa. Los sitios web también reciben información de los usuarios, pero lo hacen de forma especial: mediante formularios. Los formularios pueden compararse con encuestas o formularios oficiales que se rellenan al presentar una solicitud. Aunque el conjunto de elementos de un formulario es limitado, permiten recopilar toda la información necesaria del usuario para el funcionamiento del sitio.

Para aprovechar mejor esta lección, deberías leer algunas lecciones de HTML sobre cómo crear formularios.

Antes de comenzar la primera lección, vamos a crear la estructura de nuestra aplicación, es decir, una clase que gestionará el funcionamiento de nuestro sitio web.

Crearemos una carpeta llamada class y dentro pondremos el archivo simpleCMS.php, que contendrá nuestra clase de gestión del sitio. También crearemos el archivo index.php, que iniciará esa gestión. Y además crearemos una carpeta vacía para nuestros mensajes, así como el archivo de estilos style.css. Obtendremos así los siguientes archivos y carpetas:

class/simpleCMS.php

messages/

index.php

style.css

Contenido del archivo simpleCMS.php:

<?php
class simpleCMS {  // clase de gestión
  public function display_public() { // método para mostrar mensajes
  
  }
  public function display_admin() { // método para ingresar mensaje
	
  }
  public function write($p) { // método para guardar mensaje
  
  }  
}
?>

Por ahora dejamos los métodos vacíos, luego agregaremos el código correspondiente.

Archivo style.css:

*{
  margin: 0;
  padding: 0;
}

body{ 
  font: 12px "Lucida Grande",  Sans-Serif;
  background: #ccc;
}

#page-wrap{ 
  width: 500px; 
  margin: 50px auto; 
  padding: 20px; 
  background: white; 
}

h1, h2, h3{ 
  font: 28px Georgia, Serif; 
  border-bottom: 1px dotted #ccc;
  margin: 0 0 10px 0; 
}

.clear{ 
  clear: both; 
}

input[type="text"], textarea{ 
  padding: 3px; 
  border: 1px solid #666; 
  width: 350px;	
  margin: 0 0 15px 0; 
}

input[type="text"]{ 
  font: 28px Georgia, Serif; 
}

textarea { 
  height: 100px; 
  font: 12px "Lucida Grande", Sans-Serif; 
}

label 	{ 
  background: #666; 
  color: white; 
  padding: 2px 6px; 
}

.post{ 
  margin: 0 0 20px 0; 
}

Archivo index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <title>Aprendiendo PHP</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
  	<div id="page-wrap">
    <?php
    
      include_once('class/simpleCMS.php'); // incluimos el archivo de clase
      $obj = new simpleCMS(); // creamos un objeto de la clase de gestión
  ?>
   </div>
  </body>
</html>

Veamos cómo funcionará esto. Al cargar el sitio, se cargará el archivo index.php. Por ahora estará vacío, hemos añadido la clase y creado el objeto. Este objeto tiene métodos que llamaremos cuando los necesitemos. Este momento lo definiremos usando condiciones con if.

Ahora dejemos de lado los archivos creados y entendamos las variables globales $_GET y $_POST.

Variable global $_GET

Los formularios HTML tienen un atributo llamado method (method='get' o method='post'), dependiendo del método elegido, los datos del formulario se almacenarán en la variable global $_GET o $_POST. Veamos un ejemplo:

<form action="welcome.php" method="get">
Nombre: <input type="text" name="fname" />
Edad: <input type="text" name="age" />
<input type="submit" />
</form> 

Cuando pulsamos el botón submit, vamos a la página:

http://sitename/welcome.php?fname=Peter&age=37

Así se forma la variable $_GET, es decir, después del signo de interrogación se encuentran sus valores:

<?php
print $_GET['fname'];
print $_GET['age'];
?>

La variable $_GET es un array con los valores de la URL. Podemos pasar datos entre páginas incluso sin formularios, por ejemplo si vamos a:

http://sitename/example.php?number=45

Y ejecutamos este script:

<?php
  print $_GET['number'];
?>

Se mostrará el número de la URL.

Variable global $_POST

La variable $_POST se utiliza en formularios igual que $_GET. Veamos un ejemplo similar.

Hagamos un formulario simple con un campo de nombre y uno de mensaje.

<form action="welcome.php" method="post">
Nombre: <input type="text" name="fname" />
Edad: <input type="text" name="age" />
<input type="submit" />
</form> 

Al hacer clic en el botón submit, vamos a:

http://sitename/welcome.php

Y ahora accedemos a la variable $_POST:

<?php
print $_POST['fname'];
print $_POST['age'];
?>

La diferencia con $_GET es que los datos de $_POST no aparecen en la URL. No se pueden ver, solo se accede a ellos desde PHP.

Ahora vamos a crear el formulario para añadir mensajes. Usaremos el método POST para enviar datos, y el método GET para gestionar el sitio:

public function display_admin() { // método para ingresar mensaje	
  $content = '';
  $content .= '<form action="' . $_SERVER['PHP_SELF'] . '" method="post">';
  $content .= '<label for="title">Nombre:</label><br />';
  $content .= '<input name="title" id="title" type="text" maxlength="150" />';
  $content .= '<div class="clear"></div>';
  $content .= '<label for="bodytext">Mensaje:</label><br />';
  $content .= '<textarea name="bodytext" id="bodytext"></textarea>';	
  $content .= '<div class="clear"></div>';	
  $content .= '<input type="submit" value="Agregar mensaje" />';	
  $content .= '</form>';		
  $content .= '<p><a href="/index.php">Volver a la página principal</a></p>';    
  return $content;  
}

Reemplaza el método display_admin() por el código anterior. Este código se mostrará cuando se deba agregar una entrada. Pero por defecto deben mostrarse los mensajes. Definimos que el formulario se mostrará cuando en la URL exista la variable admin = 1. Es decir, la URL será:

http://test/index.php?admin=1

Ahora modificamos index.php:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
  "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="ru" lang="ru" dir="ltr">
  <head>
	<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>Aprendiendo PHP</title>
    <link rel="stylesheet" type="text/css" href="style.css" />
  </head>
  <body>
  	<div id="page-wrap">
    <?php
    
      include_once('class/simpleCMS.php'); // incluimos la clase
      $obj = new simpleCMS(); // creamos el objeto

      if( $_GET['admin'] == 1 ){ // si en la URL hay admin
	    print $obj->display_admin(); // mostramos el formulario
	  }else{
	    print $obj->display_public(); // mostramos los mensajes
	  }
     
    ?>	  
	</div>
  </body>
</html>

Y ahora modificamos el método que muestra los mensajes:

  public function display_public() { // método para mostrar mensajes
    $content = '';
	$content .= '<p><a href="/index.php?admin=1">Agregar mensaje</a></p>';
    return $content;
  }

Añadimos un enlace a la página con el parámetro para ir al formulario.

Si al cargar la página ves caracteres extraños, crea un archivo .htaccess (en Windows puede ser complicado, así que copia uno ya existente y vacíalo), y añade esta línea:

AddDefaultCharset utf-8

Esto forzará a tu servidor a trabajar en UTF-8.

Ahora ya tenemos un formulario que envía datos a otra página. Puedes comprobar su funcionamiento cambiando el método a GET:

$content .=	'<form action="' . $_SERVER['PHP_SELF'] . '" method="get">';

Ahora index.php recibirá parámetros del formulario. Procesaremos estos parámetros en la siguiente lección, cuando aprendamos a trabajar con archivos y guardar datos en ellos.

Прикрепленные файлы