Skip to content

🐘 Whether you are an experienced programmer or not, this website is intended for everyone who wishes to learn the PHP programming language. 🐘

License

Notifications You must be signed in to change notification settings

brian-emarquez/PHP-Course

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Learn PHP - MySQL Beginner To Advanced | PHP - MySQL Training 🐘 

Stars Forks

Tabla de contenidos

Numeration Check Topic Quantization Edit Gitpot Downloads link
A ✔️ Que es PHP - - ⬅️ Atras
B ✔️ Cualidades - - ⬅️ Atras
C ✔️ Desarrollo Web - - ⬅️ Atras
001 ✔️ Servidores - - ⬅️ Atras
002 ✔️ La Web Dinamica - - ⬅️ Atras
003 ✔️ XAMPP - - ⬅️ Atras
004 ✔️ Servidor Portable - - ⬅️ Atras
005 ✔️ Post Instalacion - - ⬅️ Atras
006 ✔️ Entorno de Desarrollo - - ⬅️ Atras
007 ✔️ Codigo - - ⬅️ Atras
008 ✔️ Cadenas de texto - - ⬅️ Atras
009 ✔️ Heredoc - - ⬅️ Atras
010 ✔️ Niveles de Error - - ⬅️ Atras
011 ✔️ Operadores - - ⬅️ Atras
012 ✔️ Operadores de Comparación - - ⬅️ Atras
013 ✔️ Operador Ternario - - ⬅️ Atras
014 ✔️ Operador "Nave Espacial - - ⬅️ Atras
015 ✔️ Ciclos - - ⬅️ Atras
016 ✔️ Matrices - - ⬅️ Atras
017 ✔️ Array Asociativo - - ⬅️ Atras
018 ✔️ Iteración de Arrays asociativos - - ⬅️ Atras
019 ✔️ Funciones para el manejo de Arrays - - ⬅️ Atras
020 ✔️ Paso de datos entre documentos GET y POST - - ⬅️ Atras
021 ✔️ Formularios - - ⬅️ Atras
022 ✔️ Formularios II - - ⬅️ Atras
023 ✔️ Envio de checkbox mediante Formularios - - ⬅️ Atras
024 ✔️ Navegación de una web usando templates - - ⬅️ Atras
025 ✔️ Inclusion de plantillas con include y requires - - ⬅️ Atras
026 ✔️ Creando un archivo de setup para la web - - ⬅️ Atras
027 ✔️ Verificaciones Obligatorias en el envio de datos - - ⬅️ Atras
028 ✔️ Debbug - - ⬅️ Atras
029 ✔️ EL Array SERVER - - ⬅️ Atras
030 ✔️ Leer y escribir archivos en el servidor - - ⬅️ Atras
031 ✔️ Leer y escribir archivos en el servidor - - ⬅️ Atras
032 ✔️ Recorrer archivos específicos del servidor
033 ✔️ Obtener informacion de los archivos - - ⬅️ Atras
035 ✔️ Upload de archivos con formularios - - ⬅️ Atras
036 ✔️ Validación de los archivos subidos por formularios - - ⬅️ Atras
037 ✔️ Libreria GDLibrary Redimensionar imagenes - - ⬅️ Atras
038 ✔️ Libreria GDLibrary Agregar una marca de agua - - ⬅️ Atras
039 ✔️ Manipulacion de etiquetas HTML desde PHP - - ⬅️ Atras
040 ✔️ Generar subcadenas de texto - - ⬅️ Atras

Programacion PHP

Numeration Check Topic Quantization Edit Gitpot Downloads link
040 ✔️ Manipulación de los contenidos de los String - - ⬅️ Atras
041 ✔️ Recortar espacios en los String - - ⬅️ Atras
042 ✔️ Buscar y reemplazar cadenas de texto - - ⬅️ Atras
043 ✔️ Generar subcadenas de texto - - ⬅️ Atras
044 ✔️ Formatear cadenas de texto - - ⬅️ Atras
045-051 ✔️ Espresiones Regulares - - ⬅️ Atras

Bases de Datos

Numeration Check Topic Quantization Edit Gitpot Downloads link
052 ✔️ Bases de Datos - - ⬅️ Atras
053 ✔️ Conectarse al MySQL por CLI e IDE - - ⬅️ Atras
054 ✔️ Tablas-y-columnas-de-una-base-de-datos - - ⬅️ Atras
055 ✔️ Conectarse con ORACLE - - ⬅️ Atras
056 ✔️ Tipos de datos en MySQL - - ⬅️ Atras
057 ✔️ Anchura del tipo de datos MySQL - - ⬅️ Atras
058 ✔️ Atributo de las columnas en MSQL - - ⬅️ Atras
059 ✔️ Coneccion con MSQL - - ⬅️ Atras

Doc

Numeration Check Topic Quantization Edit Gitpot Downloads link
A1 ✔️ Instalar PHP 8 - - ⬅️ Atras

Extra

Numeration Check Topic Quantization Edit Gitpot Downloads link
- ✔️ Play List PHP - - ⬅️ Atras

php


Que es PHP

PHP (acrónimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de código abierto muy popular especialmente adecuado para el desarrollo web y que puede ser incrustado en HTML.

Cualidades

  • Desarrollo de web dinamico
  • No tiene costo
  • Multiplataforma
  • Servicio Automatizado

Desarrollo Web

LADO DEL CLIENTE LADO DEL SERVIDOR
HTML PHP
CSS PHP
JAVASCRIPTS PHP

Servidores

WampServer es un entorno de desarrollo web de Windows. Te permite crear aplicaciones web con Apache2, PHP y una base de datos MySQL. Además, PhpMyAdmin le permite administrar fácilmente sus bases de datos.

La Web Dinamica

  • Una Página web dinámica genera su contenido según la petición de un usuario o contexto de la misma.
  • Todo desde la programación (con las estructura y funciones del lenguaje)
  • La Información accedida puede administrarse desde una base de datos.

XAMPP

Paquetes instaladores servidores

  • WAMP - WampServer es una plataforma de desarrollo web en Windows que le permite crear aplicaciones web dinámicas con Apache2, PHP, MySQL y MariaDB.

    • Solucion Error MSVCR110.edll
  • MAMP - MAMP instala un entorno de servidor local en cuestión de segundos en su computadora Windows o macOS. MAMP es gratuito y se instala fácilmente.

  • XAMP - XAMPP es una distribución de Apache fácil de instalar que contiene MariaDB, PHP y Perl. Simplemente descargue e inicie el instalador. Es fácil.

php

Servidor Portable

  • ZWAMP (Portable oficial, Windows) - Un paquete de servidor web ligero de instalación cero que se ejecuta en Windows. El proyecto tiene como objetivo proporcionar las últimas versiones de producción / estables de Apache, MySQL, PHP, Adminer, MongoDB, MemCached, SQLite, eAccelerator y Alternative PHP Cache (APC) para impulsar el rendimiento del servidor.
  • ZWAMP alterado (No oficial) - Un paquete Portable Modificado

Post Instalacion

WAMPP C:\wamp\htdocs
XAMPP C:\xampp\htdocs
ZWAMP /drive/web
MAMP /Applications/MAMO/htdocs
LINUX /var\www/html

Entorno de Desarrollo

  • Visual Studio Code
  • Sublime Text
  • Brackets
  • Notepad++
  • DreamWeaver
  • TextMate

Codigo

Apertura nativa de PHP

<?php
  CODIGO PHP
?>

Apertura corta (poco segura)

<?
  CODIGO PHP
?>

Cadenas de texto

  • Toda cadena de texto debe mostrarse en trer comilllas (sean dobles o simples)

  • Cualquier Srting o que no esté "encomilado " PHP tratára de evauarlo como

    • Una Palabre reservada del lenguaje
    • Una constante (aunque no se encuntre en mayúscula)

Heredoc

  • Heredoc es una manera "Alternativa" de delimitar y finalizar de un string.

  • Tanto para hacer echo o guardar es una varable, se inicia con la secuencia de trers signos menores <<<

  • Junto a los <<< viene una secuencia de caracteres delimitadores a tu eleccion

$lista = <<<HEREDOC
    <ul>
        <li>$alumno1, el el primer alumno </li>
        <li>$alumno2, el el segundo 'mejor' alumno </li>
        <li>$alumno3, es el "ultimo alumno </li>
    </ul>

HEREDOC;
?>

Niveles de Error

  • E_ERROR : Error grave (fatal error)
  • E_WARNING: Error leve (non-fatal error)
  • E_PARSE: Error sintactico o de parseo
  • E NOTICE: Avisos de Interprete de PHP

Operadores

  • Las variables numericas se pueden modificar con uno operadores especiales:
  • INCREMENTO (de uno en uno): variable++ ✔️ variable = variable +1
  • DECREMENTO (de uno en uno): variable-- ✔️ variable = variable -1
  • INCREMENTO (mas de uno): variable += 5 ✔️ variable = variable +5
  • DECREMENT (mas de uno): variable -= 5 ✔️ variable = variable -5
Carpeta Link Home Code Version Estado
Operadores ✔️ ⬅️Atras yes yes ✔️
Operador Ternario ✔️ ⬅️Atras yes yes ✔️

Operadores de Comparación

Partiendo de valores de cualquier tipo , nos devolverá un resultado de tipo Booleano

✨ Mayor que: >
✨ Menor que: <
✨ Mayor o Igual que: >=
✨ Menor o igual que: <=
✨ Comparacion: ==

Operador Ternario

Ejemplo

$logueado = true;

echo $logueado ==true ? # pregunta para hacer una evaluacion
    'usuario logueado ' :
    'usuario sin autentificar';
?>
Carpeta Link Home Code Version Estado
Operador Ternario ✔️ ⬅️Atras yes yes ✔️

Operador "Nave Espacial"

Introducido en PHP 7 (no existe en las versiones anteriores), este operador permite saber si el primer valor es menor , igual o mayor al segundo valor.

php

Ciclos

  • El Ciclo de repeticion for es uan esctructura finita, Al escribir el codigo le indicamos a PHP la cantidad de veces que debe ejecutarse.

  • Para eso le debemos indicar tres datos al crearlo:

    • Inicio del ciclo: Inicializando una variable de tipo number
    • Limite de las repeteciones: Una Comparacion (de cualquie tipo) que evaluae el valor de esa variable.
    • Desplazamiento de la variable: Cualquier operacion aritmetica que modifique la variable inicial (de forma que llegue al limite)
Carpeta Link Home Code Version Estado
Ciclos While, Do While y For ✔️ ⬅️Atras yes yes ✔️
CIclo FOR-EACH ✔️ ⬅️Atras yes yes ✔️

Matrices

  • Una matriz es un array que tiene otros arrays como elementos.
  • Se utiliza cuando por cada elemento del array principal necesitamos manipular mas informacion.
$elementos = array(
    /*0*/ array(
        /*0*/'input',
        /*1*/'text',
        /*2*/'nombre',
        /*3*/'Tu nombre completo' //placeholder
    ),
    /*1*/ array(
        'input',
        'email',
        'corre',
        'usuario@email.com'
    ),
    /*2*/ array(
        'select',
        'motivo'
    )
);
//var_dump($elementos);
//elemento 3 y fila 3
echo $elementos[0][3]
Carpeta Link Home Code Version Estado
Matrices ✔️ ⬅️Atras yes yes ✔️
Matrices II ✔️ ⬅️Atras yes yes ✔️

Array Asociativo

  • Un Array asociativo es el que en lugar de indices basados en numeros los tiene con cadenas de texto

  • de esa manera los indices estará entre comillas.

  • Esto permite salir de las abstracion de lo indices 0,1,2 y facilita identificar la informacion que estamos manejando

Instanciar un array asociativo

  • En PHP tenemos dos maneras de crear un array con indices asociativos.
  • la Primera opcion es crear el array vacio y luego ir creado indice por indice (de la misma manera asignabamos los numericos).

Ejemplo

<?php 

$select = array( );
$select['name'] = 'motivo';
$select['required'] = false;
$select['tabindex'] = 2;


//var_dump($select);

$elementos = array( 
	/*0*/ array( 
		'etiqueta' => 'input',
		'type'  => 'text',
		'name'  => 'nombre',
		'placeholder' =>  'Tu nombre completo',
		'texto'  => 'Tu nombre'
	),
	/*1*/ array( 
		'etiqueta' => 'input',
		'type' => 'email',
		'name' => 'correo',
		'placeholder' => 'usuario@email.com',
		'texto' => 'Tu correo'
	),
	/*2*/ array( 
		'etiqueta' => 'select',
		'name' => 'motivo',
		'texto' => 'Motivo del mensaje',
		'opciones' => array( 'contacto', 'sugerencia', 'reclamo' )
	),
	array( 
		'etiqueta' => 'input',
		'type' => 'checkbox',
		'name' => 'item',
		'texto' => 'Acepto los terminos y condiciones'
	)
	
);
for( $i = 0; $i < count($elementos); $i++ ){
    	
	echo '<p>'.$elementos[$i]['texto'].'</p>';
	
	if( $elementos[$i]['etiqueta'] == 'input' ){
        echo '<input type="'.$elementos[$i]['name'].'" name="'.$elementos[$i]['name'].'" />';
        
	}else if( $elementos[$i]['etiqueta'] == 'select' ){
        echo '<select name="'.$elementos[$i]['name'].'">';
        
        //motivo de mensaje
		for( $x = 0; $x < count ($elementos[$i]['opciones'] ); $x++ ){
			echo '<option>';
			echo $elementos[$i]['opciones'][$x];
			echo '</option>';
			
		}
		echo '</select>';
	}
	
	echo '<hr />';
}
Carpeta Link Home Code Version Estado
Array Asocitivo ✔️ ⬅️Atras yes yes ✔️

Iteración de Arrays asociativos

Utilidad del Array Asciativo

  • La ventaja de Array asiciativo está en la posibilidad de aprovechar el indice u el valor para tener dos datos por casa elemento.

  • Y la Ventaja es que la mayoria de los componentes en web se pueden reducir a dos datos:

    • En las imagenes: La ruta y el texto alternativo
    • En lo input de tipo radio/checkbox: el valor y su label (lo mismo para los option de un select).

Recorrer Asociativos

  • Es la estructura foreach, que recorre todo los elementos de un array automaticamente.

Estructura Foreach

  • El foreach requiere dos o tres datos entre sus parentesis
  • primero el array que queremos iterar.
  • Segundo. optativo una variable que capturará los indices de cada vuelta del ciclo de repeticion
  • tercero, una variable que capturara los valores de cada vuelta del foreach.
Carpeta Link Home Code Version Estado
Iteración de Arrays asociativos ✔️ ⬅️Atras yes yes ✔️

Funciones para el manejo de Arrays

Funciones para el manejo de Arrays

  • Los Array tiene varias funciones para manipular sus elementos.

  • Por ejemplo , las funcion array_push() que nos permite agregar uno o varios elemtos al final del array.

  • si queremos agregar al principio del array, podemos usar la funcion array_unshift()

  • Podemos Eliminar un elemento por medio del array_pop()

  • si queremos agregar al final del array, podemos usar la funcion array_unshift()

  • y lo que existe una funcion llamada array_splice() que permite agregar o quitar elementos en cualquier lugar del arrat

Verificar el Array

  • Podemos verificar si el array tione o no un determado elemento.

  • En este caso sera una funcion distinta segun se trate de un valor o de un indice

  • la funcion in_array() recibe un array y un valor, devolverá verdadero si el valor existe dentro del array.

  • La funcion isset() , verifica si existe un determinado indice adentro del array tanto el array como el indoce que estamos verificando.

Ordenar los Arrays

  • La Funcion sort() permite ordenar un array por su valores (de mennor a mayor)
  • La Funcion rsort() hace el ordenamiento inverso (de mayor a menor)
  • La Funcion ksort() ordena el array por sus indices en orden ascendente.
  • La Funcion krsort() hace el ordenamiento del array seguin los indices en orden inverso.

De array a String

  • Podemos unir todos lo elementos de un array en una unica cadena de texto por medio de la funcion implode() que recibe dos datos.

  • El camino inverso es el explode(), ue separa una cadena de texto en un array. tambien recibe dos datos.

Obtener un numero al azar

  • PHP tiene la funcion rand() para sacar un valor al azar, que recibe dos datos entre parentesis
Carpeta Link Home Code Version Estado
Funciones para el manejo de Arrays ✔️ ⬅️Atras yes yes ✔️

Paso de datos entre documentos GET y POST

Paso de datos

  • Cuando creamos una variable, la misma solo existe en el dcumento donde fue creada
  • Al hacer click en otro vinculo, esta inforacion se elimina de la memoria
  • Para pasar un dato (o un valor)de un archivo a otro, PHP nos ocrece 3 tecnicas:
  • Enviar Datos por GET ➜ Por Formularios y vinculos
  • Enviar Datos pro POST ➜ Formularios unicamente
  • USAR VARIABLES DE SESION ➜

Diferencia entre GET Y POST

GET

  • El Envio de dato por GET tiene 3 desventajas importantes sobre POST.

    • La Informacon es enviada de forma visible por URL, bajo la estructura
    htttp://dominio.com/carpeta/archivo.php? variable1=valor&variable2=valor2
  • Tiene un limite de 2048 caracteres, desde el principio al final(incluye http)

  • No permite adjuntar archivos (no reconoce el input de tipo file)

  • Tiene mejor Performanse.

  • Se puede guardar en favoritos o compartir en redes sociales.

POST

  • No es visible y es para gran cantidad de documento
  • Forma parte de encabesado (error 404)
Carpeta Link Home Code Version Estado
Paso de datos entre documentos (GET y POST) ✔️ ⬅️Atras yes yes ✔️

Formularios

  • Los Formularios permiten el envio de tanto GET como por POST
  • Eso se define con el atributo method que tendra uno de eso dos valores.
  • La Informacion ingresada sera enviada al documento que haya sido indicado en el atributo action del formulario

Atributos y controles

  • Todos los campos del formulario deben tener atributo name.
  • Cuaquier control que no tenga un name será omitido en el envio.
  • Y en en caso de los controlesa de seleccion, deberan tener un Value que sea representativo de la informacion a enviar.
  • Si un radio o ckeckbox no tiene Value, se envia el valot On (pero no dice cual es el campo que fue seleccionado).
Carpeta Link Home Code Version Estado
Formularios ✔️ ⬅️Atras yes yes ✔️

Formularios II

Recibir datos

  • Para PHP, GET y POST son arrays asociativos con la informacion enviada desde un archivo al otro.

    • para obtener los datos enviados por GET se usa $_GET[]
    • Para obtener los datos enviados por POST, $_POST[]

Entrer los corchetes va (como cadena de texto, por que es un Array Asociativo) el dato que estamos buscando:

* para los datos POST, el name del campo del formulario.
* para los datos por GET, el no,bre de la variable recopila por URL.

El action del formulario

  • El documento que procesa la informacion se conoce como "Documento de acccion"
  • Seguin el objeto del formulario , este PHP trabajará con la base de datos o enviara una notificacion por mail.
Carpeta Link Home Code Version Estado
Formularios II Procesar datos enviados ✔️ ⬅️Atras yes yes ✔️

Envio de checkbox mediante Formularios

Envio de Checkbox

  • Al igual que lo demas compos el input input de timpo checkbox debe tener un name.

  • pero cada checkbox debe tener un noombre diferente.

  • Y como ya dijimos , todo checkbox que no fue seleccionado, no se envia al action del formulario.

  • El problema es que hacer un $_POST O $_GET de un elento que no esiste genera error.

    Categorias seleccionadas: $_POST[categoria0]  $_POST[categoria1]  $_POST[categoria2] $_POST[categoria3] $_POST[categoria4]<br />
    
  • Usando la funcion isset($_POST['Nname_box']) que retornará verdadero si existe el input y falso si no existe.

Simplificar el Checkbox

  • Claro que hacer un isset() , por cada campo es aceptable con 5 o 10 checkbox.
  • En un cantidad mayor se vuelve inmanejable
if (isset($_POST['categoria0'])){
    $categorias_seccionadas .= " ".$_POST['categoria0'];
}

if (isset($_POST['categoria1'])){
    $categorias_seccionadas .= " ". $_POST['categoria1'];
}

if (isset($_POST['categoria2'])){
    $categorias_seccionadas .= " ".$_POST['categoria2'];
}

if (isset($_POST['categoria3'])){
    $categorias_seccionadas .= " ". $_POST['categoria3'];
}

if (isset($_POST['categoria4'])){
    $categorias_seccionadas .= " ".$_POST['categoria4'];
}
  • Por lo cual la solucion es hacer que el name en HTML tengan formato de array -> cbox[].
  • Para HTML es un nombre valido y PHP asume que $_POST['cbox'] es efectivamente un array, por el cual podemos recorrerlo con un for/foreach o unirlos con un implode().
Carpeta Link Home Code Version Estado
Envio de checkbox mediante Formularios ✔️ ⬅️Atras yes yes ✔️

Navegación de una web usando templates

Qué es un template

  • Un Template es cualquier fragmeto de codigo HTML cuyo contendo no definido de antemano se va a completar con ayuda de php.

  • Puede ser un Componente

  • Puede ser algo MICRO como el mail que se envia cuando un usuario completa un formulario.

Navegando por Templates

  • es no de los metodos mas usuados para optimizar las navegacion de una web -Dado que la estructura de una pagina web se repite entre todos los archivos ue nevegamos (index, categorias, ver posteo, registro), dejamos en el index.php todos lo elementos en comun (header, aside, footer)

Incluir los Templates

  • Para cargar uno de estos archovso que convertimos en template, debemos usar la funcion include() o requiere() que reciben entre parentesis la ruta para llegar al archivo que queremos incluir.

  • A nivel funcionamiento no hay diferencias entre ambas, salvo que el archivo solicitado no exita.

Carpeta Link Home Code Version Estado
Navegación de una web usando templates ✔️ ⬅️Atras yes yes ✔️

Inclusion de plantillas con include y requires

Como seleccionar el Template

  • Por Medio de include() o require() cargaremos el template que nos interesa

  • para lograrlo, vamos a tener que engiar por GER una variable que no indique que el usuario hizo click en un vinculo de la botonera

Modificar los Links

  • Ahora todos lo vinculos (de la botonera , registro, login y ver perfil ), apuntaran al INDEX.PHP por ese motivo tiene la esctructura en comun vacia.

Modificar los link

  • Ahora todos lo vinculo (de la botonera, registro, login y ver perfil), apuntarán al INDEX.PHP por que ese archivo tiene la estructra en común vacia.
  • Y cada vínculo manda por GET una variable(la misma para todos).
  • Y Por cada vinculo, solo cambia el valor que manda la variable(lo que está después del igual).

Cargar el Template

  • Para saber cuál de todos lo templates hay que incluir solo debemos evaluar el valor que tiene la variable ercibida por GET.
  • Y como puede teer muchos valores posibles )tanto como secciones existan), debemos hacer un IF o SWITCH que verifique que hemos recebido
Carpeta Link Home Code Version Estado
Inclusion de plantillas con include y require ✔️ ⬅️Atras yes yes ✔️

Creando un archivo de setup para la web

Formatos de inclusión

  • Por medio del include() o require podemos incluir archivos HTML O PHP

  • La ventaja está en que la inclusion se resuelve en el servidor, por lo cual si se incluye un archivo con extension PHP se procesa de incluirse.

  • En consecuencia , siese PHP tiene variables o funciones, ya forman parte del resto del sitio (inlusive de otros include que se haga a continuacion).

  • Esto permite desglosar en distintos modulos la programacion de la pagina web en lugar de teer un bloque demasiado extenso

Archivo de Configuracion

  • Tal es así, que una práctica recomendable es tener un archivo donde se encuentren la configuraciones basicas del sitio.

  • Esto se Extiende a la muestra de arrores , funciones , arrays, conexiones a la base de datos, zona horaria, etc.

Incluir archivos mas de unas vez

  • Desdfe la porgramacion cargar mas de una vez el mismo archivo si es necesario, pero en algunos casos eso puede generar o mostrar menos errores

  • por ejemeplo, PHP no permite redifinir las funciones(crearlas mas de una ves con la palabra reservada FUNCTION() po rque corta con un error.

  • po lo Cual INCLUDE() Y REQUIERE() tienen un funcion análoga que no cargan los archivos si ya fueron incluidos con anterioridad.

  • son las funciones INCLUDE_ONE() y REQUIERE_ONCE()

Carpeta Link Home Code Version Estado
Creando un archivo de setup para la web ✔️ ⬅️Atras yes yes ✔️

Verificaciones Obligatorias en el envio de datos

el GET puede fallar

  • Regla fundamental de PHP: No se puede hacer un GET(ni un POST) de algo que no existe , da error.

  • Y cuando el usuario accede a la web, el GET no existe (porque todavia no interactuó con ningun link)

  • el GET es un array, y las variables recibidas son indices de ese Array

  • Por lo cual se verifica con isset():

    if(isset($_GET['seccion'])) {/* Cargando el modulo*/}

Secciones invalidas

  • Dado qe el paso de datos de GET es visible y publico, un usuario puede cambiar la seccion perdida.
  • Hay que tener presente qué pasa si se pide una seccion invalida.
  • En ese caso el GET de seccion existe, pero el valor está mal.
  • Con un IF o SWITCH hemos definido qué categoria se carga ante cada valor valido.
  • Si no es ninguna válida en el ELSE o DEFAULT, se carga una seccion por defecto (que puede ser nuevamente el index, con un mensaje de error).

Marcar la seccion actual

  • Generalmente al usuario se le marca el vinvulo de la seccion donde se encuentra navegando.
  • Esto se hace un class o id que destaque ese boton por sobre los demas.

Marcar la seccion actual

  • Generalmente al usuario se le marca el vinculo de la seccion donde se encuentra novegando.
  • Esto se hace con CLASSo ID que destaque ese boton por sobre las demas -Hata ahora esto era simple , por que al HTML que le correspondia, se le marcaba su opcion.
Carpeta Link Home Code Version Estado
Verificaciones Obligatorias en el envio de datos ✔️ ⬅️Atras yes yes ✔️

Debbug

Xdebug

  • Main

php

  • Copy vercion PHp php

  • Config php

  • Install php


EL Array SERVER

$_SERVER

php

Carpeta Link Home Code Version Estado
EL_Array_$_SERVER ✔️ ⬅️Atras yes yes ✔️

Leer y escribir archivos en el servidor

Leer y escribir archivos en el servidor

  • Es posible leer el contenido de los archivos que estan en el servidor usando la funcion file_get_contects()

  • Recibe entre parentesis una cadenas de teto con la rita al archivo a leer.

  • Esta funcion es sutilmente deferencial al include():

    • include() interpreta y procesa variables y funciones
    • file_get_contents() lee el contenido en texto plano

Escribir archivos

asi como hay una funcion para leer archivos , hay otra para escribirlos:

file_put_contents()

Recibe dos argumentos obligatorios:
    
    * La ruta al archivo que se va a modificar.
    * El contenio a insertarle
    
Carpeta Link Home Code Version Estado
Leer y escribir archivos en el servidor ✔️ ⬅️Atras yes yes ✔️

Dueño del Material

Dueño y creador del Material Bitdigitalacademy


Leer y recorrer directorios en el servidor

Recorrer directorios

  • Si tenermos varios archivos dentro de una carpeta y queremos recorrerlo todos, PHP nos da 2 fucnioens combinadas.

  • Primero debemos sacceder al directorio, por medio de la funcion opendi() que percibe como cadena de texto el nombre del directorio a recorrer.

  • Esta funciones retorna un recurso que debe guardarse en una variable.

  • una vez finalizafo , el recurso debe ser ñiberado con la funcion closedir($recurso).

  • Y para obtener los archivos del directorio, se usa la funcion readdir($recurso) que devolvera una cadena de texto con el nombre de archivo del nombre obtenido.

Uso del readdir()

  • Cada vez que ejecutamos el readdir nos devuelve de uno en uno los nombre de archivos o subcarpetas que encontro n el directorio.
Carpeta Link Home Code Version Estado
Leer y recorrer directorios en el servidor ✔️ ⬅️Atras yes yes ✔️

Recorrer archivos específicos del servidor

  • La funcion glob() sirve para buscar los archivos que coinciden con un patron especifico en su nombre.

  • Por Ejemplo , buscar todos lo archivos con extension txt glob('*.txt');

  • por ende se recorre por foreach para manipular los elementos devueltos.

Carpeta Link Home Code Version Estado
Recorrer archivos específicos del servidor ✔️ ⬅️Atras yes yes ✔️

Obtener informacion de los archivos

Informacion de los archivos

  • Podemos obtener el tamaño de un archivo con la funcion filesize()
  • Para obtener la fecha de la creacion usamos la funcion filemtime() que devuelve un valor el formato Epoch.
  • Podemos Obtener informacion puntual de un archivo con la funcion pathinfo()
  • lA Funcion dirname() permite obtener la ruta donde se encuentra el archivo ppasado como argumento. Acepta la constante FILE para obtener la informacion del archivo actual.

php

php

Carpeta Link Home Code Version Estado
Obtener informacion de los archivos ✔️ ⬅️Atras yes yes ✔️

Crear y eliminar directorios en el servidor

php

Carpeta Link
Crear y eliminar directorios en el servidor ✔️

Upload de archivos con formularios

  • Para subir Archivos al servidor se usa input de tipo file
  • Pero el formulario debe enviarse por POST y tener ENCTYPE con el valor MULTIPART/FROM-DATA
  • Aunque noi procesemos el archivo, en realidad se sube al servidor (tmp)
  • Este archivo se elimina automaticamente al finalizar de ejecutarse el codigo PHP

Restricciones

  • Por defecto el PHP.ini tiene seteado un limite de tamaño maximo de archivo
  • Segun la version del servidor isntalado puede ser de 2mb hasta los 64mb
  • Generalmente los hosting soportan archis mas grandes
  • Si usamos las funcion PHPINFO() para ver la configuracion del php.ini, debemos buscar la directiva UPLOAD_MAX_FILESIZE
phpinfo()

php

  • Esta es una directiva que nos epuede configurar desde la funcion ini_set(), por que se interpreta despues de que el apache rechaso el archivo.

Obteer el archivo

  • Los Archivos subidos con un formulario, no se reciben no por GET n i por POST

Obtener el Archivo

  • Los Archivos subisos con un formulario, no se reciben ni por GET ni por POST.
  • llegan por la matriz $_Files
  • Tiene como indice asociativo cada name de un pmput de tipo file.
  • Entonces un $_Files['name_del_input'] accede a un input de tipo con el name=2name_del_input".

Subir el Archivo

  • Ese directorio temporal donde se reciben los archivos está por fuera del directorio raiz de la web publica.
  • move_uploaded_file() permite mover de carpeta
Carpeta Link Home Code Version Estado
Upload de archivos con formularios ✔️ ⬅️Atras yes yes ✔️

Validación de los archivos subidos por formularios

Validaciones

  • Mas alla del tamaño que acepte el PHP.ini , que podemos restringir el tamaño desde la programacion verificando el $_FILES['input']['size'];

  • D ehecho si no se envia ningun archivo, el $_FILES['input'] se genera, pero con tamaño vacio (por si necesitamos verificar que no haya llegado un archivo)

  • Tambien podemos verificar el tipo de archivo que no ha enviado desde PHP:

    • Podemos analizar el mine-type con el $_FILE['input']['type'];

Definir nombre del archivo

  • si soa archivos se suben a la misma carpeta , con el mismo nombre se pisan.
  • tenemos 2 formas de crear nombre unicos en lo nombre de archivo. Usar el valor que devuelve la funcion time() con el nombre del archivo
Carpeta Link Home Code Version Estado
Validación de los archivos subidos por formularios ✔️ ⬅️Atras yes yes ✔️

Libreria GDLibrary Redimensionar imagenes

  • Es una libreria de PHP que permite manipular las imagenes desde la programacion.
  • Las funcionalidades mas comunes que podemos aprovechar son: - Redimendionar imagenes - cambiar el tono de una imagenen - Superponer una marca de agua - Agregar texto sobre una imagen

Abrir la imagenes a editar

  • Para editar una imagen, primero debemos abrirla y guardarla en una variable

  • GDLibrary tiene una funcion distinta para cada formato de imagen

  • Por lo cual tiene una funcion imagecreatefrom() por cada formato que recibe como argumento el archivo a editar

  • $jpg_original = imagecreatefromjpeg('foto.jpg');

  • $png_original = imagecreatefromjpeg('foto.png');

  • $gif_original = imagecreatefromjpeg('foto.gif');

Crear el lienzo destino

  • La imagen origin anunca se modifica con el GDLibrary, solo es una referencia.
  • Debemos crear un nuevo recurso con el tamaño (ancho/alto) que Deseamos.
  • Tambien se guarda en una variable (para manipularla ) y recibe como argumento el ancho y alto del nuevo lienzo.

Clonar la Imagen

  • Para crear la copia de la foto , solo debemos supoerponer un area del original en el lienzo vacio(ña copia)
  • Paeso eso se usa la funcion imagescopyresampled() ue recibe 10 argumentos:
    • Recursos destino donde pegamos la infomacion (la copia)

Exportar la imagen

  • La funcion anterior solo superpone la imagen original sobre la copia en la momoria, pero todavia la exporta la miniatura.

  • Para exportarla , hay que pasarla como argumento del imageXXX

Argumentos del imagejpeg()

  • Con un solo argumento, trata de mostrar la imagen en el mismo PHP que hizo la miniatura (sin crear un archivo fisico)
  • Con dos argumentos, el segundo sera el nombre del archivo que se creará con la copia. al usar este método, ya no hace falta usar el remove_uploaded_file()
Carpeta Link Home Code Version Estado
Libreria GDLibrary Redimensionar imagenes ✔️ ⬅️Atras yes yes ✔️

Libreria GDLibrary Agregar una marca de agua

Carpeta Link Home Code Version Estado
Libreria GDLibrary Agregar una marca de agua ✔️ ⬅️Atras yes yes ✔️

Manipulacion de etiquetas HTML desde PHP

  • El texdto multiliena de un <textarea></textarea> no es respetado por el HTML al ver un posteo.

  • Esto sucede porque para HTML el enter no significa nada

  • Para generar nuvas lineeas necesitamos usar elementos del bloque o etiquetas
    que representan el salto de oraciones.

Eliminar etiquetas HTML

  • En en caso de formularios que completa el usuario (y a veces los mismo adminitradores), aceptar codigo HTML puede ser problema.

  • Por ejemplo, un usuario podria insertar un <script> como codigo molesto o malicioso

  • por lo cual con la funcion strip_tag($contenido) se elimina cualquier etiqueta HTML que tenga valor pasado como argumento.

Mostar Codigo fuente HTML

  • Otra opcion que tenemos es si aceptar el codigo HTML que el usuario escriba pero no procesarlo, sino mostrarlo como fue escrito

  • Para eso existen dis fucniones:

htmlspecialchars($texto) htmlentities($texto)

Files Link Home Code Version Estado
Manipulacion de etiquetas HTML desde PHP ✔️ ⬅️Atras yes yes ✔️

Manipulación de los contenidos de los String

Calcula Cadenas de texto

  • Podemos saber si la cantidad de caracteres que tiene un string por medio de la funcion strlen($texto)

  • De la misma manera podemos obtener la cantidad de palabras que hay en una oracion por medio de str_word_count($texto)

php

Files Link Home Code Version Estado
Manipulación de los contenidos de los String ✔️ ⬅️Atras yes yes ✔️

Recortar espacios en los String

Eliminar espacio Extra

  • Cuando escribimo es un textoarea o un input de tiepo text es posible que generemos espacios de mas antes o despues del contenido

  • Por medio de la funcion trim($texto) eliminamos espacio que se encuentre por delante del primer y del ultimo caracteer ingresado

  • Si solo se quiere borrar de un solo lado del string, tenemos Itrim() para los espacio de la izquierda y rtrim() para los de la derecha.

php

Numeration File Link Folk Code Version State Download Go back
040 Recortar espacios en los String ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Buscar y reemplazar cadenas de texto

Buscar en un String

  • PAra buscar dentro de una cadenas de texto un determinado contenido se usa la funcion strpos() que recibe dos argumetos:
  • En que cadenas de texto
  • Que estamos buscando
  • Si existe, devuelve numero que representa la ubicacion dentro del String.
  • el primer caracter del Strinf es el valor 0(cero).
  • Si no existe coincidencia devuelve false
  • False y 0 se comportan como el mismo valor, comparar con triple igual.
Numeration File Link Folk Code Version State Download Go back
041 Buscar y reemplazar cadenas de texo ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Generar subcadenas de texto

  • Podemos cortar una cadena de texto a cierta cantidad de caracteres por medio de la funcion substr() que recibe dos o tres argumentos:
  • cadenas de tecto a cortar
  • En que caracter de la cadena empeisa a recortar
  • Cantidad de carracteres a obtener desde el punto de inicio
  • Si el tercer argumento no se indica, asume que debe ir hasta el final si cualquiera de los dos argumentso son negativos, se calcula desde el final en lugar desde el principio.

Subring HTML incompleto

  • Cuando generamos un subtring es factible que nos quede eriquetal mal cerradas o sin cerrar.

  • PHP tiene una libreeria adicional llamada tidy.html que permitem, entre otras cosas, reparar codigo HMTL incompleto

  • para eso debemos parar la subcaderna generada por la funcion ``tidy_parse_sting ($string)` que procesa el codigo HTML.

if(empty($preview)){
	$preview = file_get_contents("$base/$carpeta/contenido.txt");
	# Obtener un fragmento
	$preview = substr($preview, 0, 100); # empiesa de 0 y que de 100 caracteres
	$preview = tidy_parse_string($preview); # repara etiquetas mal cerradas
}
Numeration File Link Folk Code Version State Download Go back
042 Generar subcadenas de texto ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Generar subcadenas de texto

Numeration File Link Folk Code Version State Download Go back
043 Generar subcadenas de texto ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Formatear cadenas de texto

Numeration File Link Folk Code Version State Download Go back
044 Formatear cadenas de texto ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Espresiones Regulares

  • Son patrones para buscar un cadena de texto adentro de otra cadenas
  • Se puede usar solo para verificar si la subcaderna de texto o para reemplazar Strings

Donde se Usan

La Expresiones Regualres existen en la mayoria de lo lenguajes de preogramacion actuales

  • En la web preincipalmente se usan para la validacion de datos ingresados por un usuario ya sea desde un formulario o url
  • de esta manera , enrealidad , podemos verificar los datosr con javascript

Crear Patron

Para PHP el patron de un aexpresion regular no tiene un construcor, es simplemente una cadena de texto que empisa y termina en la la barra

$patron = "/patron/;

  • poer medio de una serie se ofrede php , le indicaremos otra cadena
  • PHP es un lenguaje de case sensitive; el valor que estamos validando debera coincidir con sus mayusculas y minusculas.

Librerias para RegExp

  • PHP permite testear los patrones de una expresion regular usando una libreria de funciones(Como sucede con el GDLibrar)

  • Existen dos conjustos de librerias que podria usar:

    La que inician con ereg_ (Expresiones POSIX) Las que inicial con preg_ (Basadas en PERL) son mas repidas en su procesamiento

Testear el patron

  • Para verificar si la cadena de texto satisface el patron indicado, se usa la funcion preg_match() que recibe dos argumentos obligatorios

El string con el patron de la expresion regular El string contra el cual queremos validar el patron

Devolvera el numero 1 si el string coincide contrar el patron y 0 de no ser asi.

  • Como estos valores se comportan como los booleanos true y false (respectivamente), podemos usarlo en un condicional.

Si el patron matchea

  • Tambien podemos capturar el motivo por el cual el patron devolvio verdadero

  • Para eso se puede agregar un tercer argumento que se instaciará al ejecutar la funcion preg_match y retornara un array de conincidencias.

  • Esta funcion tiene como pasticularidad que al concontrar la primera coincidencia deja de buscar

  • Si queremos capturar todas la funciones repeticiones, debemos usar la funcion preg_match_all() que devuelve una matriz de coincidencias.

Numeration File Link Folk Code Version State Download Go back
045 Espresiones Regulares ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras
046 Espresiones Regulares II ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras
047 Espresiones Regulares III ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras
048 Espresiones Regulares IV ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras
049 Espresiones Regulares V ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras
050 Espresiones Regulares VI ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras
051 Espresiones Regulares VII ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Bases de Datos

Numeration File Link Folk Code Version State Download Go back
052 Bases de Datos ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Conectarse al MySQL por CLI e IDE

  • Como ya sabemos la base de datos es un servicio que tiene una capa de seguridad en el acceso.

  • La herramienta DBA y PHP, deberan autentificarse para interactual con el SQL.

  • Eso se hace con un usuario y clave que es propio del servicio

Credenciales de acceso

  • Cualquiera sea el mecanismo, la conexion al servior MySQL requiere 4 datos:

El usuario de conexion . el usuario principal del MySQL es el root. Segundo el servidor de prueba, la contraseña esta vacia o es nuvamente root. Se debe indicar en que IP o dominio esta la base de datos ver el puerto TCP/IP 3306.

EL CLI

  • El Command Line Interfaz, es la interfaz desde consola.
     mysql -u root -p
  • Una ves dentro, escribiremos SQL tal como se verá
     show databases;

PHP My Admin

  • Es un micrositio hecho en php, que lo tienen instalado en la mayoria de hostings.

*User: root *Password:

Software de manipulacion

  • Los Programas instalables es las PC del usuario logicamente mas agiles y pueden ofrecer herramientas visuales mas intuitivas.

  • DBeaver Comunity

Numeration File Link Folk Code Version State Download Go back
053 Conectarse al MySQL por CLI e IDE ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Tablas y columnas de una base de datos

Numeration File Link Folk Code Version State Download Go back
054 Tablas y columnas de una base de datos ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Conectarse con ORACLE

Descargar Oracle XE

Descargarr e Instalar

Creacion de Usuario por la consola SQL PlUS

Ingresar modo admin en pasword presionar ENTER

Introduzca el nombre de usuario: CONN /AS SYSDBA
Introduzca la contrase±a: /*ENTER*/

** Ver los Usuarios ***

show user;

** Eviamos el Errir ORA-65096 **

ALTER SESSION SET "_ORACLE_SCRIPT" = TRUE

** Creamos Usuario **

CREATE USER users IDENTIFIED BY password

** Briandomos Admin **

GRANT DBA TO briandb;

Ejecucion SQL DEVELOPER

Descargar SQLDeveloper

Instalar, Ejecular y Conectarse a la Instancia

Crear la carperta info.php en la carpeta raiz de wamp

_ En la carpeta ingresar el seguiente codigo:

<?php
    phpinfo();
?>

Ejecuta por el navegador

  • Architecture x64
  • Thread Safety enabled

Descargar OCI8.DLL

Pecl.php

PHP.INI habilitar y agregar extenciones

extension=oci8.so extension=php_oci8.dll extension=php_oci8_11.g.dll extension=php_oci8_12c.dll

éste es el dll para poder hacer la conexión con PDO (Si quieren usar pdo simplemente usen éste, si les da igual, lo agregan o no)

Copiar los DDL a la carperta de WAMP

C:\wamp64\bin\php\php7.3.21\ext

Descargar Cliente Oracle

Oracle Instant Client Downloads

  • Crear una carpeta llama Oracle en el disco C
  • Pegar todo el contenido de la carpeta descargada
  • Agregar la ruta al Path
  • Reiniciar la PC

Probando la Coneccion

<?php
//*Conectar con OCI (el que se usó en el vídeo)*
$Oracle = oci_connect("briandb", "briandb", "localhost/XE");
if($Oracle ){
    echo 'Conexion S - Oracle | Integrated Cloud Applications and Platform Services';
}else{
    echo 'Conexion Fallida';
}
?>
Numeration File Link Folk Code Version State Download Go back
055 Conectarse con ORACLE ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Tipos de datos en MySQL

Numeration File Link Folk Code Version State Download Go back
056 Anchura del tipo de datos MySQL ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Anchura del tipo de datos MySQL

Numeration File Link Folk Code Version State Download Go back
057 Anchura del tipo de datos MySQL ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Atributo de las columnas en MSQL

Numeration File Link Folk Code Version State Download Go back
058 Atributo de las columnas en MSQL ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Coneccion con MSQL

Numeration File Link Folk Code Version State Download Go back
059 Coneccion con MSQL ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Atributo de las columnas en MSQL

Doc

Instalar PHP 8

Numeration File Link Folk Code Version State Download Go back
A1 Instalar PHP 8 ✔️ ✔️ yes yes ✔️ 💾 ⬅️Atras

Books

Server Name Authors Editorial ISBN Link
OneDrive Learning PHP, MySQL, JavaScript, CSS & HTML5 Robin Nixon O'REILLY 978-1491949467 Learning PHP, MySQL, JavaScript, CSS & HTML5

Spotify PHP

🎵 Music PHP List on Spotify 🎤


Paypal

🩸 Hacer una donación PAYPAL 🍵


A B
C E
F G