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 |
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 |
Numeration | Check | Topic | Quantization | Edit Gitpot | Downloads | link |
---|---|---|---|---|---|---|
A1 | ✔️ | Instalar PHP 8 | ⌛ | - | - | ⬅️ Atras |
Numeration | Check | Topic | Quantization | Edit Gitpot | Downloads | link |
---|---|---|---|---|---|---|
- | ✔️ | Play List PHP | ⌛ | - | - | ⬅️ Atras |
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.
- Desarrollo de web dinamico
- No tiene costo
- Multiplataforma
- Servicio Automatizado
LADO DEL CLIENTE | LADO DEL SERVIDOR |
---|---|
HTML | PHP |
CSS | PHP |
JAVASCRIPTS | PHP |
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.
- 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.
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.
- 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
WAMPP
C:\wamp\htdocs
XAMPP
C:\xampp\htdocs
ZWAMP
/drive/web
MAMP
/Applications/MAMO/htdocs
LINUX
/var\www/html
- Visual Studio Code
- Sublime Text
- Brackets
- Notepad++
- DreamWeaver
- TextMate
Apertura nativa de PHP
<?php
CODIGO PHP
?>
Apertura corta (poco segura)
<?
CODIGO PHP
?>
-
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 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;
?>
- 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
- 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 | ✔️ |
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: ==
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 | ✔️ |
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.
-
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 | ✔️ |
- 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',
'[email protected]'
),
/*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 | ✔️ |
-
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
- 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' => '[email protected]',
'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 | ✔️ |
-
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).
- Es la estructura foreach, que recorre todo los elementos de un array automaticamente.
- 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 | ✔️ |
-
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
-
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.
- 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.
-
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.
- 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 | ✔️ |
- 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 ➜
-
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.
- 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 | ✔️ |
- 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
- 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 | ✔️ |
-
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 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 | ✔️ |
-
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.
- 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 | ✔️ |
-
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.
- 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)
-
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 | ✔️ |
-
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
- 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.
- 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).
- 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 | ✔️ |
-
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
-
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.
-
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 | ✔️ |
-
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*/}
- 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).
- 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.
- 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 | ✔️ |
- Main
$_SERVER
Carpeta | Link | Home | Code | Version | Estado |
---|---|---|---|---|---|
EL_Array_$_SERVER | ✔️ | ⬅️Atras | yes | yes | ✔️ |
-
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
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 y creador del Material Bitdigitalacademy
-
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.
- 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 | ✔️ |
-
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 | ✔️ |
- 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.
Carpeta | Link | Home | Code | Version | Estado |
---|---|---|---|---|---|
Obtener informacion de los archivos | ✔️ | ⬅️Atras | yes | yes | ✔️ |
Carpeta | Link |
---|---|
Crear y eliminar directorios en el servidor | ✔️ |
- 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
- 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()
- 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.
- Los Archivos subidos con un formulario, no se reciben no por GET n i por POST
- 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".
- 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 | ✔️ |
-
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'];
- Podemos analizar el mine-type con el
- 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 | ✔️ |
- 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
-
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');
- 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.
- 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)
-
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
- 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 | ✔️ |
Carpeta | Link | Home | Code | Version | Estado |
---|---|---|---|---|---|
Libreria GDLibrary Agregar una marca de agua | ✔️ | ⬅️Atras | yes | yes | ✔️ |
-
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.
-
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.
-
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 | ✔️ |
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)
Files | Link | Home | Code | Version | Estado |
---|---|---|---|---|---|
Manipulación de los contenidos de los String | ✔️ | ⬅️Atras | yes | yes | ✔️ |
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 yrtrim()
para los de la derecha.
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
040 | Recortar espacios en los String | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
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 |
- 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.
-
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 |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
043 | Generar subcadenas de texto | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
044 | Formatear cadenas de texto | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
- 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.
-
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
- 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.
-
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 |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
052 | Bases de Datos | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
-
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
- 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 Command Line Interfaz, es la interfaz desde consola.
mysql -u root -p
- Una ves dentro, escribiremos SQL tal como se verá
show databases;
- Es un micrositio hecho en php, que lo tienen instalado en la mayoria de hostings.
*User: root *Password:
-
Los Programas instalables es las PC del usuario logicamente mas agiles y pueden ofrecer herramientas visuales mas intuitivas.
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
053 | Conectarse al MySQL por CLI e IDE | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
054 | Tablas y columnas de una base de datos | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
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
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 |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
056 | Anchura del tipo de datos MySQL | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
057 | Anchura del tipo de datos MySQL | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
058 | Atributo de las columnas en MSQL | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
059 | Coneccion con MSQL | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
Numeration | File | Link | Folk | Code | Version | State | Download | Go back |
---|---|---|---|---|---|---|---|---|
A1 | Instalar PHP 8 | ✔️ | ✔️ | yes | yes | ✔️ | 💾 | ⬅️Atras |
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 |
🎵 Music PHP List on Spotify 🎤
🩸 Hacer una donación PAYPAL 🍵
A | B | ||
C | E | ||
F | G |