Sesión 1: PHP
¿Qué es PHP?
Acrónimo recursivo en inglés de PHP: Hypertext Preprocessor (preprocesador de hipertexto), es un lenguaje de programación de propósito general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en un documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera el HTML resultante.
Caracteristicas
Orientación de programación
Se utilizan las funciones disponibles en la biblioteca MySQLi:
Manejo de formularios
La solicitud GET codifica los parámetros del formulario en la dirección URL en lo que se llama una cadena de consulta, el texto que sigue al carácter ? es la cadena de consulta:
Ejemplo práctico (Laboratorio 3)
El desarrollo del laboratorio 3 consistió en, por medio de una página construida en php, interactuar con una base de datos, donde se le diera persistencia a una tabla.
Primeramente, se definió una php con la información necesaria para realizar la conexión con la base de datos:
Luego, se utilizó otro documento php que contuviera la forma de la consulta de la base de datos:
Luego, un documento que realizara la trasacción del método post para obtener la información dentro del form:
Por último, la construcción del form con todos los elementos para la efectuar la captura de información:
Referencias bibliográficas:
PHP | 18 características de PHP | Utilidades en PHP que todo desarrollador debe conocer | Grandes webs que utilizan Php | Tipos de datos en PHP | Operadores de comparación | Procesamiento de formularios
Acrónimo recursivo en inglés de PHP: Hypertext Preprocessor (preprocesador de hipertexto), es un lenguaje de programación de propósito general de código del lado del servidor originalmente diseñado para el desarrollo web de contenido dinámico. Fue uno de los primeros lenguajes de programación del lado del servidor que se podían incorporar directamente en un documento HTML en lugar de llamar a un archivo externo que procese los datos. El código es interpretado por un servidor web con un módulo de procesador de PHP que genera el HTML resultante.
Caracteristicas
- Lenguaje del lado del servidor mas extendido en la web.
- Potente y simple.
- Gran comunidad de soporte.
- Open source.
- Es seguro.
- Disponible en casi todos los servicios de web hosting.
- Es gratis.

- Multiplataforma.
- Estilo de programación totalmente libre.
- Programación estructurada.
- Programación orientada a objetos.
- Filosofía de código abierto.
- Multitud de herramientas, librerias y frameworks gratuitos.
- Funciones de correo electrónico.
- Administración de usuarios.
- Creación y uso de plantillas.
- Editores de texto.
- Gestión de bases de datos.
- Gestión de archivos.
- Tramiento de imagenes.
- Manejo de cookies, sesiones y url.
- Ventajas:
- Es un lenguaje multiplataforma.
- Completamente orientado al desarrollo de aplicaciones web dinámicas con acceso a información almacenada en una Base de Datos.
- El código fuente escrito en PHP es invisible al navegador y al cliente ya que es el servidor el que se encarga de ejecutar el código y enviar su resultado HTML al navegador. Esto hace que la programación en PHP sea segura y confiable.
- Capacidad de conexión con la mayoría de los motores de base de datos que se utilizan en la actualidad, destaca su conectividad con MySQL y PostgreSQL.
- Capacidad de expandir su potencial utilizando la enorme cantidad de módulos (llamados ext's o extensiones).
- Desventajas:
- Como es un lenguaje que se interpreta en ejecución para ciertos usos puede resultar un inconveniente que el código fuente no pueda ser ocultado. La ofuscación es una técnica que puede dificultar la lectura del código pero no la impide y, en ciertos casos, representa un costo en tiempos de ejecución.
- El lugar mas seguro para ejecutar una aplicacion es en un servidor propio, por lo cual si un cliente o usuario requiere su codigo en su pc, tendriamos que dejar su codigo, sin manera de ocultarlo, aunque hay muchas aplicaciones que nos ayuda a encriptar el codigo fuente.
- Se debe saber cuando menos HTML para poder hacer un trabajo medianamente funcional.
- Si no es bien configurado correctamente dejas abiertas muchas brechas de seguridad.
- Se necesita instalar un servidor web.
- WordPress.
- Joomla!.
- Drupal.
- Prestashop.
- Woocommerce.
- Magento.
- Yahoo INC.
- Wikipedia.
- Friendster.
- Facebook.

- Un script PHP se escribe en cualquier parte del documento HTML.
- Inicia con <?php y termina con ?>.
- No se sensitivo a mayúscula a excepción de las variables.
- Las variables se inician con $.
- Las instrucciones deben terminar con ;.
- Tipos de datos:
- Escalares:
- boolean: Almacenan valores verdadero o falso (true / false).
- integer: Números enteros.
- float: Números con decimales, usando el punto como separador decimal.
- string: Cadenas de texto.
- Compuestos:
- array: Usados para almacenar varios valores.
- object: Almacena objetos en PHP.
- Especiales:
- resource: hace referencia a recursos tales como archivos abiertos, conexiones establecidas con bases de datos, etc.
- null: indique el valor está vacío (no contiene nada).
- Operadores aritméticos:
- Adición (+): $x + #y
- Sustracción (-): $x - $y
- Multiplicación (*): $x * $y
- División (/): $x / $y
- Módulo (%): $x % $y
- Exponencianción (**): $x ** $y
- Operadores de comparación:
- Igual: $a == $b
- Idéntico: $a === $b
- Diferemte: $a != $b
- Diferente: $a <> $b
- No idéntico: $a !== $b
- Menor que: $a < $b
- Mayor que: $a > $b
- Menor o igual que: $a <= $b
- Mayor o igual que: $a >= $b
Se utilizan las funciones disponibles en la biblioteca MySQLi:
- mysqli(): Se indican: servidor, usuario, password y esquema de base de datos.
- conn->close(): Para desconectar la comunicación luego de la transacción.
<?php $servername = "localhost"; $username = "usuario"; $password = "contrasenia"; $dbname = "phpmyadmin"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } echo "Connected successfully <br>"; $sql = "SELECT id, nombre, correo, website FROM Contactos"; $result = $conn->query($sql); echo "Retrieving data from Contactos <br>"; if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "Id: " . $row["id"]. " - Name: " . $row["nombre"] . " "; echo "- Correo: " . $row["correo"]. " - WebSite: " . $row["website"]."<br>"; } } else { echo "0 results"; } echo ("Closing connection"); $conn->close(); ?>
Manejo de formularios
- Métodos:
La solicitud GET codifica los parámetros del formulario en la dirección URL en lo que se llama una cadena de consulta, el texto que sigue al carácter ? es la cadena de consulta:
/path/to/page.php?keyword=bell&length=3Una solicitud POST pasa los parámetros del formulario en el cuerpo de la solicitud HTTP, dejando intacta la URL. El tipo de método que se utilizó para solicitar una página PHP está disponible a través de $_SERVER[“REQUEST_METHOD”].
if ($_SERVER['REQUEST_METHOD'] == 'GET') { // handle a GET request } else { die("You may only GET this page."); }
- Parámetros:
<html> <head><title>Formulario</title></head> <body> <form action="separar.php" method="POST"> Ingrese una palabra: <input type="text" name="word"/><br/> Largo de las separaciones: <input type="text" name="number" /><br/> <input type="submit" value="Dividir"> </form> </body> </html>El programa PHP para procesar dicho formulario sería el siguiente:
$word = $_POST['word']; $number = $_POST['number']; $chunks = ceil(strlen($word) / $number); echo "The {$number}-letter chunks of '{$word}' are: \n"; for ($i = 0; $i < $chunks; $i++) { $chunk = substr($word, $i * $number, $number); printf("%d: %s \n", $i + 1, $chunk); }
Ejemplo práctico (Laboratorio 3)
El desarrollo del laboratorio 3 consistió en, por medio de una página construida en php, interactuar con una base de datos, donde se le diera persistencia a una tabla.
Primeramente, se definió una php con la información necesaria para realizar la conexión con la base de datos:
<?php define('DB_HOST','localhost'); define('DB_NAME','***'); define('DB_USER','***'); define('DB_PASSWORD','***'); class DB { private static $db = null; private static $pdo; final private function __construct() { try { self::getDB(); } catch (PDOException $e) { } } public static function getInstance() { if (self::$db === null) { self::$db = new self(); } return self::$db; } public function getDB() { if (self::$pdo == null) { self::$pdo = new PDO( 'mysql:dbname=' . DB_NAME . ';host=' . DB_HOST . ';', DB_USER, DB_PASSWORD, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8") ); self::$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); } return self::$pdo; } final protected function __clone() { } function _destructor() { self::$pdo = null; } } ?>
Luego, se utilizó otro documento php que contuviera la forma de la consulta de la base de datos:
<?php require 'ClassConnection.php'; class Suceso { function __construct() { } public static function crearSuceso($pTitular, $pDescripcion, $pSospechosos, $pFecha, $pHora, $pUbicacion) { $query="INSERT INTO SUCESO (IdUsuario, IdGrupo, Titular, Descripcion, Sospechosos, Fecha, Hora, Ubicacion, ImgGPS) values('01','01','{$pTitular}','{$pDescripcion}','{$pSospechosos}', '{$pFecha}', '{$pHora}', '{$pUbicacion}', 'Proximamente')"; $command = DB::getInstance()->getDB()->prepare($query); $command->execute(); return TRUE; } } ?>
Luego, un documento que realizara la trasacción del método post para obtener la información dentro del form:
<?php require 'ClassSuceso.php'; if($_SERVER['REQUEST_METHOD'] == 'POST') { // $pTitular, $pDescripcion, $pSospechosos, $pFecha, $pHora, $pUbicacion $titular = $_POST['titular']; $descripcion = $_POST['descripcionSuceso']; $sospechosos = $_POST['descripcionSospechosos']; $fecha = $_POST['fecha']; $hora = $_POST['hora']; $ubicacion = $_POST['ubicacionTxt']; try { $ret = Suceso::crearSuceso($titular, $descripcion, $sospechosos, $fecha, $hora, $ubicacion); if ($ret) { $data['status']='true'; $data['value']=$ret; print json_encode($data); } else { print json_encode(array('status'=>'false654')); } } catch (PDOException $e) { print json_encode(array('status'=>$e)); } } ?>
Por último, la construcción del form con todos los elementos para la efectuar la captura de información:
<div class="main"> <div class="jumbotron vertical-center"> <div class="container"> <form id="crearSucesoForm" action="procesarCrearSuceso.php" method="post" enctype="multipart/form-data"> <h1>Publicar suceso:</h1> <!-- One "tab" for each step in the form: --> <div class="tab"> <p><input placeholder="Titular" oninput="this.className = ''" name="titular"></p> <p><textarea rows="4" cols="50" name="descripcionSuceso" form="crearSucesoForm" placeholder="Descripción del suceso"></textarea></p> <p><textarea rows="4" cols="50" name="descripcionSospechosos" form="crearSucesoForm" placeholder="Descripción de los sospechosos"></textarea></p> <p><input id="date" type="date" name="fecha"></p> <p><input type="time" name="hora"></p> </div> <div class="tab"> <p><textarea rows="4" cols="50" name="ubicacionTxt" form="crearSucesoForm" placeholder='Ubicación del acontecimiento'></textarea></p> </div> <div style="overflow:auto;"> <div style="float:right;"> <button type="button" id="prevBtn" onclick="nextPrev(-1)">Anterior</button> <button type="button" id="nextBtn" onclick="nextPrev(1)">Siguiente</button> </div> </div> <!-- Circles which indicates the steps of the form: --> <div style="text-align:center;margin-top:40px;"> <span class="step"></span> <span class="step"></span> </div> </form> </div> </div> </div>
Referencias bibliográficas:
PHP | 18 características de PHP | Utilidades en PHP que todo desarrollador debe conocer | Grandes webs que utilizan Php | Tipos de datos en PHP | Operadores de comparación | Procesamiento de formularios
Comentarios
Publicar un comentario