appPHP — Teoría, Código, Videos y Cuestionario

PHP clásico, claro y sin rodeos: lo que hay que saber para web del lado del servidor.

¿Qué es PHP?

PHP es un lenguaje de script del lado del servidor. Corre en el servidor, genera HTML y lo envía al navegador.

Conceptos básicos

Fundamentos

  • Delimitadores: <?php ... ?>
  • Variables con $ (tipado dinámico): $nombre, $edad
  • Salida: echo / print (concatenación con .)
  • Superglobales: $_GET, $_POST, $_SERVER, $_SESSION, $_COOKIE, $_FILES

Arquitectura simple

  • Servidor web (Apache/Nginx) + PHP + (opcional) BD (MySQL).
  • Archivos con extensión .php en un servidor (XAMPP, Laragon, hosting).
  • No esperes que PHP “corra” abriendo el archivo en el explorador (usa servidor).
Sesiones, formularios y seguridad mínima

Sesión

  • session_start() antes de usar $_SESSION.
  • Cierra sesión: session_unset() + session_destroy().

Seguridad

  • Escapa salida HTML: htmlspecialchars($v, ENT_QUOTES, 'UTF-8').
  • SQL: siempre sentencias preparadas (PDO/mysqli).
  • Subidas: valida tipo/tamaño y usa move_uploaded_file.

Tip Primero funciona, luego mejoras. Pero jamás sin prepared statements.

Ejemplos de Código + Demos (lectura)

Hola mundo, variables y control

hola.php

<!DOCTYPE html>

<html lang="es">

<head><meta charset="UTF-8"><title>Hola PHP</title></head>

<body>

<?php

  $nombre = "Freddy";

  $edad = 46;

  echo "Hola, " . htmlspecialchars($nombre) . ". Tienes " . $edad . " años.";

?>

</body>

</html>

Control y arrays

<?php

$nums = [10, 20, 30];

$prom = array_sum($nums)/count($nums);

if($prom >= 20){

  echo "Promedio: $prom (ok)";

}else{

  echo "Promedio: $prom (bajo)";

}

foreach($nums as $n){ echo "<br>Número: $n"; }

?>
Formularios (POST) y sesiones

form.html

<form action="procesa.php" method="post">

  <input name="nombre" placeholder="Nombre">

  <button type="submit">Enviar</button>

</form>

procesa.php

<?php

session_start();

$nombre = $_POST["nombre"] ?? "";

$nombre = htmlspecialchars(trim($nombre), ENT_QUOTES, "UTF-8");

$_SESSION["usuario"] = $nombre;

header("Location: bienvenida.php");

exit;

bienvenida.php

<?php

session_start();

$u = $_SESSION["usuario"] ?? "invitado";

?>

<h2>Hola, <?= htmlspecialchars($u, ENT_QUOTES, "UTF-8") ?></h2>
Base de datos (PDO y mysqli)

PDO + prepared

<?php

$dsn = "mysql:host=localhost;dbname=tienda;charset=utf8mb4";

$user = "root"; $pass = "";

$options = [ PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION ];

$pdo = new PDO($dsn, $user, $pass, $options);



$sql = "SELECT id, nombre, precio FROM productos WHERE precio > :min ORDER BY nombre";

$st = $pdo->prepare($sql);

$st->execute([":min" => 10000]);

$rows = $st->fetchAll(PDO::FETCH_ASSOC);

foreach($rows as $r){

  echo $r["id"]." - ".htmlspecialchars($r["nombre"])." $".$r["precio"]."<br>";

}

mysqli (procedimental)

<?php

$cn = mysqli_connect("localhost","root","","tienda",3306);

if(!$cn){ die("Error: ".mysqli_connect_error()); }

mysqli_set_charset($cn,"utf8mb4");



$min = 10000;

$st = mysqli_prepare($cn, "SELECT id,nombre,precio FROM productos WHERE precio > ? ORDER BY nombre");

mysqli_stmt_bind_param($st, "i", $min);

mysqli_stmt_execute($st);

$res = mysqli_stmt_get_result($st);

while($r = mysqli_fetch_assoc($res)){

  echo $r["id"]." - ".htmlspecialchars($r["nombre"])." $".$r["precio"]."<br>";

}

mysqli_close($cn);

Tip Para practicar: XAMPP/Laragon; en producción: errores off, usuarios mínimos y SSL.

Videos recomendados

Como usar PHP para conectar con una BD y hacer un CRUD.

Introducción a PHP

Formularios, sesiones y cookies

PDO/mysqli con MySQL

Cuestionario (5 preguntas al azar)

Pulsa “Nuevo cuestionario” para generar 5 preguntas del banco de 25. Responde y “Calificar”.

Banco: 25