100% encontró este documento útil (4 votos)
2K vistas

PHP

Este documento proporciona una introducción al lenguaje de programación PHP. Explica que PHP es un lenguaje de script del lado del servidor que se usa comúnmente para crear sitios web dinámicos y aplicaciones. Detalla algunas de las características clave de PHP como su simplicidad, eficiencia y flexibilidad. También incluye un pequeño script "Hola Mundo" como ejemplo y explica los usos más comunes de PHP como manejar formularios, acceder a bases de datos y más.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
100% encontró este documento útil (4 votos)
2K vistas

PHP

Este documento proporciona una introducción al lenguaje de programación PHP. Explica que PHP es un lenguaje de script del lado del servidor que se usa comúnmente para crear sitios web dinámicos y aplicaciones. Detalla algunas de las características clave de PHP como su simplicidad, eficiencia y flexibilidad. También incluye un pequeño script "Hola Mundo" como ejemplo y explica los usos más comunes de PHP como manejar formularios, acceder a bases de datos y más.
Derechos de autor
© © All Rights Reserved
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 226

Contenido

PHP - Inicio
PHP - Introducción
PHP - Configuración del entorno
PHP - Descripción general de la sintaxis
PHP - Tipos de variables
PHP - Constantes
PHP - Tipos de operador
PHP - Toma de decisiones
PHP - Tipos de bucle
PHP - Matrices
PHP - Cadenas
PHP - Conceptos web
PHP - OBTENER Y PUBLICAR
PHP - Inclusión de archivos
PHP - Archivos y E / S
PHP - Funciones
PHP - Cookies
PHP - Sesiones
PHP - Envío de correos electrónicos
PHP - Carga de archivos
PHP - Estándar de codificación
PHP avanzado
PHP - Variables predefinidas
PHP - Expresión regular
PHP - Manejo de errores
PHP - Depuración de errores
PHP - Fecha y hora
PHP y MySQL
PHP y AJAX
PHP y XML
PHP - Orientado a objetos
PHP - Para desarrolladores de C
PHP - Para desarrolladores de PERL
Ejemplos de formularios PHP
PHP - Introducción al formulario
PHP - Ejemplo de validación
PHP - Formulario completo
Ejemplos de inicio de sesión PHP
PHP - Ejemplo de inicio de sesión
PHP - Inicio de sesión en Facebook
PHP - Integración de Paypal
PHP - Inicio de sesión MySQL
Ejemplos PHP AJAX
PHP - Búsqueda AJAX
PHP - Analizador XML AJAX
PHP - Búsqueda automática completa de AJAX
PHP - Ejemplo de fuente RSS AJAX
Ejemplo de PHP XML
PHP - Introducción a XML
PHP - XML simple
PHP - XML simple GET
PHP - Ejemplo de analizador SAX
PHP - Ejemplo de analizador DOM
PHP Frame Works
PHP - Frame Works
PHP - PHP principal vs Frame Works
Patrones de diseño PHP
PHP - Patrones de diseño
El preprocesador de hipertexto PHP (PHP) es un lenguaje de programación
que permite a los desarrolladores web crear contenido dinámico que interactúa
con las bases de datos. PHP se utiliza básicamente para desarrollar
aplicaciones de software basadas en web. Este tutorial te ayuda a construir tu
base con PHP.

¿Por qué aprender PHP?


PHP comenzó como un pequeño proyecto de código abierto que evolucionó a
medida que más y más personas descubrieron lo útil que era. Rasmus Lerdorf
lanzó la primera versión de PHP en 1994.

Descarga más libros de programación GRATIS click aquí

Síguenos en Instagram para que estés al tanto de los


nuevos libros de programación. Click aqui
PHP es imprescindible para que los estudiantes y profesionales que trabajan
se conviertan en un gran ingeniero de software, especialmente cuando
trabajan en el dominio de desarrollo web. Voy a enumerar algunas de las
principales ventajas de aprender PHP:
 PHP es un acrónimo recursivo para "PHP: preprocesador de hipertexto".
 PHP es un lenguaje de script del lado del servidor que está incrustado en
HTML. Se utiliza para administrar contenido dinámico, bases de datos,
seguimiento de sesiones, incluso construir sitios completos de comercio
electrónico.
 Está integrado con una serie de bases de datos populares, incluidas MySQL,
PostgreSQL, Oracle, Sybase, Informix y Microsoft SQL Server.
 PHP es agradablemente rápido en su ejecución, especialmente cuando se compila
como un módulo de Apache en el lado de Unix. El servidor MySQL, una vez
iniciado, ejecuta incluso consultas muy complejas con grandes conjuntos de
resultados en un tiempo récord.
 PHP admite una gran cantidad de protocolos principales como POP3, IMAP y
LDAP. PHP4 agregó soporte para Java y arquitecturas de objetos distribuidos
(COM y CORBA), haciendo que el desarrollo de n niveles sea una posibilidad por
primera vez.
 PHP es indulgente: el lenguaje PHP intenta ser lo más indulgente posible.
 La sintaxis de PHP es C-Like.

Características de PHP
Cinco características importantes hacen posible la naturaleza práctica de PHP:

 Sencillez
 Eficiencia
 Seguridad
 Flexibilidad
 Familiaridad

Hola mundo usando PHP.


Solo para darle un poco de emoción sobre PHP, le voy a dar un pequeño
programa convencional PHP Hello World, puede probarlo usando el enlace
Demo.
Demo en vivo
<html>

<head>
<title>Hello World</title>
</head>

<body>
<?php echo "Hello, World!";?>
</body>
</html>

Aplicaciones de PHP
Como se mencionó anteriormente, PHP es uno de los lenguajes más
utilizados en la web. Voy a enumerar algunos de ellos aquí:
 PHP realiza funciones del sistema, es decir, a partir de archivos en un sistema que
puede crear, abrir, leer, escribir y cerrar.
 PHP puede manejar formularios, es decir, recopilar datos de archivos, guardar
datos en un archivo, a través del correo electrónico puede enviar datos, devolver
datos al usuario.
 Agrega, elimina, modifica elementos dentro de su base de datos a través de PHP.
 Acceda a las variables de cookies y configure las cookies.
 Con PHP, puede restringir el acceso de los usuarios a algunas páginas de su sitio
web.
 Puede encriptar datos.

Audiencia
Este tutorial de PHP está diseñado para programadores de PHP que
desconocen por completo los conceptos de PHP pero tienen conocimientos
básicos de programación de computadoras.

Prerrequisitos
Antes de continuar con este tutorial, debe tener al menos una comprensión
básica de la programación de computadoras, Internet, bases de datos y
MySQL, etc. es muy útil.

PHP - Introducción
PHP comenzó como un pequeño proyecto de código abierto que evolucionó a
medida que más y más personas descubrieron lo útil que era. Rasmus Lerdorf
lanzó la primera versión de PHP en 1994.
 PHP es un acrónimo recursivo para "PHP: preprocesador de hipertexto".
 PHP es un lenguaje de script del lado del servidor que está incrustado en
HTML. Se utiliza para administrar contenido dinámico, bases de datos,
seguimiento de sesiones, incluso construir sitios completos de comercio
electrónico.
 Está integrado con una serie de bases de datos populares, incluidas MySQL,
PostgreSQL, Oracle, Sybase, Informix y Microsoft SQL Server.
 PHP es agradablemente rápido en su ejecución, especialmente cuando se compila
como un módulo de Apache en el lado de Unix. El servidor MySQL, una vez
iniciado, ejecuta incluso consultas muy complejas con grandes conjuntos de
resultados en un tiempo récord.
 PHP admite una gran cantidad de protocolos principales como POP3, IMAP y
LDAP. PHP4 agregó soporte para Java y arquitecturas de objetos distribuidos
(COM y CORBA), haciendo que el desarrollo de n niveles sea una posibilidad por
primera vez.
 PHP es indulgente: el lenguaje PHP intenta ser lo más indulgente posible.
 La sintaxis de PHP es C-Like.

Usos comunes de PHP


 PHP realiza funciones del sistema, es decir, a partir de archivos en un sistema que
puede crear, abrir, leer, escribir y cerrar.
 PHP puede manejar formularios, es decir, recopilar datos de archivos, guardar
datos en un archivo, a través del correo electrónico puede enviar datos, devolver
datos al usuario.
 Agrega, elimina, modifica elementos dentro de su base de datos a través de PHP.
 Acceda a las variables de cookies y configure las cookies.
 Con PHP, puede restringir el acceso de los usuarios a algunas páginas de su sitio
web.
 Puede encriptar datos.

Características de PHP
Cinco características importantes hacen posible la naturaleza práctica de PHP:

 Sencillez
 Eficiencia
 Seguridad
 Flexibilidad
 Familiaridad

Script "Hola mundo" en PHP


Para tener una idea de PHP, primero comience con scripts PHP
simples. Desde "¡Hola, mundo!" es un ejemplo esencial, primero crearemos un
amistoso pequeño "¡Hola, mundo!" guión.
Como se mencionó anteriormente, PHP está incrustado en HTML. Eso
significa que en su HTML normal (o XHTML si es de vanguardia) tendrá
declaraciones PHP como esta:
Demo en vivo
<html>
<head>
<title>Hello World</title>
</head>

<body>
<?php echo "Hello, World!";?>
</body>

</html>

Producirá el siguiente resultado:


Hello, World!
Si examina la salida HTML del ejemplo anterior, notará que el código PHP no
está presente en el archivo enviado desde el servidor a su navegador
web. Todo el PHP presente en la página web se procesa y se elimina de la
página; Lo único que el servidor web devuelve al cliente es la salida HTML
pura.
Todo el código PHP debe incluirse dentro de una de las tres etiquetas de
marcado especiales que ATE reconoce el analizador PHP.
<?php PHP code goes here ?>

<? PHP code goes here ?>

<script language = "php"> PHP code goes here </script>

Una etiqueta más común es <? Php ...?> Y también usaremos la misma
etiqueta en nuestro tutorial.
Desde el próximo capítulo comenzaremos con la configuración del entorno
PHP en su máquina y luego buscaremos casi todos los conceptos
relacionados con PHP para que se sienta cómodo con el lenguaje PHP.

PHP - Configuración del entorno


Para desarrollar y ejecutar páginas web PHP, es necesario instalar tres
componentes vitales en su sistema informático.
 Servidor web : PHP funcionará con prácticamente todo el software del servidor
web, incluido el servidor de información de Internet (IIS) de Microsoft, pero luego
se utiliza con mayor frecuencia el servidor Apache disponible
gratuitamente. Descargue Apache gratis
aquí: https://httpd.apache.org/download.cgi
 Base de datos : PHP funcionará con prácticamente todo el software de base de
datos, incluidos Oracle y Sybase, pero el más comúnmente utilizado es la base de
datos MySQL disponible gratuitamente. Descargue MySQL gratis
aquí: https://www.mysql.com/downloads/
 Analizador PHP : para procesar las instrucciones del script PHP, debe instalarse
un analizador para generar una salida HTML que pueda enviarse al navegador
web. Este tutorial lo guiará sobre cómo instalar el analizador PHP en su
computadora.

Instalación del analizador PHP


Antes de continuar, es importante asegurarse de tener una configuración de
entorno adecuada en su máquina para desarrollar sus programas web
utilizando PHP.
Escriba la siguiente dirección en el cuadro de dirección de su navegador.
http://127.0.0.1/info.php
Si esto muestra una página que muestra la información relacionada con la
instalación de PHP, significa que tiene PHP y el servidor web instalados
correctamente. De lo contrario, debe seguir el procedimiento dado para
instalar PHP en su computadora.
Esta sección lo guiará para instalar y configurar PHP en las siguientes cuatro
plataformas:
 Instalación de PHP en Linux o Unix con Apache
 Instalación de PHP en Mac OS X con Apache
 Instalación de PHP en Windows NT / 2000 / XP con IIS
 Instalación de PHP en Windows NT / 2000 / XP con Apache

Configuración de Apache

Si está utilizando Apache como servidor web, esta sección lo guiará para
editar los archivos de configuración de Apache.
Simplemente verifíquelo aquí - Configuración de PHP en el servidor Apache

Configuración de archivo PHP.INI

El archivo de configuración de PHP, php.ini, es la forma final e inmediata de


afectar la funcionalidad de PHP.
Solo compruébalo aquí - Configuración del archivo PHP.INI

Configuración de Windows IIS

Para configurar IIS en su máquina Windows, puede consultar el Manual de


referencia de IIS enviado junto con IIS.

PHP - Descripción general de la sintaxis


Este capítulo le dará una idea de la sintaxis muy básica de PHP y muy
importante para fortalecer su base de PHP.

Escapar a PHP
El motor de análisis PHP necesita una forma de diferenciar el código PHP de
otros elementos en la página. El mecanismo para hacerlo se conoce como
'escapar a PHP'. Hay cuatro formas de hacer esto:

Etiquetas canónicas PHP

El estilo de etiqueta PHP más universalmente efectivo es:


<?php...?>
Si usa este estilo, puede estar seguro de que sus etiquetas siempre se
interpretarán correctamente.

Etiquetas de apertura corta (estilo SGML)

Las etiquetas cortas o abiertas se ven así:


<?...?>
Las etiquetas cortas son, como cabría esperar, la opción más corta. Debe
hacer una de dos cosas para permitir que PHP reconozca las etiquetas:
 Elija la opción de configuración --enable-short-tags cuando construya PHP.
 Establezca la configuración short_open_tag en su archivo php.ini en on. Esta
opción debe deshabilitarse para analizar XML con PHP porque se usa la misma
sintaxis para las etiquetas XML.

Etiquetas de estilo ASP

Las etiquetas de estilo ASP imitan las etiquetas utilizadas por las páginas
Active Server para delinear bloques de código. Las etiquetas de estilo ASP se
ven así:
<%...%>
Para usar etiquetas de estilo ASP, deberá establecer la opción de
configuración en su archivo php.ini.

Etiquetas de script HTML

Las etiquetas de script HTML se ven así:


<script language = "PHP">...</script>

Comentando código PHP


Un comentario es la parte de un programa que existe solo para el lector
humano y se elimina antes de mostrar el resultado del programa. Hay dos
formatos de comentarios en PHP:
Comentarios de una sola línea : generalmente se utilizan para explicaciones
breves o notas relevantes para el código local. Aquí están los ejemplos de
comentarios de una sola línea.
<?
# This is a comment, and
# This is the second line of the comment

// This is a comment too. Each style comments only


print "An example with single line comments";
?>
Impresión de líneas múltiples : aquí están los ejemplos para imprimir varias
líneas en una sola declaración de impresión:
<?
# First Example
print <<<END
This uses the "here document" syntax to output
multiple lines with $variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon no extra whitespace!
END;

# Second Example
print "This spans
multiple lines. The newlines will be
output as well";
?>
Comentarios de líneas múltiples : generalmente se utilizan para
proporcionar algoritmos de pseudocódigo y explicaciones más detalladas
cuando sea necesario. El estilo de comentarios de varias líneas es el mismo
que en C. Aquí están los ejemplos de comentarios de varias líneas.
<?
/* This is a comment with multiline
Author : Mohammad Mohtashim
Purpose: Multiline Comments Demo
Subject: PHP
*/

print "An example with multi line comments";


?>

PHP es insensible a los espacios en blanco


El espacio en blanco es lo que escribe que normalmente es invisible en la
pantalla, incluidos espacios, pestañas y retornos de carro (caracteres de final
de línea).
El espacio en blanco de PHP insensible significa que casi nunca importa
cuántos caracteres de espacio en blanco tiene en una fila. Un carácter de
espacio en blanco es el mismo que muchos de esos caracteres.
Por ejemplo, cada una de las siguientes instrucciones PHP que asigna la
suma de 2 + 2 a la variable $ cuatro es equivalente:
$four = 2 + 2; // single spaces
$four <tab>=<tab2<tab>+<tab>2 ; // spaces and tabs
$four =
2+
2; // multiple lines

PHP distingue entre mayúsculas y minúsculas


Sí, es cierto que PHP es un lenguaje sensible a mayúsculas y
minúsculas. Pruebe el siguiente ejemplo:
Demo en vivo
<html>
<body>

<?php
$capital = 67;
print("Variable capital is $capital<br>");
print("Variable CaPiTaL is $CaPiTaL<br>");
?>

</body>
</html>
Esto producirá el siguiente resultado:
Variable capital is 67
Variable CaPiTaL is

Las declaraciones son expresiones terminadas en


punto y coma.
Una instrucción en PHP es cualquier expresión seguida de un punto y coma
(;). Cualquier secuencia de instrucciones PHP válidas encerradas por las
etiquetas PHP es un programa PHP válido. Aquí hay una declaración típica en
PHP, que en este caso asigna una cadena de caracteres a una variable
llamada $ greeting -
$greeting = "Welcome to PHP!";

Las expresiones son combinaciones de tokens


Los bloques de construcción más pequeños de PHP son los tokens
indivisibles, como números (3.14159), cadenas (.two.), Variables ($ dos),
constantes (VERDADERO) y las palabras especiales que componen la
sintaxis de PHP como si , de lo contrario, mientras, para y así sucesivamente

Los frenos hacen bloques


Aunque las declaraciones no se pueden combinar como expresiones, siempre
puede colocar una secuencia de declaraciones en cualquier lugar al que
pueda ir una declaración encerrándolas en un conjunto de llaves.
Aquí ambas declaraciones son equivalentes:
if (3 == 2 + 1)
print("Good - I haven't totally lost my mind.<br>");

if (3 == 2 + 1) {
print("Good - I haven't totally");
print("lost my mind.<br>");
}

Ejecutar script PHP desde el símbolo del sistema


Sí, puede ejecutar su script PHP en el símbolo del sistema. Suponiendo que
tiene el siguiente contenido en el archivo test.php
Demo en vivo
<?php
echo "Hello PHP!!!!!";
?>
Ahora ejecute este script como símbolo del sistema de la siguiente manera:
$ php test.php
Producirá el siguiente resultado:
Hello PHP!!!!!
Espero que ahora tenga conocimientos básicos de sintaxis PHP.

PHP - Tipos de variables


La forma principal de almacenar información en el medio de un programa PHP
es mediante el uso de una variable.
Estas son las cosas más importantes que debes saber sobre las variables en
PHP.
 Todas las variables en PHP se denotan con un signo de dólar ($).
 El valor de una variable es el valor de su asignación más reciente.
 Las variables se asignan con el operador =, con la variable en el lado izquierdo y
la expresión a evaluar a la derecha.
 Las variables pueden, pero no necesitan, ser declaradas antes de la asignación.
 Las variables en PHP no tienen tipos intrínsecos: una variable no sabe de
antemano si se usará para almacenar un número o una cadena de caracteres.
 Las variables utilizadas antes de que se asignen tienen valores predeterminados.
 PHP hace un buen trabajo al convertir automáticamente los tipos de uno a otro
cuando es necesario.
 Las variables PHP son similares a Perl.
PHP tiene un total de ocho tipos de datos que usamos para construir nuestras
variables:
 Enteros : son números enteros, sin un punto decimal, como 4195.
 Dobles : son números de coma flotante, como 3.14159 o 49.1.
 Booleanos : solo tienen dos valores posibles, verdadero o falso.
 NULL : es un tipo especial que solo tiene un valor: NULL.
 Cadenas : son secuencias de caracteres, como 'PHP admite operaciones de
cadena'.
 Matrices : son colecciones nombradas e indexadas de otros valores.
 Objetos : son instancias de clases definidas por el programador, que pueden
agrupar otros dos tipos de valores y funciones que son específicos de la clase.
 Recursos : son variables especiales que contienen referencias a recursos
externos a PHP (como conexiones de bases de datos).
Los primeros cinco son tipos simples , y los dos siguientes (matrices y objetos)
son compuestos: los tipos compuestos pueden agrupar otros valores
arbitrarios de tipo arbitrario, mientras que los tipos simples no pueden.
Explicaremos solo el tipo de datos simple en estos capítulos. La matriz y los
objetos se explicarán por separado.

Enteros
Son números enteros, sin un punto decimal, como 4195. Son el tipo más
simple. Corresponden a números enteros simples, tanto positivos como
negativos. Los números enteros se pueden asignar a variables, o se pueden
usar en expresiones, como así:
$int_var = 12345;
$another_int = -12345 + 12345;
El entero puede estar en formato decimal (base 10), octal (base 8) y
hexadecimal (base 16). El formato decimal es el predeterminado, los enteros
octales se especifican con un 0 inicial y los hexadecimales tienen un 0x inicial.
Para las plataformas más comunes, el número entero más grande es (2 ** 31.
1) (o 2,147,483,647), y el número entero más pequeño (más negativo) es. (2 **
31. 1) (o .2,147,483,647).
Dobles
Les gusta 3.14159 o 49.1. Por defecto, los dobles imprimen con el mínimo
número de decimales necesarios. Por ejemplo, el código -
Demo en vivo
<?php
$many = 2.2888800;
$many_2 = 2.2111200;
$few = $many + $many_2;

print("$many + $many_2 = $few <br>");


?>
Produce la siguiente salida del navegador:
2.28888 + 2.21112 = 4.5

Booleano
Solo tienen dos valores posibles, verdadero o falso. PHP proporciona un par
de constantes especialmente para su uso como booleanos: VERDADERO y
FALSO, que pueden usarse así:
if (TRUE)
print("This will always print<br>");

else
print("This will never print<br>");

Interpretando otros tipos como booleanos

Estas son las reglas para determinar la "verdad" de cualquier valor que aún no
sea del tipo booleano:
 Si el valor es un número, es falso si es exactamente igual a cero y verdadero en
caso contrario.
 Si el valor es una cadena, es falso si la cadena está vacía (tiene cero caracteres) o
es la cadena "0", y de lo contrario es verdadera.
 Los valores de tipo NULL son siempre falsos.
 Si el valor es una matriz, es falso si no contiene otros valores, y de lo contrario es
verdadero. Para un objeto, contener un valor significa tener una variable miembro
a la que se le ha asignado un valor.
 Los recursos válidos son verdaderos (aunque algunas funciones que devuelven
recursos cuando tienen éxito devolverán FALSO cuando no tienen éxito).
 No uses el doble como booleanos.
Cada una de las siguientes variables tiene el valor de verdad incrustado en su
nombre cuando se usa en un contexto booleano.
$true_num = 3 + 0.14159;
$true_str = "Tried and true"
$true_array[49] = "An array element";
$false_array = array();
$false_null = NULL;
$false_num = 999 - 999;
$false_str = "";

NULO
NULL es un tipo especial que solo tiene un valor: NULL. Para dar a una
variable el valor NULL, simplemente asígnelo:
$my_var = NULL;

La constante especial NULL se escribe con mayúscula por convención, pero


en realidad no distingue entre mayúsculas y minúsculas; también podrías
haber escrito:
$my_var = null;
Una variable que se le ha asignado NULL tiene las siguientes propiedades:
 Se evalúa como FALSO en un contexto booleano.
 Devuelve FALSE cuando se prueba con la función IsSet ().

Instrumentos de cuerda
Son secuencias de caracteres, como "PHP admite operaciones de
cadena". Los siguientes son ejemplos válidos de cadena
$string_1 = "This is a string in double quotes";
$string_2 = 'This is a somewhat longer, singly quoted
string';
$string_39 = "This string has thirty-nine characters";
$string_0 = ""; // a string with zero characters
Las cadenas con comillas simples se tratan casi literalmente, mientras que las
cadenas con comillas dobles reemplazan las variables con sus valores y
también interpretan especialmente ciertas secuencias de caracteres.
Demo en vivo
<?php
$variable = "name";
$literally = 'My $variable will not print!';

print($literally);
print "<br>";

$literally = "My $variable will print!";


print($literally);
?>

Esto producirá el siguiente resultado:


My $variable will not print!
My name will print
No hay límites artificiales en la longitud de la cadena: dentro de los límites de
la memoria disponible, debe poder hacer cadenas arbitrariamente largas.
Las cadenas que están delimitadas por comillas dobles (como en "esto") son
preprocesadas en las dos formas siguientes por PHP:
 Ciertas secuencias de caracteres que comienzan con una barra diagonal inversa
(\) se reemplazan con caracteres especiales
 Los nombres de las variables (que comienzan con $) se reemplazan con
representaciones de cadena de sus valores.
Los reemplazos de secuencia de escape son:

 \ n se reemplaza por el carácter de nueva línea


 \ r se reemplaza por el carácter de retorno de carro
 \ t se reemplaza por el carácter de tabulación
 \ $ se reemplaza por el signo de dólar en sí ($)
 \ "se reemplaza por una comilla doble (")
 \\ se reemplaza por una barra diagonal inversa simple (\)

Aquí documento

Puede asignar varias líneas a una sola variable de cadena usando el


documento aquí:
Demo en vivo
<?php
$channel =<<<_XML_

<channel>
<title>What's For Dinner</title>
<link>http://menu.example.com/ </link>
<description>Choose what to eat tonight.</description>
</channel>
_XML_;

echo <<<END
This uses the "here document" syntax to output multiple
lines with variable
interpolation. Note that the here document terminator must
appear on a line with
just a semicolon. no extra whitespace!

END;

print $channel;
?>

Esto producirá el siguiente resultado:


This uses the "here document" syntax to output
multiple lines with variable interpolation. Note
that the here document terminator must appear on a
line with just a semicolon. no extra whitespace!

<channel>
<title>What's For Dinner<title>
<link>http://menu.example.com/<link>
<description>Choose what to eat tonight.</description>

Alcance variable
El alcance se puede definir como el rango de disponibilidad que una variable
tiene para el programa en el que se declara. Las variables PHP pueden ser
uno de los cuatro tipos de alcance:
 Variables locales
 Parámetros de la función
 Variables globales
 Variables estáticas

Nomenclatura variable
Las reglas para nombrar una variable son:
 Los nombres de las variables deben comenzar con una letra o un carácter de
subrayado.
 Un nombre de variable puede consistir en números, letras, guiones bajos, pero no
puede usar caracteres como +, -,%, (,). &, etc.
No hay límite de tamaño para las variables

PHP - Tipos de constantes


Una constante es un nombre o un identificador para un valor simple. Un valor
constante no puede cambiar durante la ejecución del script. Por defecto, una
constante distingue entre mayúsculas y minúsculas. Por convención, los
identificadores constantes son siempre mayúsculas. Un nombre constante
comienza con una letra o un guión bajo, seguido de cualquier número de
letras, números o guiones bajos. Si ha definido una constante, nunca se puede
cambiar o indefinir.
Para definir una constante, debe usar la función define () y para recuperar el
valor de una constante, simplemente debe especificar su nombre. A diferencia
de las variables, no necesita tener una constante con un $. También puede
usar la función constante () para leer el valor de una constante si desea
obtener el nombre de la constante dinámicamente.
función constant ()
Como lo indica el nombre, esta función devolverá el valor de la constante.
Esto es útil cuando desea recuperar el valor de una constante, pero no conoce
su nombre, es decir, está almacenado en una variable o devuelto por una
función.

ejemplo de constant ()
<?php
define("MINSIZE", 50);

echo MINSIZE;
echo constant("MINSIZE"); // same thing as the previous
line
?>

Solo los datos escalares (booleano, entero, flotante y cadena) pueden estar
contenidos en constantes.

Las diferencias entre constantes y variables son


 No es necesario escribir un signo de dólar ($) antes de una constante, donde,
como en la Variable, uno tiene que escribir un signo de dólar.
 Las constantes no se pueden definir mediante una asignación simple, solo se
pueden definir utilizando la función define ().
 Las constantes se pueden definir y acceder desde cualquier lugar sin tener en
cuenta las reglas de alcance variable.
 Una vez que se han establecido las Constantes, no se pueden redefinir ni definir.

Nombres constantes válidos e inválidos


// Valid constant names
define("ONE", "first thing");
define("TWO2", "second thing");
define("THREE_3", "third thing");
define("__THREE__", "third value");

// Invalid constant names


define("2TWO", "second thing");

PHP constantes mágicas


PHP proporciona una gran cantidad de constantes predefinidas a cualquier
script que ejecute.
Hay cinco constantes mágicas que cambian dependiendo de dónde se
usan. Por ejemplo, el valor de __LINE__ depende de la línea en la que se
utiliza en su secuencia de comandos. Estas constantes especiales no
distinguen entre mayúsculas y minúsculas y son las siguientes:
Algunas constantes PHP "mágicas" se dan a continuación:

No Nombre y descripción
Señor

1
__LÍNEA__
El número de línea actual del archivo.

2
__ARCHIVO__
La ruta completa y el nombre del archivo. Si se usa dentro de un include, se
devuelve el nombre del archivo incluido. Desde PHP 4.0.2 , __FILE__ siempre
contiene una ruta absoluta, mientras que en versiones anteriores contenía una ruta
relativa en algunas circunstancias.

3
__FUNCIÓN__
El nombre de la función. (Agregado en PHP 4.3.0) A partir de PHP 5, esta
constante devuelve el nombre de la función tal como se declaró (distingue entre
mayúsculas y minúsculas). En PHP 4 su valor siempre está en minúscula.

44
__CLASE__
El nombre de la clase. (Agregado en PHP 4.3.0) A partir de PHP 5, esta constante
devuelve el nombre de la clase tal como se declaró (distingue entre mayúsculas y
minúsculas). En PHP 4 su valor siempre está en minúscula.

55
__MÉTODO__
El nombre del método de clase. (Agregado en PHP 5.0.0) El nombre del método se
devuelve como se declaró (distingue entre mayúsculas y minúsculas).

PHP - Tipos de operador


¿Qué es el operador? Se puede dar una respuesta simple usando la
expresión 4 + 5 es igual a 9 . Aquí 4 y 5 se llaman operandos y + se llama
operador. El lenguaje PHP admite los siguientes tipos de operadores.

 Operadores aritméticos
 Operadores de comparación
 Operadores lógicos (o relacionales)
 Operadores de Asignación
 Operadores condicionales (o ternarios)
Echemos un vistazo a todos los operadores uno por uno.

Operadores aritméticos
Los siguientes operadores aritméticos son compatibles con el lenguaje PHP:
Suponga que la variable A contiene 10 y la variable B contiene 20 y luego -
Mostrar ejemplos

Operador Descripción Ejemplo

+ Agrega dos operandos A + B dará 30

- Resta el segundo operando del primero A - B dará -10

** Multiplica ambos operandos A * B dará 200

// Dividir numerador por des numerador B / A dará 2

% Operador de módulo y resto después de una división entera B% A dará 0

++ Operador de incremento, aumenta el valor entero en uno A ++ dará 11

- Operador de disminución, disminuye el valor entero en uno A-- dará 9

Operadores de comparación
Los siguientes operadores de comparación son compatibles con el lenguaje
PHP
Suponga que la variable A contiene 10 y la variable B contiene 20 y luego -
Mostrar ejemplos

Operador Descripción Ejemplo

== Comprueba si el valor de dos operandos es igual o no, en caso (A == B) no


afirmativo, la condición se vuelve verdadera. es cierto.
!= Comprueba si el valor de dos operandos es igual o no, si los (A! = B) es
valores no son iguales, la condición se vuelve verdadera. cierto.

> Comprueba si el valor del operando izquierdo es mayor que el (A> B) no es


valor del operando derecho, en caso afirmativo, la condición se cierto.
vuelve verdadera.

< Comprueba si el valor del operando izquierdo es menor que el (A <B) es


valor del operando derecho, en caso afirmativo, la condición se cierto.
vuelve verdadera.

>= Comprueba si el valor del operando izquierdo es mayor o igual (A> = B) no


que el valor del operando derecho, en caso afirmativo, la es cierto.
condición se vuelve verdadera.

<= Comprueba si el valor del operando izquierdo es menor o igual (A <= B) es


que el valor del operando derecho, en caso afirmativo, la cierto.
condición se vuelve verdadera.

Operadores logicos
Los siguientes operadores lógicos son compatibles con el lenguaje PHP.
Suponga que la variable A contiene 10 y la variable B contiene 20 y luego -
Mostrar ejemplos

Operador Descripción Ejemplo

y Llamado operador lógico AND. Si ambos operandos son (A y B) es


verdaderos, entonces la condición se vuelve verdadera. cierto.

o Llamado Lógico O Operador. Si alguno de los dos operandos no es (A o B) es


cero, la condición se vuelve verdadera. cierto.

&& Llamado operador lógico AND. Si ambos operandos son distintos (A y B) es


de cero, la condición se vuelve verdadera. cierto.

|| Llamado Lógico O Operador. Si alguno de los dos operandos no es (A || B) es


cero, la condición se vuelve verdadera. cierto.
! Llamado operador lógico NO. Se usa para invertir el estado lógico ! (A y B) es
de su operando. Si una condición es verdadera, entonces el falso.
operador lógico NO hará falso.

Operadores de Asignación
Los siguientes operadores de asignación son compatibles con el lenguaje
PHP:
Mostrar ejemplos

Operador Descripción Ejemplo

= Operador de asignación simple, asigna valores de C = A + B asignará el


operandos del lado derecho al operando del lado valor de A + B a C
izquierdo

+= Agregar operador de asignación AND, agrega el C + = A es


operando derecho al operando izquierdo y asigna el equivalente a C = C
resultado al operando izquierdo +A

-= Restar operador de asignación AND, resta el operando C - = A es


derecho del operando izquierdo y asigna el resultado al equivalente a C = C -
operando izquierdo A

*= Operador de multiplicación Y asignación, multiplica el C * = A es


operando derecho con el operando izquierdo y asigna el equivalente a C = C *
resultado al operando izquierdo A

/= Operador de división Y asignación, divide el operando C / = A es


izquierdo con el operando derecho y asigna el resultado equivalente a C = C /
al operando izquierdo A

%= Operador de asignación de módulo Y, toma módulo C% = A es


usando dos operandos y asigna el resultado al operando equivalente a C =
izquierdo C% A

Operador Condicional
Hay un operador más llamado operador condicional. Primero evalúa una
expresión para un valor verdadero o falso y luego ejecuta una de las dos
declaraciones dadas dependiendo del resultado de la evaluación. El operador
condicional tiene esta sintaxis:
Mostrar ejemplos

Operador Descripción Ejemplo

?: Expresión Si la condición es verdadera? Entonces valor X: de lo


condicional contrario, valor Y

Categorías de operadores
Todos los operadores que hemos discutido anteriormente se pueden clasificar
en las siguientes categorías:
 Operadores de prefijo unario, que preceden a un solo operando.
 Operadores binarios, que toman dos operandos y realizan una variedad de
operaciones aritméticas y lógicas.
 El operador condicional (un operador ternario), que toma tres operandos y evalúa
la segunda o tercera expresión, dependiendo de la evaluación de la primera
expresión.
 Operadores de asignación, que asignan un valor a una variable.

Precedencia de operadores PHP


La precedencia del operador determina la agrupación de términos en una
expresión. Esto afecta cómo se evalúa una expresión. Ciertos operadores
tienen mayor prioridad que otros; por ejemplo, el operador de multiplicación
tiene mayor prioridad que el operador de suma:
Por ejemplo x = 7 + 3 * 2; Aquí se asigna x 13, no 20 porque el operador *
tiene mayor prioridad que +, por lo que primero se multiplica por 3 * 2 y luego
se suma a 7.
Aquí los operadores con la precedencia más alta aparecen en la parte superior
de la tabla, aquellos con la más baja aparecen en la parte inferior. Dentro de
una expresión, los operadores de mayor precedencia se evaluarán primero.

Categoría Operador Asociatividad

Unario ! ++ - De derecha a izquierda

Multiplicativo * /% De izquierda a derecha

Aditivo +- De izquierda a derecha


Relacional <<=>> = De izquierda a derecha

Igualdad ==! = De izquierda a derecha

Y lógico && De izquierda a derecha

O lógico || De izquierda a derecha

Condicional ?: De derecha a izquierda

Asignación = + = - = * = / =% = De derecha a izquierda

Toma de decisiones
Las declaraciones if, elseif ... else y switch se utilizan para tomar decisiones
basadas en la condición diferente.
Puede usar declaraciones condicionales en su código para tomar sus
decisiones. PHP admite las siguientes tres declaraciones de toma de
decisiones:
 instrucción if ... else : use esta instrucción si desea ejecutar un conjunto de
código cuando una condición es verdadera y otra si la condición no es verdadera
 instrucción elseif : se usa con la instrucción if ... else para ejecutar un conjunto
de código si una de las varias condiciones es verdadera
 declaración de cambio : se usa si desea seleccionar uno de los muchos bloques
de código que se ejecutarán, use la declaración de cambio. La instrucción switch
se usa para evitar bloques largos de código if..elseif..else.

La declaración If ... Else


Si desea ejecutar algún código si una condición es verdadera y otro código si
una condición es falsa, use la instrucción if .... else.

Sintaxis
if (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;

Ejemplo

El siguiente ejemplo mostrará "¡Que tengas un buen fin de semana!" si el día


actual es viernes, de lo contrario, generará "¡Que tengas un buen día!":
Demo en vivo
<html>
<body>

<?php
$d = date("D");
if ($d == "Fri")
echo "Have a nice weekend!";

else
echo "Have a nice day!";
?>

</body>
</html>

Producirá el siguiente resultado:


Have a nice weekend!

La otra declaración
Si desea ejecutar algún código si una de las varias condiciones es verdadera,
use la instrucción elseif

Sintaxis

if (condition)
code to be executed if condition is true;
elseif (condition)
code to be executed if condition is true;
else
code to be executed if condition is false;

Ejemplo

El siguiente ejemplo mostrará "¡Que tengas un buen fin de semana!" si el día


actual es viernes y "¡Que tengas un buen domingo!" si el día actual es
domingo De lo contrario, generará "¡Que tengas un buen día!" -
Demo en vivo
<html>
<body>

<?php
$d = date("D");

if ($d == "Fri")
echo "Have a nice weekend!";

elseif ($d == "Sun")


echo "Have a nice Sunday!";

else
echo "Have a nice day!";
?>
</body>
</html>
Producirá el siguiente resultado:
Have a nice Weekend!

La declaración de cambio
Si desea seleccionar uno de los muchos bloques de código que se ejecutarán,
use la instrucción Switch.
La instrucción switch se usa para evitar bloques largos de código
if..elseif..else.

Sintaxis
switch (expression){
case label1:
code to be executed if expression = label1;
break;

case label2:
code to be executed if expression = label2;
break;
default:

code to be executed
if expression is different
from both label1 and label2;
}

Ejemplo

La declaración de cambio funciona de una manera inusual. Primero evalúa la


expresión dada y luego busca una etiqueta que coincida con el valor
resultante. Si se encuentra un valor coincidente, se ejecutará el código
asociado con la etiqueta correspondiente o si ninguna de las etiquetas
coincide, la instrucción ejecutará cualquier código predeterminado
especificado.
Demo en vivo
<html>
<body>

<?php
$d = date("D");

switch ($d){
case "Mon":
echo "Today is Monday";
break;
case "Tue":
echo "Today is Tuesday";
break;

case "Wed":
echo "Today is Wednesday";
break;

case "Thu":
echo "Today is Thursday";
break;

case "Fri":
echo "Today is Friday";
break;

case "Sat":
echo "Today is Saturday";
break;

case "Sun":
echo "Today is Sunday";
break;

default:
echo "Wonder which day is this ?";
}
?>

</body>
</html>

Producirá el siguiente resultado:


Today is Monday

PHP - Tipos de bucle


Los bucles en PHP se usan para ejecutar el mismo bloque de código un
número específico de veces. PHP admite los siguientes cuatro tipos de bucles.
 for : recorre un bloque de código un número específico de veces.
 while : recorre un bloque de código si y mientras una condición especificada sea
verdadera.
 do ... while : recorre un bloque de código una vez y luego repite el ciclo siempre
que se cumpla una condición especial.
 foreach : recorre un bloque de código para cada elemento de una matriz.
Discutiremos acerca de continuar y romper palabras clave utilizadas para
controlar la ejecución de bucles.

La declaración de bucle for


La declaración for se usa cuando sabe cuántas veces desea ejecutar una
declaración o un bloque de declaraciones.

Sintaxis

for (initialization; condition; increment){


code to be executed;
}
El inicializador se usa para establecer el valor de inicio para el contador del
número de iteraciones de bucle. Aquí se puede declarar una variable para este
propósito y es tradicional llamarla $ i.

Ejemplo

El siguiente ejemplo realiza cinco iteraciones y cambia el valor asignado de


dos variables en cada pasada del bucle:
Demo en vivo
<html>
<body>
<?php
$a = 0;
$b = 0;

for( $i = 0; $i<5; $i++ ) {


$a += 10;
$b += 5;
}

echo ("At the end of the loop a = $a and b = $b" );


?>

</body>
</html>
Esto producirá el siguiente resultado:
At the end of the loop a = 50 and b = 25

La declaración del bucle while


La instrucción while ejecutará un bloque de código siempre y cuando una
expresión de prueba sea verdadera.
Si la expresión de prueba es verdadera, se ejecutará el bloque de
código. Después de que el código se haya ejecutado, la expresión de prueba
se evaluará nuevamente y el ciclo continuará hasta que la expresión de
prueba sea falsa.
Sintaxis
while (condition) {
code to be executed;
}

Ejemplo

Este ejemplo disminuye un valor variable en cada iteración del bucle y el


contador aumenta hasta llegar a 10 cuando la evaluación es falsa y finaliza el
bucle.
Demo en vivo
<html>
<body>

<?php
$i = 0;
$num = 50;

while( $i < 10) {


$num--;
$i++;
}

echo ("Loop stopped at i = $i and num = $num" );


?>

</body>
</html>

Esto producirá el siguiente resultado:


Loop stopped at i = 10 and num = 40

La declaración de bucle do ... while


La instrucción do ... while ejecutará un bloque de código al menos una vez;
luego repetirá el ciclo siempre que una condición sea verdadera.

Sintaxis

do {
code to be executed;
}
while (condition);

Ejemplo

El siguiente ejemplo incrementará el valor de i al menos una vez, y continuará


incrementando la variable i siempre que tenga un valor inferior a 10:
Demo en vivo
<html>
<body>

<?php
$i = 0;
$num = 0;

do {
$i++;
}

while( $i < 10 );
echo ("Loop stopped at i = $i" );
?>

</body>
</html>
Esto producirá el siguiente resultado:
Loop stopped at i = 10

La declaración de bucle foreach


La instrucción foreach se usa para recorrer las matrices. Para cada pasada, el
valor del elemento de matriz actual se asigna a $ value y el puntero de la
matriz se mueve por uno y en la próxima pasada se procesará el siguiente
elemento.

Sintaxis

foreach (array as value) {


code to be executed;
}

Ejemplo

Pruebe el siguiente ejemplo para enumerar los valores de una matriz.


Demo en vivo
<html>
<body>

<?php
$array = array( 1, 2, 3, 4, 5);

foreach( $array as $value ) {


echo "Value is $value <br />";
}
?>
</body>
</html>
Esto producirá el siguiente resultado:
Value is 1
Value is 2
Value is 3
Value is 4
Value is 5

La declaración de ruptura
La palabra clave de ruptura de PHP se usa para terminar la ejecución de un
ciclo prematuramente.
La declaración de ruptura se encuentra dentro del bloque de declaración. Te
da control total y siempre que quieras salir del bucle puedes salir. Después de
salir de un ciclo, se ejecutará una declaración inmediata al ciclo.

Ejemplo

En el siguiente ejemplo, la prueba de condición se vuelve verdadera cuando el


valor del contador alcanza 3 y el ciclo termina.
Demo en vivo
<html>
<body>

<?php
$i = 0;

while( $i < 10) {


$i++;
if( $i == 3 )break;
}
echo ("Loop stopped at i = $i" );
?>

</body>
</html>
Esto producirá el siguiente resultado:
Loop stopped at i = 3

La declaración continua
La palabra clave PHP continue se usa para detener la iteración actual de un
ciclo, pero no termina el ciclo.
Al igual que la instrucción break , la instrucción continue se encuentra dentro
del bloque de la instrucción que contiene el código que ejecuta el bucle,
precedido por una prueba condicional. Para el pase que encuentra
la declaración de continuación , se omite el resto del código de bucle y
comienza el próximo pase.

Ejemplo

En el siguiente ejemplo, el ciclo imprime el valor de la matriz, pero para qué


condición se cumple, simplemente omite el código y se imprime el siguiente
valor.
Demo en vivo
<html>
<body>

<?php
$array = array( 1, 2, 3, 4, 5);

foreach( $array as $value ) {


if( $value == 3 )continue;
echo "Value is $value <br />";
}
?>

</body>
</html>

Esto producirá el siguiente resultado:


Value is 1
Value is 2
Value is 4
Value is 5

PHP - Matrices
Una matriz es una estructura de datos que almacena uno o más tipos de
valores similares en un solo valor. Por ejemplo, si desea almacenar 100
números, en lugar de definir 100 variables, es fácil definir una matriz de 100
longitudes.
Hay tres tipos diferentes de matrices y se accede a cada valor de matriz
utilizando una ID c que se denomina índice de matriz.
 Matriz numérica : una matriz con un índice numérico. Los valores se almacenan y
acceden de manera lineal.
 Matriz asociativa : una matriz con cadenas como índice. Esto almacena valores
de elementos en asociación con valores clave en lugar de en un estricto orden de
índice lineal.
 Matriz multidimensional : se accede a una matriz que contiene una o más
matrices y valores mediante múltiples índices
NOTA : las funciones de matriz incorporadas se proporcionan en las funciones
de matriz de PHP de referencia de funciones

Matriz numérica
Estas matrices pueden almacenar números, cadenas y cualquier objeto, pero
su índice estará representado por números. Por defecto, el índice de matriz
comienza desde cero.

Ejemplo

El siguiente es el ejemplo que muestra cómo crear y acceder a matrices


numéricas.
Aquí hemos utilizado la función array () para crear una matriz. Esta función se
explica en la referencia de función.
Demo en vivo
<html>
<body>

<?php
/* First method to create array. */
$numbers = array( 1, 2, 3, 4, 5);

foreach( $numbers as $value ) {


echo "Value is $value <br />";
}

/* Second method to create array. */


$numbers[0] = "one";
$numbers[1] = "two";
$numbers[2] = "three";
$numbers[3] = "four";
$numbers[4] = "five";

foreach( $numbers as $value ) {


echo "Value is $value <br />";
}
?>

</body>
</html>

Esto producirá el siguiente resultado:


Value is 1
Value is 2
Value is 3
Value is 4
Value is 5
Value is one
Value is two
Value is three
Value is four
Value is five

Matrices asociativas
Las matrices asociativas son muy similares a las matrices numéricas en
términos de funcionalidad, pero son diferentes en términos de su índice. La
matriz asociativa tendrá su índice como cadena para que pueda establecer
una asociación fuerte entre clave y valores.
Para almacenar los salarios de los empleados en una matriz, una matriz
indexada numéricamente no sería la mejor opción. En cambio, podríamos usar
los nombres de los empleados como las claves en nuestra matriz asociativa, y
el valor sería su salario respectivo.
NOTA : No mantenga la matriz asociativa dentro de comillas dobles mientras
imprime; de lo contrario, no devolvería ningún valor.

Ejemplo

Demo en vivo
<html>
<body>

<?php
/* First method to associate create array. */
$salaries = array("mohammad" => 2000, "qadir" =>
1000, "zara" => 500);

echo "Salary of mohammad is ". $salaries['mohammad']


. "<br />";
echo "Salary of qadir is ". $salaries['qadir'].
"<br />";
echo "Salary of zara is ". $salaries['zara']. "<br
/>";

/* Second method to create array. */


$salaries['mohammad'] = "high";
$salaries['qadir'] = "medium";
$salaries['zara'] = "low";

echo "Salary of mohammad is ". $salaries['mohammad']


. "<br />";
echo "Salary of qadir is ". $salaries['qadir'].
"<br />";
echo "Salary of zara is ". $salaries['zara']. "<br
/>";
?>

</body>
</html>
Esto producirá el siguiente resultado:
Salary of mohammad is 2000
Salary of qadir is 1000
Salary of zara is 500
Salary of mohammad is high
Salary of qadir is medium
Salary of zara is low

Matrices Multidimensionales
Una matriz multidimensional de cada elemento en la matriz principal también
puede ser una matriz. Y cada elemento en la sub-matriz puede ser una matriz,
y así sucesivamente. Se accede a los valores en la matriz multidimensional
utilizando múltiples índices.

Ejemplo

En este ejemplo, creamos una matriz bidimensional para almacenar las


marcas de tres estudiantes en tres materias:
Este ejemplo es una matriz asociativa, puede crear una matriz numérica de la
misma manera.
Demo en vivo
<html>
<body>

<?php
$marks = array(
"mohammad" => array (
"physics" => 35,
"maths" => 30,
"chemistry" => 39
),

"qadir" => array (


"physics" => 30,
"maths" => 32,
"chemistry" => 29
),

"zara" => array (


"physics" => 31,
"maths" => 22,
"chemistry" => 39
)
);

/* Accessing multi-dimensional array values */


echo "Marks for mohammad in physics : " ;
echo $marks['mohammad']['physics'] . "<br />";

echo "Marks for qadir in maths : ";


echo $marks['qadir']['maths'] . "<br />";

echo "Marks for zara in chemistry : " ;


echo $marks['zara']['chemistry'] . "<br />";
?>

</body>
</html>
Esto producirá el siguiente resultado:
Marks for mohammad in physics : 35
Marks for qadir in maths : 32
Marks for zara in chemistry : 39

PHP - Cadenas
Son secuencias de caracteres, como "PHP admite operaciones de cadena".
NOTA - Las funciones de cadena incorporadas se proporcionan en las
funciones de cadena de PHP de referencia de funciones
Los siguientes son ejemplos válidos de cadena
$string_1 = "This is a string in double quotes";
$string_2 = "This is a somewhat longer, singly quoted
string";
$string_39 = "This string has thirty-nine characters";
$string_0 = ""; // a string with zero characters
Las cadenas con comillas simples se tratan casi literalmente, mientras que las
cadenas con comillas dobles reemplazan las variables con sus valores y
también interpretan especialmente ciertas secuencias de caracteres.
Demo en vivo
<?php
$variable = "name";
$literally = 'My $variable will not print!\\n';

print($literally);
print "<br />";

$literally = "My $variable will print!\\n";

print($literally);
?>

Esto producirá el siguiente resultado:


My $variable will not print!\n
My name will print!\n
No hay límites artificiales en la longitud de la cadena: dentro de los límites de
la memoria disponible, debe poder hacer cadenas arbitrariamente largas.
Las cadenas que están delimitadas por comillas dobles (como en "esto") son
preprocesadas en las dos formas siguientes por PHP:
 Ciertas secuencias de caracteres que comienzan con una barra diagonal inversa
(\) se reemplazan con caracteres especiales
 Los nombres de las variables (que comienzan con $) se reemplazan con
representaciones de cadena de sus valores.
Los reemplazos de secuencia de escape son:

 \ n se reemplaza por el carácter de nueva línea


 \ r se reemplaza por el carácter de retorno de carro
 \ t se reemplaza por el carácter de tabulación
 \ $ se reemplaza por el signo de dólar en sí ($)
 \ "se reemplaza por una comilla doble (")
 \\ se reemplaza por una barra diagonal inversa simple (\)

Operador de concatenación de cadenas


Para concatenar dos variables de cadena juntas, use el operador punto (.) -
Demo en vivo
<?php
$string1="Hello World";
$string2="1234";

echo $string1 . " " . $string2;


?>

Esto producirá el siguiente resultado:


Hello World 1234
Si miramos el código anterior, verá que usamos el operador de concatenación
dos veces. Esto se debe a que tuvimos que insertar una tercera cadena.
Entre las dos variables de cadena agregamos una cadena con un solo
carácter, un espacio vacío, para separar las dos variables.

Usando la función strlen ()


La función strlen () se usa para encontrar la longitud de una cadena.
Busquemos la longitud de nuestra cadena "¡Hola, mundo!" -
Demo en vivo
<?php
echo strlen("Hello world!");
?>
Esto producirá el siguiente resultado:
12
La longitud de una cadena a menudo se usa en bucles u otras funciones,
cuando es importante saber cuándo termina la cadena. (es decir, en un bucle,
nos gustaría detener el bucle después del último carácter de la cadena)

Usando la función strpos ()


La función strpos () se usa para buscar una cadena o carácter dentro de una
cadena.
Si se encuentra una coincidencia en la cadena, esta función devolverá la
posición de la primera coincidencia. Si no se encuentra ninguna coincidencia,
devolverá FALSE.
Veamos si podemos encontrar la cadena "mundo" en nuestra cadena -
Demo en vivo
<?php
echo strpos("Hello world!","world");
?>
Esto producirá el siguiente resultado:
6
Como puede ver, la posición del "mundo" de la cadena en nuestra cadena es
la posición 6. La razón por la que es 6, y no 7, es que la primera posición en la
cadena es 0, y no 1.
PHP - Conceptos web
Esta sesión demuestra cómo PHP puede proporcionar contenido dinámico de
acuerdo con el tipo de navegador, números generados aleatoriamente o
entrada del usuario. También demostró cómo se puede redirigir el navegador
del cliente.

Identificación del navegador y la plataforma


PHP crea algunas variables de entorno útiles que se pueden ver en la página
phpinfo.php que se utilizó para configurar el entorno PHP.
Una de las variables de entorno establecidas por PHP
es HTTP_USER_AGENT, que identifica el navegador y el sistema operativo
del usuario.
PHP proporciona una función getenv () para acceder al valor de todas las
variables de entorno. La información contenida en la variable de entorno
HTTP_USER_AGENT se puede usar para crear contenido dinámico apropiado
para el navegador.
El siguiente ejemplo muestra cómo puede identificar un navegador cliente y un
sistema operativo.
NOTA - La función preg_match () se discute en la sesión de expresiones
regulares de PHP .
<html>
<body>

<?php
function getBrowser() {
$u_agent = $_SERVER['HTTP_USER_AGENT'];
$bname = 'Unknown';
$platform = 'Unknown';
$version = "";

//First get the platform?


if (preg_match('/linux/i', $u_agent)) {
$platform = 'linux';
}elseif (preg_match('/macintosh|mac os x/i',
$u_agent)) {
$platform = 'mac';
}elseif (preg_match('/windows|win32/i',
$u_agent)) {
$platform = 'windows';
}

// Next get the name of the useragent yes


seperately and for good reason
if(preg_match('/MSIE/i',$u_agent) &&
!preg_match('/Opera/i',$u_agent)) {
$bname = 'Internet Explorer';
$ub = "MSIE";
} elseif(preg_match('/Firefox/i',$u_agent)) {
$bname = 'Mozilla Firefox';
$ub = "Firefox";
} elseif(preg_match('/Chrome/i',$u_agent)) {
$bname = 'Google Chrome';
$ub = "Chrome";
}elseif(preg_match('/Safari/i',$u_agent)) {
$bname = 'Apple Safari';
$ub = "Safari";
}elseif(preg_match('/Opera/i',$u_agent)) {
$bname = 'Opera';
$ub = "Opera";
}elseif(preg_match('/Netscape/i',$u_agent)) {
$bname = 'Netscape';
$ub = "Netscape";
}

// finally get the correct version number


$known = array('Version', $ub, 'other');
$pattern = '#(?<browser>' . join('|', $known) .
')[/ ]+(?<version>[0-9.|a-zA-Z.]*)#';

if (!preg_match_all($pattern, $u_agent,
$matches)) {
// we have no matching number just continue
}

// see how many we have


$i = count($matches['browser']);

if ($i != 1) {
//we will have two since we are not using
'other' argument yet
//see if version is before or after the name
if (strripos($u_agent,"Version") <
strripos($u_agent,$ub)){
$version= $matches['version'][0];
}else {
$version= $matches['version'][1];
}
}else {
$version= $matches['version'][0];
}

// check if we have a number


if ($version == null || $version == "") {$version
= "?";}
return array(
'userAgent' => $u_agent,
'name' => $bname,
'version' => $version,
'platform' => $platform,
'pattern' => $pattern
);
}

// now try it
$ua = getBrowser();
$yourbrowser = "Your browser: " . $ua['name'] . " "
. $ua['version'] .
" on " .$ua['platform'] . " reports: <br >" .
$ua['userAgent'];

print_r($yourbrowser);
?>

</body>
</html>

Esto está produciendo el siguiente resultado en mi máquina. Este resultado


puede ser diferente para su computadora dependiendo de lo que esté usando.
Producirá el siguiente resultado:
Your browser: Google Chrome 54.0.2840.99 on windows reports:
Mozilla/5.0 (Windows NT 6.3; Win64; x64) AppleWebKit/537.36
(KHTML, like Gecko)
Chrome/54.0.2840.99 Safari/537.36

Mostrar imágenes al azar


La función rand () de PHP se usa para generar un número aleatorio. Esta
función puede generar números dentro de un rango dado. El generador de
números aleatorios debe sembrarse para evitar que se genere un patrón
regular de números. Esto se logra utilizando la función srand () que especifica
el número de semilla como argumento.
El siguiente ejemplo muestra cómo puede mostrar diferentes imágenes cada
vez de cuatro imágenes:
Demo en vivo
<html>
<body>

<?php
srand( microtime() * 1000000 );
$num = rand( 1, 4 );

switch( $num ) {
case 1: $image_file = "/php/images/logo.png";
break;

case 2: $image_file = "/php/images/php.jpg";


break;

case 3: $image_file = "/php/images/logo.png";


break;

case 4: $image_file = "/php/images/php.jpg";


break;
}
echo "Random Image : <img src=$image_file />";
?>

</body>
</html>

Usar formularios HTML


Lo más importante a tener en cuenta al tratar con formularios HTML y PHP es
que cualquier elemento de formulario en una página HTML estará
automáticamente disponible para sus scripts PHP.
Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.

<?php
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}

echo "Welcome ". $_POST['name']. "<br />";


echo "You are ". $_POST['age']. " years old.";
exit();
}
?>
<html>
<body>

<form action = "<?php $_PHP_SELF ?>" method = "POST">


Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>

</body>
</html>

Producirá el siguiente resultado:

 La variable predeterminada de PHP $


_PHP_SELF se usa para el nombre del
script PHP y cuando hace clic en el
botón "enviar", se llamará al mismo
script PHP y producirá el siguiente
resultado:
 El método = "POST" se utiliza para
publicar datos de usuario en el script del
servidor. Hay dos métodos para publicar
datos en el script del servidor que se
analizan en el capítulo PHP GET &
POST .

Redirección del navegador


La función de encabezado PHP () proporciona encabezados HTTP sin
procesar al navegador y puede usarse para redirigirlo a otra ubicación. La
secuencia de comandos de redirección debe estar en la parte superior de la
página para evitar que se cargue cualquier otra parte de la página.
El objetivo se especifica mediante el encabezado Ubicación: como argumento
de la función de encabezado () . Después de llamar a esta función, la
función exit () se puede usar para detener el análisis del resto del código.
El siguiente ejemplo muestra cómo puede redirigir una solicitud del navegador
a otra página web. Pruebe este ejemplo poniendo el código fuente en el script
test.php.

<?php
if( $_POST["location"] ) {
$location = $_POST["location"];
header( "Location:$location" );

exit();
}
?>
<html>
<body>

<p>Choose a site to visit :</p>

<form action = "<?php $_SERVER['PHP_SELF'] ?>" method


="POST">
<select name = "location">.

<option value =
"http://www.postparaprogramadores.com">
Postparaprogramadores.com
</option>

<option value = "http://www.google.com">


Google Search Page
</option>

</select>
<input type = "submit" />
</form>

</body>
</html>

Producirá el siguiente resultado:


PHP - Métodos GET & POST
Hay dos formas en que el cliente del navegador puede enviar información al
servidor web.

 El método GET
 El método POST
Antes de que el navegador envíe la información, la codifica utilizando un
esquema llamado codificación URL. En este esquema, los pares de nombre /
valor se unen con signos iguales y diferentes pares están separados por el
signo "&".
name1=value1&name2=value2&name3=value3
Los espacios se eliminan y se reemplazan con el carácter + y cualquier otro
carácter no alfanumérico se reemplaza con valores hexadecimales. Después
de codificar la información, se envía al servidor.

El método GET
El método GET envía la información codificada del usuario adjunta a la
solicitud de página. La página y la información codificada están separados por
el ? personaje.
http://www.test.com/index.htm?name1=value1&name2=value2
 El método GET produce una cadena larga que aparece en los registros de su
servidor, en el cuadro Ubicación del navegador.
 El método GET está restringido a enviar solo hasta 1024 caracteres.
 Nunca use el método GET si tiene una contraseña u otra información confidencial
para enviar al servidor.
 GET no se puede usar para enviar datos binarios, como imágenes o documentos
de texto, al servidor.
 Se puede acceder a los datos enviados por el método GET utilizando la variable
de entorno QUERY_STRING.
 El PHP proporciona una matriz asociativa $ _GET para acceder a toda la
información enviada utilizando el método GET.
Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.
<?php
if( $_GET["name"] || $_GET["age"] ) {
echo "Welcome ". $_GET['name']. "<br />";
echo "You are ". $_GET['age']. " years old.";

exit();
}
?>
<html>
<body>

<form action = "<?php $_PHP_SELF ?>" method = "GET">


Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>

</body>
</html>
Producirá el siguiente resultado:

El método POST
El método POST transfiere información a través de encabezados HTTP. La
información se codifica como se describe en el caso del método GET y se
coloca en un encabezado llamado QUERY_STRING.
 El método POST no tiene ninguna restricción en el tamaño de los datos que se
enviarán.
 El método POST se puede utilizar para enviar datos ASCII y binarios.
 Los datos enviados por el método POST pasan por el encabezado HTTP, por lo
que la seguridad depende del protocolo HTTP. Al utilizar HTTP seguro, puede
asegurarse de que su información esté segura.
 El PHP proporciona una matriz asociativa $ _POST para acceder a toda la
información enviada utilizando el método POST.
Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.
<?php
if( $_POST["name"] || $_POST["age"] ) {
if (preg_match("/[^A-Za-z'-]/",$_POST['name'] )) {
die ("invalid name and name should be alpha");
}
echo "Welcome ". $_POST['name']. "<br />";
echo "You are ". $_POST['age']. " years old.";

exit();
}
?>
<html>
<body>

<form action = "<?php $_PHP_SELF ?>" method = "POST">


Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>

</body>
</html>

Producirá el siguiente resultado:

La variable $ _REQUEST
La variable PHP $ _REQUEST contiene el contenido de $ _GET, $ _POST y $
_COOKIE. Discutiremos la variable $ _COOKIE cuando expliquemos sobre las
cookies.
La variable PHP $ _REQUEST se puede usar para obtener el resultado de los
datos del formulario enviados con los métodos GET y POST.
Pruebe el siguiente ejemplo poniendo el código fuente en el script test.php.
<?php
if( $_REQUEST["name"] || $_REQUEST["age"] ) {
echo "Welcome ". $_REQUEST['name']. "<br />";
echo "You are ". $_REQUEST['age']. " years old.";
exit();
}
?>
<html>
<body>

<form action = "<?php $_PHP_SELF ?>" method = "POST">


Name: <input type = "text" name = "name" />
Age: <input type = "text" name = "age" />
<input type = "submit" />
</form>

</body>
</html>
Aquí la variable $ _PHP_SELF contiene el nombre del auto script en el que se
llama.
Producirá el siguiente resultado:

PHP - Inclusión de archivos


Puede incluir el contenido de un archivo PHP en otro archivo PHP antes de
que el servidor lo ejecute. Hay dos funciones PHP que se pueden usar para
incluir un archivo PHP en otro archivo PHP.

 La función include ()
 La función require ()
Este es un punto fuerte de PHP que ayuda a crear funciones, encabezados,
pies de página o elementos que se pueden reutilizar en varias páginas. Esto
ayudará a los desarrolladores a facilitar el cambio del diseño del sitio web
completo con un mínimo esfuerzo. Si se requiere algún cambio, en lugar de
cambiar miles de archivos, simplemente cambie el archivo incluido.

La función include ()
La función include () toma todo el texto en un archivo especificado y lo copia
en el archivo que usa la función include. Si hay algún problema al cargar un
archivo, la función include () genera una advertencia, pero el script continuará
ejecutándose.
Suponga que desea crear un menú común para su sitio web. Luego cree un
archivo menu.php con el siguiente contenido.
<a
href="http://www.postparaprogramadores.com/index.htm">Home</a
> -
<a
href="http://www.postparaprogramadores.com/ebxml">ebXML</a> -
<a href="http://www.postparaprogramadores.com/ajax">AJAX</a>
-
<a href="http://www.postparaprogramadores.com/perl">PERL</a>
<br />
Ahora cree tantas páginas como desee e incluya este archivo para crear el
encabezado. Por ejemplo, ahora su archivo test.php puede tener el siguiente
contenido.
<html>
<body>

<?php include("menu.php"); ?>


<p>This is an example to show how to include PHP
file!</p>

</body>
</html>

Producirá el siguiente resultado:

La función require ()
La función require () toma todo el texto en un archivo especificado y lo copia
en el archivo que usa la función de inclusión. Si hay algún problema al cargar
un archivo, la función require () genera un error fatal y detiene la ejecución del
script.
Por lo tanto, no hay diferencia en require () e include (), excepto que manejan
condiciones de error. Se recomienda utilizar la función require () en lugar de
include (), ya que los scripts no deberían continuar ejecutándose si faltan
archivos o si tienen un nombre incorrecto.
Puede intentar usar el ejemplo anterior con la función require () y generará el
mismo resultado. Pero si intenta seguir dos ejemplos en los que el archivo no
existe, obtendrá resultados diferentes.
<html>
<body>

<?php include("xxmenu.php"); ?>


<p>This is an example to show how to include wrong PHP
file!</p>

</body>
</html>
Esto producirá el siguiente resultado:
This is an example to show how to include wrong PHP file!
Ahora intentemos el mismo ejemplo con la función require ().
<html>
<body>

<?php require("xxmenu.php"); ?>


<p>This is an example to show how to include wrong PHP
file!</p>

</body>
</html>
Esta vez la ejecución del archivo se detiene y no se muestra nada.
NOTA : puede recibir mensajes de advertencia simples o mensajes de error
fatales o nada en absoluto. Esto depende de la configuración de su servidor
PHP.

PHP - Archivos y E / S
Este capítulo explicará las siguientes funciones relacionadas con los archivos:

 Abrir un archivo
 Leyendo un archivo
 Escribir un archivo
 Cerrar un archivo

Abrir y cerrar archivos


La función PHP fopen () se usa para abrir un archivo. Requiere dos
argumentos que indiquen primero el nombre del archivo y luego el modo en el
cual operar.
Los modos de archivos se pueden especificar como una de las seis opciones
en esta tabla.

No Modo y Propósito
Señor

1
r
Abre el archivo solo para lectura.
Coloca el puntero del archivo al comienzo del archivo.

2
r+
Abre el archivo para leer y escribir.
Coloca el puntero del archivo al comienzo del archivo.

3
w
Abre el archivo solo para escribir.
Coloca el puntero del archivo al comienzo del archivo.
y trunca el archivo a longitud cero. Si los archivos no
existe, entonces intenta crear un archivo.

44
w+
Abre el archivo solo para lectura y escritura.
Coloca el puntero del archivo al comienzo del archivo.
y trunca el archivo a longitud cero. Si los archivos no
existe, entonces intenta crear un archivo.

55
un
Abre el archivo solo para escribir.
Coloca el puntero del archivo al final del archivo.
Si los archivos no existen, entonces intenta crear un archivo.

66
a+
Abre el archivo solo para lectura y escritura.
Coloca el puntero del archivo al final del archivo.
Si los archivos no existen, entonces intenta crear un archivo.

Si falla un intento de abrir un archivo, entonces fopen devuelve un valor


de falso; de lo contrario, devuelve un puntero de archivo que se utiliza para
leer o escribir en ese archivo.
Después de realizar cambios en el archivo abierto, es importante cerrarlo con
la función fclose () . La función fclose () requiere un puntero de archivo como
argumento y luego devuelve verdadero cuando el cierre tiene éxito o falso si
falla.

Leyendo un archivo
Una vez que se abre un archivo usando la función fopen () , se puede leer con
una función llamada fread () . Esta función requiere dos argumentos. Estos
deben ser el puntero del archivo y la longitud del archivo expresada en bytes.
La longitud de los archivos se puede encontrar utilizando la función filesize
() que toma el nombre del archivo como argumento y devuelve el tamaño del
archivo expresado en bytes.
Así que aquí están los pasos necesarios para leer un archivo con PHP.
 Abra un archivo usando la función fopen () .
 Obtenga la longitud del archivo usando la función filesize () .
 Lea el contenido del archivo usando la función fread () .
 Cierre el archivo con la función fclose () .
El siguiente ejemplo asigna el contenido de un archivo de texto a una variable
y luego muestra esos contenidos en la página web.
<html>

<head>
<title>Reading a file using PHP</title>
</head>

<body>

<?php
$filename = "tmp.txt";
$file = fopen( $filename, "r" );

if( $file == false ) {


echo ( "Error in opening file" );
exit();
}

$filesize = filesize( $filename );


$filetext = fread( $file, $filesize );
fclose( $file );

echo ( "File size : $filesize bytes" );


echo ( "<pre>$filetext</pre>" );
?>

</body>
</html>

Producirá el siguiente resultado:


Escribir un archivo
Se puede escribir un nuevo archivo o se puede agregar texto a un archivo
existente utilizando la función PHP fwrite () . Esta función requiere dos
argumentos que especifican un puntero de archivo y la cadena de datos que
se va a escribir. Opcionalmente, se puede incluir un tercer argumento entero
para especificar la longitud de los datos a escribir. Si se incluye el tercer
argumento, la escritura se detendrá una vez que se haya alcanzado la longitud
especificada.
El siguiente ejemplo crea un nuevo archivo de texto y luego escribe un breve
texto dentro de él. Después de cerrar este archivo, se confirma su existencia
utilizando la función file_exist () que toma el nombre del archivo como
argumento
<?php
$filename = "/home/user/guest/newfile.txt";
$file = fopen( $filename, "w" );

if( $file == false ) {


echo ( "Error in opening new file" );
exit();
}
fwrite( $file, "This is a simple test\n" );
fclose( $file );
?>
<html>

<head>
<title>Writing a file using PHP</title>
</head>

<body>

<?php
$filename = "newfile.txt";
$file = fopen( $filename, "r" );

if( $file == false ) {


echo ( "Error in opening file" );
exit();
}
$filesize = filesize( $filename );
$filetext = fread( $file, $filesize );

fclose( $file );

echo ( "File size : $filesize bytes" );


echo ( "$filetext" );
echo("file name: $filename");
?>

</body>
</html>
Producirá el siguiente resultado:

Hemos cubierto todas las funciones relacionadas con la entrada y salida


de archivos en el capítulo Función del sistema de archivos PHP

PHP - Funciones
Las funciones de PHP son similares a otros lenguajes de programación. Una
función es un fragmento de código que toma una entrada más en forma de
parámetro, procesa y devuelve un valor.
Ya has visto muchas funciones como fopen () y fread (), etc. Son funciones
integradas, pero PHP también te da la opción de crear tus propias funciones.
Hay dos partes que deben ser claras para usted:

 Crear una función PHP


 Llamar a una función PHP
De hecho, casi no necesita crear su propia función PHP porque ya hay más de
1000 funciones de biblioteca incorporadas creadas para diferentes áreas y
solo necesita llamarlas de acuerdo con sus requisitos.
Consulte la Referencia de funciones de PHP para obtener un conjunto
completo de funciones útiles.

Crear función PHP


Es muy fácil crear su propia función PHP. Suponga que desea crear una
función PHP que simplemente escriba un mensaje simple en su navegador
cuando lo llame. El siguiente ejemplo crea una función llamada writeMessage
() y luego la llama justo después de crearla.
Tenga en cuenta que al crear una función, su nombre debe comenzar con
la función de palabra clave y todo el código PHP debe colocarse entre llaves
{y} como se muestra en el siguiente ejemplo a continuación:
Demo en vivo
<html>

<head>
<title>Writing PHP Function</title>
</head>

<body>

<?php
/* Defining a PHP Function */
function writeMessage() {
echo "You are really a nice person, Have a nice
time!";
}

/* Calling a PHP Function */


writeMessage();
?>

</body>
</html>

Esto mostrará el siguiente resultado:


You are really a nice person, Have a nice time!

Funciones PHP con parámetros


PHP te da la opción de pasar tus parámetros dentro de una función. Puede
pasar tantos parámetros como desee. Estos parámetros funcionan como
variables dentro de su función. El siguiente ejemplo toma dos parámetros
enteros y los agrega juntos y luego los imprime.
Demo en vivo
<html>

<head>
<title>Writing PHP Function with Parameters</title>
</head>

<body>

<?php
function addFunction($num1, $num2) {
$sum = $num1 + $num2;
echo "Sum of the two numbers is : $sum";
}
addFunction(10, 20);
?>

</body>
</html>

Esto mostrará el siguiente resultado:


Sum of the two numbers is : 30

Pasar argumentos por referencia


Es posible pasar argumentos a funciones por referencia. Esto significa que
una referencia a la variable es manipulada por la función en lugar de una copia
del valor de la variable.
Cualquier cambio realizado en un argumento en estos casos cambiará el valor
de la variable original. Puede pasar un argumento por referencia agregando un
ampersand al nombre de la variable en la llamada a la función o en la
definición de la función.
El siguiente ejemplo muestra ambos casos.
Demo en vivo
<html>

<head>
<title>Passing Argument by Reference</title>
</head>

<body>

<?php
function addFive($num) {
$num += 5;
}

function addSix(&$num) {
$num += 6;
}

$orignum = 10;
addFive( $orignum );

echo "Original Value is $orignum<br />";

addSix( $orignum );
echo "Original Value is $orignum<br />";
?>

</body>
</html>

Esto mostrará el siguiente resultado:


Original Value is 10
Original Value is 16

Funciones PHP que devuelven valor


Una función puede devolver un valor utilizando la instrucción return junto con
un valor u objeto. return detiene la ejecución de la función y devuelve el valor
al código de llamada.
Puede devolver más de un valor de una función utilizando la matriz de
retorno (1,2,3,4) .
El siguiente ejemplo toma dos parámetros enteros, los agrega y luego
devuelve su suma al programa de llamada. Tenga en cuenta que la palabra
clave return se usa para devolver un valor de una función.
Demo en vivo
<html>

<head>
<title>Writing PHP Function which returns value</title>
</head>

<body>

<?php
function addFunction($num1, $num2) {
$sum = $num1 + $num2;
return $sum;
}
$return_value = addFunction(10, 20);

echo "Returned value from the function :


$return_value";
?>

</body>
</html>

Esto mostrará el siguiente resultado:


Returned value from the function : 30

Establecer valores predeterminados para parámetros


de función
Puede configurar un parámetro para que tenga un valor predeterminado si la
persona que llama la función no lo pasa.
La siguiente función imprime NULL en caso de que el uso no pase ningún
valor a esta función.
Demo en vivo
<html>

<head>
<title>Writing PHP Function which returns value</title>
</head>

<body>

<?php
function printMe($param = NULL) {
print $param;
}

printMe("This is test");
printMe();
?>

</body>
</html>
Esto producirá el siguiente resultado:
This is test

Llamadas de funciones dinámicas


Es posible asignar nombres de funciones como cadenas a variables y luego
tratar estas variables exactamente como lo haría con el nombre de la
función. El siguiente ejemplo muestra este comportamiento.
Demo en vivo
<html>

<head>
<title>Dynamic Function Calls</title>
</head>

<body>

<?php
function sayHello() {
echo "Hello<br />";
}

$function_holder = "sayHello";
$function_holder();
?>

</body>
</html>

Esto mostrará el siguiente resultado:


Hello
PHP - Cookies
Las cookies son archivos de texto almacenados en la computadora del cliente
y se mantienen con fines de seguimiento de uso. PHP admite de forma
transparente las cookies HTTP.
Hay tres pasos involucrados en la identificación de los usuarios que regresan:
 La secuencia de comandos del servidor envía un conjunto de cookies al
navegador. Por ejemplo, nombre, edad o número de identificación, etc.
 El navegador almacena esta información en una máquina local para uso futuro.
 Cuando la próxima vez que el navegador envíe una solicitud al servidor web, envíe
esa información de cookies al servidor y el servidor usará esa información para
identificar al usuario.
Este capítulo le enseñará cómo configurar cookies, cómo acceder a ellas y
cómo eliminarlas.

La anatomía de una galleta


Las cookies generalmente se configuran en un encabezado HTTP (aunque
JavaScript también puede configurar una cookie directamente en un
navegador). Un script PHP que establece una cookie puede enviar
encabezados que se vean así:
HTTP/1.1 200 OK
Date: Fri, 04 Feb 2000 21:03:38 GMT
Server: Apache/1.3.9 (UNIX) PHP/4.0b3
Set-Cookie: name=xyz; expires=Friday, 04-Feb-07 22:03:38 GMT;
path=/; domain=postparaprogramadores.com
Connection: close
Content-Type: text/html
Como puede ver, el encabezado Set-Cookie contiene un par de valores de
nombre, una fecha GMT, una ruta y un dominio. El nombre y el valor serán
codificados por URL. El campo de caducidad es una instrucción para que el
navegador "olvide" la cookie después de la hora y fecha indicadas.
Si el navegador está configurado para almacenar cookies, mantendrá esta
información hasta la fecha de caducidad. Si el usuario apunta el navegador a
cualquier página que coincida con la ruta y el dominio de la cookie, reenviará
la cookie al servidor. Los encabezados del navegador pueden verse así:
GET / HTTP/1.0
Connection: Keep-Alive
User-Agent: Mozilla/4.6 (X11; I; Linux 2.2.6-15apmac ppc)
Host: zink.demon.co.uk:1126
Accept: image/gif, */*
Accept-Encoding: gzip
Accept-Language: en
Accept-Charset: iso-8859-1,*,utf-8
Cookie: name=xyz
Un script PHP tendrá acceso a la cookie en las variables de entorno $
_COOKIE o $ HTTP_COOKIE_VARS [] que contiene todos los nombres y
valores de cookies. Se puede acceder a la cookie anterior utilizando $
HTTP_COOKIE_VARS ["nombre"].

Configuración de cookies con PHP


PHP proporcionó la función setcookie () para configurar una cookie. Esta
función requiere hasta seis argumentos y debe llamarse antes de la etiqueta
<html>. Para cada cookie, esta función debe llamarse por separado.
setcookie(name, value, expire, path, domain, security);
Aquí está el detalle de todos los argumentos:
 Nombre : establece el nombre de la cookie y se almacena en una variable de
entorno llamada HTTP_COOKIE_VARS. Esta variable se usa al acceder a las
cookies.
 Valor : establece el valor de la variable nombrada y es el contenido que realmente
desea almacenar.
 Caducidad : especifica una hora futura en segundos desde las 00:00:00 GMT del
1 de enero de 1970. Después de esta hora, la cookie quedará inaccesible. Si no
se establece este parámetro, la cookie caducará automáticamente cuando se
cierre el navegador web.
 Ruta : especifica los directorios para los que la cookie es válida. Un solo carácter
de barra diagonal permite que la cookie sea válida para todos los directorios.
 Dominio : se puede usar para especificar el nombre de dominio en dominios muy
grandes y debe contener al menos dos puntos para ser válido. Todas las cookies
solo son válidas para el host y el dominio que las creó.
 Seguridad : se puede establecer en 1 para especificar que la cookie solo se debe
enviar por transmisión segura utilizando HTTPS; de lo contrario, se establecerá en
0, lo que significa que la cookie se puede enviar por HTTP normal.
El siguiente ejemplo creará dos cookies nombre y antigüedad, estas cookies
caducarán después de una hora.
<?php
setcookie("name", "John Watkin", time()+3600, "/","", 0);
setcookie("age", "36", time()+3600, "/", "", 0);
?>
<html>

<head>
<title>Setting Cookies with PHP</title>
</head>

<body>
<?php echo "Set Cookies"?>
</body>

</html>

Acceso a cookies con PHP


PHP proporciona muchas formas de acceder a las cookies. La manera más
simple es usar las variables $ _COOKIE o $ HTTP_COOKIE_VARS. El
siguiente ejemplo accederá a todas las cookies establecidas en el ejemplo
anterior.
<html>

<head>
<title>Accessing Cookies with PHP</title>
</head>

<body>

<?php
echo $_COOKIE["name"]. "<br />";

/* is equivalent to */
echo $HTTP_COOKIE_VARS["name"]. "<br />";

echo $_COOKIE["age"] . "<br />";

/* is equivalent to */
echo $HTTP_COOKIE_VARS["age"] . "<br />";
?>
</body>
</html>
Puede usar la función isset () para verificar si una cookie está configurada o
no.
<html>

<head>
<title>Accessing Cookies with PHP</title>
</head>

<body>

<?php
if( isset($_COOKIE["name"]))
echo "Welcome " . $_COOKIE["name"] . "<br />";

else
echo "Sorry... Not recognized" . "<br />";
?>

</body>
</html>

Eliminar Cookie con PHP


Oficialmente, para eliminar una cookie, debe llamar a setcookie () solo con el
argumento de nombre, pero esto no siempre funciona bien y, sin embargo, no
debe confiarse en él.
Es más seguro configurar la cookie con una fecha que ya caducó:
<?php
setcookie( "name", "", time()- 60, "/","", 0);
setcookie( "age", "", time()- 60, "/","", 0);
?>
<html>

<head>
<title>Deleting Cookies with PHP</title>
</head>

<body>
<?php echo "Deleted Cookies" ?>
</body>

</html>
PHP - Sesiones
Una forma alternativa de hacer que los datos sean accesibles en las distintas
páginas de un sitio web completo es utilizar una sesión PHP.
Una sesión crea un archivo en un directorio temporal en el servidor donde se
almacenan las variables de sesión registradas y sus valores. Estos datos
estarán disponibles para todas las páginas del sitio durante esa visita.
La ubicación del archivo temporal está determinada por una configuración en
el archivo php.ini llamada session.save_path . Antes de usar cualquier
variable de sesión, asegúrese de haber configurado esta ruta.
Cuando se inicia una sesión después de que suceden cosas,

 PHP primero crea un identificador único


para esa sesión en particular, que es
una cadena aleatoria de 32 números
hexadecimales como
3c7foj34c3jj973hjkop2fc937e3443.
 Una cookie llamada PHPSESSID se
envía automáticamente a la
computadora del usuario para almacenar
una cadena de identificación de sesión
única.
 Se crea automáticamente un archivo en
el servidor en el directorio temporal
designado y lleva el nombre del
identificador único con el prefijo sess_,
es decir,
sess_3c7foj34c3jj973hjkop2fc937e3443.
Cuando un script PHP quiere recuperar el valor de una variable de sesión,
PHP obtiene automáticamente la cadena de identificador de sesión única de la
cookie PHPSESSID y luego busca en su directorio temporal el archivo que
lleva ese nombre y se puede hacer una validación comparando ambos
valores.
Una sesión finaliza cuando el usuario pierde el navegador o después de
abandonar el sitio, el servidor finalizará la sesión después de un período de
tiempo predeterminado, generalmente 30 minutos de duración.

Iniciar una sesión PHP


Una sesión PHP se inicia fácilmente haciendo una llamada a la
función session_start (). Esta función primero verifica si una sesión ya se
inició y si no se inicia ninguna, entonces inicia una. Se recomienda poner la
llamada a session_start () al comienzo de la página.
Las variables de sesión se almacenan en una matriz asociativa llamada $
_SESSION [] . Se puede acceder a estas variables durante la vida útil de una
sesión.
El siguiente ejemplo inicia una sesión y luego registra una variable
llamada contador que se incrementa cada vez que se visita la página durante
la sesión.
Utilice la función isset () para verificar si la variable de sesión ya está
configurada o no.
Pon este código en un archivo test.php y carga este archivo muchas veces
para ver el resultado:

Demo en vivo
<?php
session_start();
if( isset( $_SESSION['counter'] ) ) {
$_SESSION['counter'] += 1;
}else {
$_SESSION['counter'] = 1;
}

$msg = "You have visited this page ".


$_SESSION['counter'];
$msg .= "in this session.";
?>

<html>

<head>
<title>Setting up a PHP session</title>
</head>

<body>
<?php echo ( $msg ); ?>
</body>

</html>

Producirá el siguiente resultado:


You have visited this page 1in this session.

Destruyendo una sesión


PHP
Una sesión PHP puede ser destruida por la función session_destroy () . Esta
función no necesita ningún argumento y una sola llamada puede destruir todas
las variables de sesión. Si desea destruir una sola variable de sesión, puede
usar la función unset () para desarmar una variable de sesión.
Aquí está el ejemplo para desarmar una sola variable:

<?php
unset($_SESSION['counter']);
?>

Aquí está la llamada que destruirá todas las variables de sesión:

<?php
session_destroy();
?>
Activar sesión automática
No necesita llamar a la función start_session () para iniciar una sesión cuando
un usuario visita su sitio si puede establecer la variable session.auto_start en
1 en el archivo php.ini .

Sesiones sin cookies.


Puede haber un caso en que un usuario no permita almacenar cookies en su
máquina. Entonces, hay otro método para enviar la ID de sesión al navegador.
Alternativamente, puede usar el SID constante que se define si la sesión
comenzó. Si el cliente no envió una cookie de sesión adecuada, tiene el
formato session_name = session_id. De lo contrario, se expande a una
cadena vacía. Por lo tanto, puede incrustarlo incondicionalmente en las URL.
El siguiente ejemplo muestra cómo registrar una variable y cómo vincular
correctamente a otra página usando SID.

Demo en vivo
<?php
session_start();

if (isset($_SESSION['counter'])) {
$_SESSION['counter'] = 1;
}else {
$_SESSION['counter']++;
}

$msg = "You have visited this page ".


$_SESSION['counter'];
$msg .= "in this session.";

echo ( $msg );
?>

<p>
To continue click following link <br />

<a href = "nextpage.php?<?php echo htmlspecialchars(SID);


?>">
</p>

Producirá el siguiente resultado:


You have visited this page 1in this session.
To continue click following link
Los htmlspecialchars () se pueden usar al imprimir el SID para evitar ataques
relacionados con XSS.

PHP - Envío de correos electrónicos usando


PHP
PHP debe configurarse correctamente en el archivo php.ini con los detalles
de cómo su sistema envía correo electrónico. Abra el archivo php.ini
disponible en el directorio / etc / y busque la sección titulada [función de
correo] .
Los usuarios de Windows deben asegurarse de que se suministren dos
directivas. El primero se llama SMTP que define la dirección de su servidor de
correo electrónico. El segundo se llama sendmail_from, que define su propia
dirección de correo electrónico.
La configuración para Windows debería verse así:
[mail function]
; For Win32 only.
SMTP = smtp.secureserver.net

; For win32 only


sendmail_from = [email protected]
Los usuarios de Linux simplemente necesitan que PHP sepa la ubicación de
su aplicación sendmail . La ruta y los modificadores deseados deben
especificarse a la directiva sendmail_path.
La configuración para Linux debería verse así:
[mail function]
; For Win32 only.
SMTP =

; For win32 only


sendmail_from =

; For Unix only


sendmail_path = /usr/sbin/sendmail -t -i
Ahora estás listo para irte.

Enviar correo electrónico de texto sin formato


PHP hace uso de la función mail () para enviar un correo electrónico. Esta
función requiere tres argumentos obligatorios que especifican la dirección de
correo electrónico del destinatario, el asunto del mensaje y el mensaje real;
además, hay otros dos parámetros opcionales.
mail( to, subject, message, headers, parameters );
Aquí está la descripción de cada parámetro.

No Descripción de parámetros
Señor

1
a
Necesario. Especifica el receptor / receptores del correo electrónico.

2
tema
Necesario. Especifica el asunto del correo electrónico. Este parámetro no puede
contener caracteres de nueva línea.

3
mensaje
Necesario. Define el mensaje a enviar. Cada línea debe separarse con un LF (\
n). Las líneas no deben exceder los 70 caracteres.

44
encabezados
Opcional. Especifica encabezados adicionales, como From, Cc y Bcc. Los
encabezados adicionales deben separarse con un CRLF (\ r \ n)

55
parámetros
Opcional. Especifica un parámetro adicional para el programa de envío de correo.
Tan pronto como se llame a la función de correo, PHP intentará enviar el
correo electrónico y luego devolverá verdadero si tiene éxito o falso si falla.
Se pueden especificar varios destinatarios como el primer argumento para la
función mail () en una lista separada por comas.

Envío de correo electrónico HTML


Cuando envía un mensaje de texto usando PHP, todo el contenido se tratará
como texto simple. Incluso si incluirá etiquetas HTML en un mensaje de texto,
se mostrará como texto simple y las etiquetas HTML no se formatearán de
acuerdo con la sintaxis HTML. Pero PHP ofrece la opción de enviar un
mensaje HTML como mensaje HTML real.
Al enviar un mensaje de correo electrónico, puede especificar una versión de
Mime, un tipo de contenido y un conjunto de caracteres para enviar un correo
electrónico HTML.

Ejemplo

El siguiente ejemplo enviará un mensaje de correo electrónico HTML a


[email protected] y lo copiará a [email protected]. Puede
codificar este programa de tal manera que reciba todo el contenido del usuario
y luego envíe un correo electrónico.
<html>

<head>
<title>Sending HTML email using PHP</title>
</head>

<body>

<?php
$to = "[email protected]";
$subject = "This is subject";

$message = "<b>This is HTML message.</b>";


$message .= "<h1>This is headline.</h1>";

$header = "From:[email protected] \r\n";


$header .= "Cc:[email protected] \r\n";
$header .= "MIME-Version: 1.0\r\n";
$header .= "Content-type: text/html\r\n";

$retval = mail ($to,$subject,$message,$header);

if( $retval == true ) {


echo "Message sent successfully...";
}else {
echo "Message could not be sent...";
}
?>

</body>
</html>

Enviar archivos adjuntos con correo electrónico


Para enviar un correo electrónico con contenido mixto se requiere establecer
el encabezado de tipo Contenido en multiparte / mixto . Luego, las
secciones de texto y archivo adjunto se pueden especificar dentro de
los límites .
Se inicia un límite con dos guiones seguidos de un número único que no
puede aparecer en la parte del mensaje del correo electrónico. Una función
PHP md5 () se usa para crear un número hexadecimal de 32 dígitos para
crear un número único. Un límite final que denota la sección final del correo
electrónico también debe terminar con dos guiones.
<?php
// request variables // important
$from = $_REQUEST["from"];
$emaila = $_REQUEST["emaila"];
$filea = $_REQUEST["filea"];

if ($filea) {
function mail_attachment ($from , $to, $subject,
$message, $attachment){
$fileatt = $attachment; // Path to the file
$fileatt_type = "application/octet-stream"; // File
Type

$start = strrpos($attachment, '/') == -1 ?


strrpos($attachment, '//') : strrpos($attachment,
'/')+1;

$fileatt_name = substr($attachment, $start,


strlen($attachment)); // Filename that will be
used for the
file as the attachment

$email_from = $from; // Who the email is from


$subject = "New Attachment Message";

$email_subject = $subject; // The Subject of the


email
$email_txt = $message; // Message that the email has
in it
$email_to = $to; // Who the email is to

$headers = "From: ".$email_from;


$file = fopen($fileatt,'rb');
$data = fread($file,filesize($fileatt));
fclose($file);

$msg_txt="\n\n You have recieved a new attachment


message from $from";
$semi_rand = md5(time());
$mime_boundary =
"==Multipart_Boundary_x{$semi_rand}x";
$headers .= "\nMIME-Version: 1.0\n" . "Content-Type:
multipart/mixed;\n" . "
boundary=\"{$mime_boundary}\"";

$email_txt .= $msg_txt;

$email_message .= "This is a multi-part message in


MIME format.\n\n" .
"--{$mime_boundary}\n" . "Content-Type:text/html;
charset = \"iso-8859-1\"\n" . "Content-Transfer-
Encoding: 7bit\n\n" .
$email_txt . "\n\n";

$data = chunk_split(base64_encode($data));

$email_message .= "--{$mime_boundary}\n" . "Content-


Type: {$fileatt_type};\n" .
" name = \"{$fileatt_name}\"\n" . //"Content-
Disposition: attachment;\n" .
//" filename = \"{$fileatt_name}\"\n" . "Content-
Transfer-Encoding:
base64\n\n" . $data . "\n\n" . "--
{$mime_boundary}--\n";

$ok = mail($email_to, $email_subject,


$email_message, $headers);

if($ok) {
echo "File Sent Successfully.";
unlink($attachment); // delete a file after
attachment sent.
}else {
die("Sorry but the email could not be sent.
Please go back and try again!");
}
}
move_uploaded_file($_FILES["filea"]["tmp_name"],
'temp/'.basename($_FILES['filea']['name']));

mail_attachment("$from", "[email protected]",
"subject", "message",
("temp/".$_FILES["filea"]["name"]));
}
?>

<html>
<head>

<script language = "javascript" type =


"text/javascript">
function CheckData45() {
with(document.filepost) {
if(filea.value ! = "") {
document.getElementById('one').innerText =
"Attaching File ... Please Wait";
}
}
}
</script>

</head>
<body>

<table width = "100%" height = "100%" border = "0"


cellpadding = "0" cellspacing = "0">
<tr>
<td align = "center">
<form name = "filepost" method = "post"
action = "file.php" enctype =
"multipart/form-data" id = "file">

<table width = "300" border = "0"


cellspacing = "0"
cellpadding = "0">

<tr valign = "bottom">


<td height = "20">Your Name:</td>
</tr>

<tr>
<td><input name = "from" type =
"text"
id = "from" size = "30"></td>
</tr>

<tr valign = "bottom">


<td height = "20">Your Email
Address:</td>
</tr>

<tr>
<td class = "frmtxt2"><input name =
"emaila"
type = "text" id = "emaila" size =
"30"></td>
</tr>

<tr>
<td height = "20" valign =
"bottom">Attach File:</td>
</tr>

<tr valign = "bottom">


<td valign = "bottom"><input name =
"filea"
type = "file" id = "filea" size =
"16"></td>
</tr>

<tr>
<td height = "40" valign =
"middle"><input
name = "Reset2" type = "reset" id
= "Reset2" value = "Reset">
<input name = "Submit2" type =
"submit"
value = "Submit" onClick = "return
CheckData45()"></td>
</tr>
</table>

</form>

<center>
<table width = "400">

<tr>
<td id = "one">
</td>
</tr>

</table>
</center>

</td>
</tr>
</table>

</body>
</html>
PHP - Carga de archivos
Se puede usar un script PHP con un formulario HTML para permitir a los
usuarios subir archivos al servidor. Inicialmente, los archivos se cargan en un
directorio temporal y luego se reubican en un destino de destino mediante un
script PHP.
La información en la página phpinfo.php describe el directorio temporal que
se utiliza para cargar archivos como upload_tmp_dir y el tamaño máximo
permitido de archivos que se pueden cargar se indica
como upload_max_filesize . Estos parámetros se establecen en el archivo de
configuración PHP php.ini
El proceso de carga de un archivo sigue estos pasos:
 El usuario abre la página que contiene un formulario HTML con archivos de texto,
un botón de exploración y un botón de envío.
 El usuario hace clic en el botón Examinar y selecciona un archivo para cargar
desde la PC local.
 La ruta completa al archivo seleccionado aparece en el texto archivado y luego el
usuario hace clic en el botón Enviar.
 El archivo seleccionado se envía al directorio temporal en el servidor.
 El script PHP que se especificó como el controlador de formulario en el atributo de
acción del formulario verifica que el archivo haya llegado y luego lo copia en un
directorio deseado.
 El script PHP confirma el éxito del usuario.
Como es habitual al escribir archivos, es necesario que las ubicaciones
temporales y finales tengan permisos establecidos que permitan la escritura
de archivos. Si cualquiera está configurado para ser de solo lectura, el proceso
fallará.
Un archivo cargado puede ser un archivo de texto o un archivo de imagen o
cualquier documento.

Crear un formulario de carga


El siguiente código HTM a continuación crea un formulario de cargador. Este
formulario tiene el atributo de método establecido en post y el atributo enctype
está configurado en multipart / form-data
Demo en vivo
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size =$_FILES['image']['size'];
$file_tmp =$_FILES['image']['tmp_name'];
$file_type=$_FILES['image']['type'];

$file_ext=strtolower(end(explode('.',$_FILES['image']['name']
)));

$extensions= array("jpeg","jpg","png");

if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a
JPEG or PNG file.";
}

if($file_size > 2097152){


$errors[]='File size must be excately 2 MB';
}

if(empty($errors)==true){
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>

<form action="" method="POST" enctype="multipart/form-


data">
<input type="file" name="image" />
<input type="submit"/>
</form>

</body>
</html>

Producirá el siguiente resultado:

Crear un script de carga


Hay una variable PHP global llamada $ _FILES . Esta variable es una matriz
asociada de doble dimensión y mantiene toda la información relacionada con
el archivo cargado. Entonces, si el valor asignado al atributo de nombre de la
entrada en el formulario de carga era un archivo , PHP crearía las siguientes
cinco variables:
 $ _FILES ['file'] ['tmp_name'] : el archivo cargado en el directorio temporal del
servidor web.
 $ _FILES ['archivo'] ['nombre'] : el nombre real del archivo cargado.
 $ _FILES ['archivo'] ['tamaño'] - el tamaño en bytes del archivo cargado.
 $ _FILES ['archivo'] ['tipo'] - el tipo MIME del archivo cargado.
 $ _FILES ['archivo'] ['error'] : el código de error asociado con la carga de este
archivo.

Ejemplo

El siguiente ejemplo debería permitir cargar imágenes y devolver el resultado


como información del archivo cargado.
Demo en vivo
<?php
if(isset($_FILES['image'])){
$errors= array();
$file_name = $_FILES['image']['name'];
$file_size = $_FILES['image']['size'];
$file_tmp = $_FILES['image']['tmp_name'];
$file_type = $_FILES['image']['type'];

$file_ext=strtolower(end(explode('.',$_FILES['image']['name']
)));

$extensions= array("jpeg","jpg","png");

if(in_array($file_ext,$extensions)=== false){
$errors[]="extension not allowed, please choose a
JPEG or PNG file.";
}
if($file_size > 2097152) {
$errors[]='File size must be excately 2 MB';
}

if(empty($errors)==true) {
move_uploaded_file($file_tmp,"images/".$file_name);
echo "Success";
}else{
print_r($errors);
}
}
?>
<html>
<body>

<form action = "" method = "POST" enctype =


"multipart/form-data">
<input type = "file" name = "image" />
<input type = "submit"/>

<ul>
<li>Sent file: <?php echo
$_FILES['image']['name']; ?>
<li>File size: <?php echo
$_FILES['image']['size']; ?>
<li>File type: <?php echo
$_FILES['image']['type'] ?>
</ul>

</form>

</body>
</html>
Producirá el siguiente resultado:
PHP - Estándar de codificación
PHP proporciona una gran cantidad de variables predefinidas a cualquier
script que ejecute. PHP proporciona un conjunto adicional de matrices
predefinidas que contienen variables del servidor web, el entorno y la entrada
del usuario. Estas nuevas matrices se llaman superglobales:
Todas las siguientes variables están disponibles automáticamente en todos los
ámbitos.

PHP Superglobales
No Variable y descripción
Señor

1
$ GLOBALES
Contiene una referencia a cada variable que está actualmente disponible dentro del
alcance global del script. Las claves de esta matriz son los nombres de las
variables globales.

2
$ _SERVER
Esta es una matriz que contiene información como encabezados, rutas y
ubicaciones de script. Las entradas en esta matriz son creadas por el servidor
web. No hay garantía de que cada servidor web proporcione ninguno de
estos. Consulte la siguiente sección para obtener una lista completa de todas las
variables de SERVIDOR.

3
$ _GET
Una matriz asociativa de variables pasadas al script actual a través del método
HTTP GET.

44
$ _POST
Una matriz asociativa de variables pasadas al script actual a través del método
HTTP POST.

55
$ _FILES
Una matriz asociativa de elementos cargados en el script actual a través del
método HTTP POST.

66
$ _REQUEST
Una matriz asociativa que consta de los contenidos de $ _GET, $ _POST y $
_COOKIE.

77
$ _COOKIE
Una matriz asociativa de variables pasadas al script actual a través de cookies
HTTP.

8
$ _SESIÓN
Una matriz asociativa que contiene variables de sesión disponibles para el script
actual.

99
$ _PHP_SELF
Una cadena que contiene el nombre del archivo de script PHP en el que se llama.

10
$ php_errormsg
$ php_errormsg es una variable que contiene el texto del último mensaje de error
generado por PHP.

Variables del servidor: $ _SERVER


$ _SERVER es una matriz que contiene información como encabezados, rutas
y ubicaciones de script. Las entradas en esta matriz son creadas por el
servidor web. No hay garantía de que cada servidor web proporcione ninguno
de estos.

No Variable y descripción
Señor

1
$ _SERVER ['PHP_SELF']
El nombre de archivo del script que se está ejecutando actualmente, relativo a la
raíz del documento

2
$ _SERVER ['argv']
Matriz de argumentos pasados al guión. Cuando el script se ejecuta en la línea de
comando, esto le da acceso al estilo C a los parámetros de la línea de
comando. Cuando se llama a través del método GET, este contendrá la cadena
de consulta.

3
$ _SERVER ['argc']
Contiene el número de parámetros de línea de comando pasados al script si se
ejecuta en la línea de comando.

44
$ _SERVER ['GATEWAY_INTERFACE']
Qué revisión de la especificación CGI está usando el servidor; es decir, 'CGI /
1.1'.

55
$ _SERVER ['SERVER_ADDR']
La dirección IP del servidor en el que se ejecuta el script actual.

66
$ _SERVER ['SERVER_NAME']
El nombre del host del servidor en el que se ejecuta el script actual. Si el script se
ejecuta en un host virtual, este será el valor definido para ese host virtual.

77
$ _SERVER ['SERVER_SOFTWARE']
Cadena de identificación del servidor, dada en los encabezados al responder a
las solicitudes.

8
$ _SERVER ['SERVER_PROTOCOL']
Nombre y revisión del protocolo de información a través del cual se solicitó la
página; es decir, 'HTTP / 1.0';

99
$ _SERVER ['SOLICITUD_MÉTODO']
Qué método de solicitud se utilizó para acceder a la página; es decir, 'GET',
'HEAD', 'POST', 'PUT'.

10
$ _SERVER ['REQUEST_TIME']
La marca de tiempo del inicio de la solicitud. Disponible desde PHP 5.1.0.

11
$ _SERVER ['QUERY_STRING']
La cadena de consulta, si la hay, a través de la cual se accedió a la página.

12
$ _SERVER ['DOCUMENT_ROOT']
El directorio raíz del documento en el que se ejecuta el script actual, tal como se
define en el archivo de configuración del servidor.

13
$ _SERVER ['HTTP_ACCEPT']
Contenido de Aceptar: encabezado de la solicitud actual, si hay una.

14
$ _SERVER ['HTTP_ACCEPT_CHARSET']
Contenido del Accept-Charset: encabezado de la solicitud actual, si hay
uno. Ejemplo: 'iso-8859-1, *, utf-8'.

15
$ _SERVER ['HTTP_ACCEPT_ENCODING']
Contenido del Accept-Encoding: encabezado de la solicitud actual, si
existe. Ejemplo: 'gzip'.

dieciséis
$ _SERVER ['HTTP_ACCEPT_LANGUAGE']
Contenido del idioma de aceptación: encabezado de la solicitud actual, si
existe. Ejemplo: 'en'.

17
$ _SERVER ['HTTP_CONNECTION']
Contenido de la conexión: encabezado de la solicitud actual, si hay una. Ejemplo:
'Keep-Alive'.

18 años
$ _SERVER ['HTTP_HOST']
Contenido del host: encabezado de la solicitud actual, si hay una.

19
$ _SERVER ['HTTP_REFERER']
La dirección de la página (si la hay) que refirió al agente de usuario a la
página actual.
20
$ _SERVER ['HTTP_USER_AGENT']
Esta es una cadena que indica que el agente de usuario está accediendo a la
página. Un ejemplo típico es: Mozilla / 4.5 [en] (X11; U; Linux 2.2.9 i586).

21
$ _SERVER ['HTTPS']
Establezca un valor no vacío si el script se consultó a través del protocolo
HTTPS.

22
$ _SERVER ['REMOTE_ADDR']
La dirección IP desde la cual el usuario está viendo la página actual.

23
$ _SERVER ['REMOTE_HOST']
El nombre de host desde el que el usuario está viendo la página actual. La
búsqueda dns inversa se basa en REMOTE_ADDR del usuario.

24
$ _SERVER ['REMOTE_PORT']
El puerto que se utiliza en la máquina del usuario para comunicarse con el
servidor web.

25
$ _SERVER ['SCRIPT_FILENAME']
El nombre de ruta absoluto del script que se está ejecutando actualmente.

26
$ _SERVER ['SERVER_ADMIN']
El valor dado a la directiva SERVER_ADMIN (para Apache) en el archivo de
configuración del servidor web.

27
$ _SERVER ['SERVER_PORT']
El puerto en la máquina del servidor que utiliza el servidor web para la
comunicación. Para configuraciones predeterminadas, será '80'.

28
$ _SERVER ['SERVER_SIGNATURE']
Cadena que contiene la versión del servidor y el nombre de host virtual que se
agregan a las páginas generadas por el servidor, si está habilitado.

29
$ _SERVER ['PATH_TRANSLATED']
Ruta basada en el sistema de archivos al script actual.

30
$ _SERVER ['SCRIPT_NAME']
Contiene la ruta del script actual. Esto es útil para páginas que necesitan
señalarse a sí mismas.

31
$ _SERVER ['REQUEST_URI']
El URI que se proporcionó para acceder a esta página; por ejemplo, '/index.html'.

32
$ _SERVER ['PHP_AUTH_DIGEST']
Cuando se ejecuta bajo Apache como módulo que realiza la autenticación HTTP
implícita, esta variable se establece en el encabezado 'Autorización' enviado por
el cliente.

33
$ _SERVER ['PHP_AUTH_USER']
Cuando se ejecuta bajo Apache o IIS (ISAPI en PHP 5) como módulo que realiza
la autenticación HTTP, esta variable se configura con el nombre de usuario
proporcionado por el usuario.

34
$ _SERVER ['PHP_AUTH_PW']
Cuando se ejecuta bajo Apache o IIS (ISAPI en PHP 5) como módulo que realiza
la autenticación HTTP, esta variable se configura con la contraseña
proporcionada por el usuario.

35
$ _SERVER ['AUTH_TYPE']
Cuando se ejecuta bajo Apache como módulo que autentica HTTP, esta variable
se establece en el tipo de autenticación.
PHP - Expresiones regulares
Las expresiones regulares no son más que una secuencia o patrón de
caracteres en sí. Proporcionan la base para la funcionalidad de coincidencia
de patrones.
Usando la expresión regular, puede buscar una cadena particular dentro de
otra cadena, puede reemplazar una cadena por otra cadena y puede dividir
una cadena en muchos trozos.
PHP ofrece funciones específicas para dos conjuntos de funciones de
expresión regular, cada una correspondiente a un cierto tipo de expresión
regular. Puede usar cualquiera de ellos según su comodidad.

 POSIX Expresiones Regulares


 Expresiones regulares de estilo PERL

POSIX Expresiones Regulares


La estructura de una expresión regular POSIX no es diferente a la de una
expresión aritmética típica: varios elementos (operadores) se combinan para
formar expresiones más complejas.
La expresión regular más simple es aquella que coincide con un solo carácter,
como g, cadenas internas como g, regatear o bolsa.
Vamos a explicar algunos conceptos que se utilizan en la expresión regular
POSIX. Después de eso, le presentaremos funciones relacionadas con
expresiones regulares.

Soportes

Los corchetes ([]) tienen un significado especial cuando se usan en el contexto


de expresiones regulares. Se utilizan para encontrar una variedad de
personajes.

No Señor Expresión y Descripción

1
[0-9]
Coincide con cualquier dígito decimal del 0 al 9.

2
[Arizona]
Coincide con cualquier carácter, desde minúsculas a hasta minúsculas z.

3
[ARIZONA]
Coincide con cualquier personaje desde mayúscula A hasta mayúscula Z.

44
[Arizona]
Coincide con cualquier carácter de minúscula a a mayúscula Z.

Los rangos mostrados arriba son generales; también puede usar el rango [0-3]
para que coincida con cualquier dígito decimal que vaya de 0 a 3, o el rango
[bv] para que coincida con cualquier carácter en minúscula que vaya de b a v.

Cuantificadores

La frecuencia o posición de las secuencias de caracteres entre corchetes y


caracteres individuales se puede denotar con un carácter especial. Cada
personaje especial tiene una connotación específica. El +, *,?, {Int. range} y $
flags siguen una secuencia de caracteres.

No Señor Expresión y Descripción

1
p+
Coincide con cualquier cadena que contenga al menos una p.

2
pag*
Coincide con cualquier cadena que contenga cero o más p.

3
¿pag?
Coincide con cualquier cadena que contenga cero o una p.

44
p{N}
Coincide con cualquier cadena que contenga una secuencia de N p

55
p {2,3}
Coincide con cualquier cadena que contenga una secuencia de dos o tres p.

66
p {2,}
Coincide con cualquier cadena que contenga una secuencia de al menos dos p.

77
p$
Coincide con cualquier cadena con p al final.

8
^p
Coincide con cualquier cadena con p al principio.

Ejemplos

Los siguientes ejemplos aclararán sus conceptos sobre la coincidencia de


caracteres.

No Expresión y Descripción
Señor

1
[^ a-zA-Z]
Coincide con cualquier cadena que no contenga ninguno de los caracteres que
van de la A a la Z y de la A a la Z.

2
páginas
Coincide con cualquier cadena que contenga p, seguida de cualquier carácter,
seguida de otra p.

3
^. {2} $
Coincide con cualquier cadena que contenga exactamente dos caracteres.

44
<b> (. *) </b>
Coincide con cualquier cadena encerrada entre <b> y </b>.

55
p (hp) *
Coincide con cualquier cadena que contenga ap seguido de cero o más
instancias de la secuencia php.

Rangos de caracteres predefinidos

Para su conveniencia de programación, hay disponibles varios rangos de


caracteres predefinidos, también conocidos como clases de caracteres. Las
clases de caracteres especifican un rango completo de caracteres, por
ejemplo, el alfabeto o un conjunto entero:

No Expresión y Descripción
Señor

1
[[:alfa:]]
Coincide con cualquier cadena que contenga caracteres alfabéticos aA a zZ.

2
[[:dígito:]]
Coincide con cualquier cadena que contenga dígitos numéricos del 0 al 9.

3
[[: alnum:]]
Coincide con cualquier cadena que contenga caracteres alfanuméricos aA a zZ y
0 a 9.

44
[[:espacio:]]
Coincide con cualquier cadena que contenga un espacio.

Funciones POSIX Regexp de PHP


PHP actualmente ofrece siete funciones para buscar cadenas usando
expresiones regulares de estilo POSIX:

No Función descriptiva
Señor
1 ereg ()

La función ereg () busca una cadena especificada por cadena para una cadena
especificada por patrón, devolviendo verdadero si se encuentra el patrón y falso en
caso contrario.

2 ereg_replace ()
La función ereg_replace () busca la cadena especificada por patrón y reemplaza el
patrón con reemplazo si se encuentra.

3 eregi ()
La función eregi () busca en una cadena especificada por patrón una cadena
especificada por cadena. La búsqueda no distingue entre mayúsculas y
minúsculas.

44 eregi_replace ()
La función eregi_replace () funciona exactamente como ereg_replace (), excepto
que la búsqueda de patrón en cadena no distingue entre mayúsculas y minúsculas.

55 división()
La función split () dividirá una cadena en varios elementos, los límites de cada
elemento en función de la aparición del patrón en la cadena.

66 spliti ()
La función spliti () funciona exactamente de la misma manera que su hermano split
(), excepto que no distingue entre mayúsculas y minúsculas.

77 sql_regcase ()
La función sql_regcase () se puede considerar como una función de utilidad, que
convierte cada carácter de la cadena del parámetro de entrada en una expresión
entre corchetes que contiene dos caracteres.

Expresiones regulares de estilo PERL


Las expresiones regulares de estilo Perl son similares a sus contrapartes
POSIX. La sintaxis POSIX se puede usar casi indistintamente con las
funciones de expresión regular de estilo Perl. De hecho, puede usar cualquiera
de los cuantificadores presentados en la sección POSIX anterior.
Vamos a explicar algunos conceptos que se utilizan en expresiones regulares
PERL. Después de eso, le presentaremos funciones relacionadas con
expresiones regulares.

Meta personajes
Un meta carácter es simplemente un carácter alfabético precedido por una
barra diagonal inversa que actúa para dar un significado especial a la
combinación.
Por ejemplo, puede buscar grandes sumas de dinero utilizando el meta
carácter '\ d': / ([\ d] +) 000 / , Aquí \ d buscará cualquier cadena de caracteres
numéricos.
La siguiente es la lista de metacaracteres que se pueden usar en las
expresiones regulares de estilo PERL.
Character Description
. a single character
\s a whitespace character (space, tab, newline)
\S non-whitespace character
\d a digit (0-9)
\D a non-digit
\w a word character (a-z, A-Z, 0-9, _)
\W a non-word character
[aeiou] matches a single character in the given set
[^aeiou] matches a single character outside the given
set
(foo|bar|baz) matches any of the alternatives specified

Modificadores

Hay varios modificadores disponibles que pueden hacer que su trabajo con
expresiones regulares sea mucho más fácil, como mayúsculas y minúsculas,
búsqueda en varias líneas, etc.
Modifier Description
i Makes the match case insensitive
m Specifies that if the string has newline or carriage
return characters, the ^ and $ operators will now
match against a newline boundary, instead of a
string boundary
o Evaluates the expression only once
s Allows use of . to match a newline character
x Allows you to use white space in the expression for
clarity
g Globally finds all matches
cg Allows a search to continue even after a global match
fails

Funciones compatibles con PHP Regexp PERL


PHP ofrece las siguientes funciones para buscar cadenas usando expresiones
regulares compatibles con Perl:

No Función descriptiva
Señor
1 preg_match ()

La función preg_match () busca en la cadena un patrón, devolviendo verdadero si


el patrón existe y falso en caso contrario.

2 preg_match_all ()
La función preg_match_all () coincide con todas las apariciones de patrón en una
cadena.

3 preg_replace ()
La función preg_replace () funciona igual que ereg_replace (), excepto que se
pueden usar expresiones regulares en el patrón y los parámetros de entrada de
reemplazo.

44 preg_split ()
La función preg_split () funciona exactamente como split (), excepto que las
expresiones regulares se aceptan como parámetros de entrada para el patrón.

55 preg_grep ()
La función preg_grep () busca todos los elementos de input_array, devolviendo
todos los elementos que coinciden con el patrón regexp.

66 preg_ quote ()
Citar caracteres de expresiones regulares
PHP - Manejo de errores y excepciones
El manejo de errores es el proceso de capturar los errores generados por su
programa y luego tomar las medidas apropiadas. Si maneja los errores
correctamente, puede tener muchas consecuencias imprevistas.
Es muy simple en PHP para manejar un error.

Usando la función die ()


Mientras escribe su programa PHP, debe verificar todas las posibles
condiciones de error antes de continuar y tomar las medidas apropiadas
cuando sea necesario.
Pruebe el siguiente ejemplo sin tener el archivo /tmp/test.xt y con este
archivo.
<?php
if(!file_exists("/tmp/test.txt")) {
die("File not found");
}else {
$file = fopen("/tmp/test.txt","r");
print "Opend file sucessfully";
}
// Test of the code here.
?>
De esta manera puedes escribir un código eficiente. Usando la técnica
anterior, puede detener su programa cada vez que se produce un error y
mostrar un mensaje más significativo y fácil de usar.

Definición de la función personalizada de manejo de


errores
Puede escribir su propia función para manejar cualquier error. PHP le
proporciona un marco para definir la función de manejo de errores.
Esta función debe poder manejar un mínimo de dos parámetros (nivel de error
y mensaje de error) pero puede aceptar hasta cinco parámetros
(opcionalmente: archivo, número de línea y contexto de error):

Sintaxis
error_function(error_level,error_message,
error_file,error_line,error_context);
No Descripción de parámetros
Señor

1
nivel_error
Obligatorio: especifica el nivel de informe de error para el error definido por el
usuario. Debe ser un número de valor.

2
mensaje de error
Obligatorio: especifica el mensaje de error para el error definido por el usuario

3
archivo_error
Opcional: especifica el nombre del archivo en el que se produjo el error

44
error_line
Opcional: especifica el número de línea en el que ocurrió el error

55
error_context
Opcional: especifica una matriz que contiene todas las variables y sus valores en
uso cuando se produjo el error

Posibles niveles de error


Estos niveles de informe de errores son los diferentes tipos de error para los
que se puede utilizar el controlador de errores definido por el usuario. Estos
valores se utilizan en combinación con | operador

No Constante y descripción Valor


Señor

1 1
.E_ERROR
Errores fatales en tiempo de ejecución. Se detiene la ejecución del
guión.

2 2
E_ADVERTENCIA
Errores de tiempo de ejecución no fatales. La ejecución del guión no se
detiene

3 44
E_PARSE
Errores de análisis en tiempo de compilación. Los errores de análisis
solo deben ser generados por el analizador.

44 8
E_NOTICE
Avisos de tiempo de ejecución. El script encontró algo que podría ser un
error, pero que también podría ocurrir al ejecutar un script normalmente

55 dieciséis
E_CORE_ERROR
Errores fatales que ocurren durante el arranque inicial de PHP.

66 32
E_CORE_WARNING
Errores de tiempo de ejecución no fatales. Esto ocurre durante el
arranque inicial de PHP.

77 256
E_USER_ERROR
Error grave generado por el usuario. Esto es como un E_ERROR
establecido por el programador usando la función PHP trigger_error ()

8 512
E_USER_WARNING
Advertencia no fatal generada por el usuario. Esto es como un
E_WARNING establecido por el programador usando la función PHP
trigger_error ()

99 1024
E_USER_NOTICE
Aviso generado por el usuario. Esto es como un E_NOTICE establecido
por el programador usando la función PHP trigger_error ()

10 2048
E_STRICT
Avisos de tiempo de ejecución. Habilite para que PHP sugiera cambios
en su código que garantizarán la mejor interoperabilidad y la
compatibilidad directa de su código.

11 4096
E_RECOVERABLE_ERROR
Error fatal capturable. Esto es como un E_ERROR pero puede ser
detectado por un identificador definido por el usuario (ver también
set_error_handler ())

12 8191
E_ALL
Todos los errores y advertencias, excepto el nivel E_STRICT
(E_STRICT formará parte de E_ALL a partir de PHP 6.0)

Todo el nivel de error anterior se puede establecer utilizando la siguiente


función de biblioteca incorporada de PHP, donde el nivel puede ser cualquiera
de los valores definidos en la tabla anterior.
int error_reporting ( [int $level] )
La siguiente es la forma en que puede crear una función de manejo de
errores:
<?php
function handleError($errno,
$errstr,$error_file,$error_line) {
echo "<b>Error:</b> [$errno] $errstr -
$error_file:$error_line";
echo "<br />";
echo "Terminating PHP Script";

die();
}
?>

Una vez que defina su controlador de errores personalizado, debe configurarlo


utilizando la función set_error_handler de la biblioteca incorporada de
PHP . Ahora examinemos nuestro ejemplo llamando a una función que no
existe.
<?php
error_reporting( E_ERROR );

function handleError($errno,
$errstr,$error_file,$error_line) {
echo "<b>Error:</b> [$errno] $errstr -
$error_file:$error_line";
echo "<br />";
echo "Terminating PHP Script";

die();
}

//set error handler


set_error_handler("handleError");

//trigger error
myFunction();
?>

Manejo de Excepciones
PHP 5 tiene un modelo de excepción similar al de otros lenguajes de
programación. Las excepciones son importantes y proporcionan un mejor
control sobre el manejo de errores.
Vamos a explicar allí una nueva palabra clave relacionada con las
excepciones.
 Try : una función que usa una excepción debe estar en un bloque "try". Si la
excepción no se activa, el código continuará normalmente. Sin embargo, si se
dispara la excepción, se "lanza" una excepción.
 Lanzar : así es como se activa una excepción. Cada "lanzamiento" debe tener al
menos una "captura".
 Captura : un bloque "captura" recupera una excepción y crea un objeto que
contiene la información de excepción.
Cuando se produce una excepción, el código que sigue a la declaración no se
ejecutará y PHP intentará encontrar el primer bloque catch coincidente. Si no
se detecta una excepción, se emitirá un error fatal de PHP con una "excepción
no detectada ...
 Una excepción puede ser lanzada y atrapada ("atrapada") dentro de PHP. El
código puede estar rodeado por un bloque de prueba.
 Cada intento debe tener al menos un bloque catch correspondiente. Se pueden
usar múltiples bloques catch para capturar diferentes clases de excepciones.
 Se pueden lanzar excepciones (o volver a lanzar) dentro de un bloque catch.

Ejemplo

El siguiente es el fragmento de código, copie y pegue este código en un


archivo y verifique el resultado.
<?php
try {
$error = 'Always throw this error';
throw new Exception($error);

// Code following an exception is not executed.


echo 'Never executed';
}catch (Exception $e) {
echo 'Caught exception: ', $e->getMessage(), "\n";
}

// Continue execution
echo 'Hello World';
?>
En el ejemplo anterior, la función $ e-> getMessage se usa para obtener un
mensaje de error. Existen las siguientes funciones que se pueden usar desde
la clase Exception .
 getMessage () - mensaje de excepción
 getCode () - código de excepción
 getFile () - nombre del archivo fuente
 getLine () - línea de origen
 getTrace () - n matriz de backtrace ()
 getTraceAsString () : cadena de rastreo formateada

Crear un controlador de excepciones personalizado

Puede definir su propio controlador de excepciones personalizado. Utilice la


siguiente función para establecer una función de controlador de excepciones
definida por el usuario.
string set_exception_handler ( callback $exception_handler )
Aquí excepcional_controlador es el nombre de la función que se llamará
cuando ocurra una excepción no detectada. Esta función debe definirse antes
de llamar a set_exception_handler ().

Ejemplo

<?php
function exception_handler($exception) {
echo "Uncaught exception: " , $exception->getMessage(),
"\n";
}

set_exception_handler('exception_handler');
throw new Exception('Uncaught Exception');

echo "Not Executed\n";


?>

Verifique el conjunto completo de funciones de manejo de errores en


las Funciones de manejo de errores de PHP
PHP - Depuración de errores
Los programas rara vez funcionan correctamente la primera vez. Muchas
cosas pueden salir mal en su programa que hacen que el intérprete PHP
genere un mensaje de error. Puede elegir a dónde van esos mensajes de
error. Los mensajes se pueden enviar junto con otros resultados del programa
al navegador web. También se pueden incluir en el registro de errores del
servidor web.
Para que los mensajes de error se muestren en el navegador, establezca
la directiva de configuración display_errors en On . Para enviar errores al
registro de errores del servidor web, configure log_errors en On. Puede
configurarlos a ambos en Sí si desea mensajes de error en ambos lugares.
PHP define algunas constantes que puede usar para establecer el valor
de informe de errores de modo que solo se notifiquen los errores de ciertos
tipos: E_ALL (para todos los errores excepto avisos estrictos), E_PARSE
(errores de análisis), E_ERROR (errores fatales), E_WARNING
(advertencias), E_NOTICE (avisos) y E_STRICT (avisos estrictos).
Al escribir su programa PHP, es una buena idea usar editores compatibles con
PHP como BBEdit o Emacs . Una de las características especiales
especiales de estos editores es el resaltado de sintaxis. Cambia el color de
diferentes partes de su programa en función de cuáles son esas partes. Por
ejemplo, las cadenas son rosas, las palabras clave como if y while son azules,
los comentarios son grises y las variables son negras.
Otra característica es la coincidencia de comillas y comillas, lo que ayuda a
garantizar que sus comillas y corchetes estén equilibrados. Cuando escribe un
delimitador de cierre como}, el editor resalta la apertura {que coincide.
Existen los siguientes puntos que deben verificarse al depurar su programa.
 Semicolones faltantes : cada instrucción PHP termina con un punto y coma
(;). PHP no deja de leer una declaración hasta que alcanza un punto y coma. Si
omite el punto y coma al final de una línea, PHP continúa leyendo la declaración
en la siguiente línea.
 No hay suficientes signos iguales : cuando pregunta si dos valores son iguales
en una declaración de comparación, necesita dos signos iguales (==). Usar un
signo igual es un error común.
 Nombres de variables mal escritas: si escribe mal una variable, PHP la entiende
como una nueva variable. Recuerde: para PHP, $ test no es la misma variable
que $ Test.
 Signos de dólar perdidos: un signo de dólar perdido en un nombre variable es
realmente difícil de ver, pero al menos generalmente genera un mensaje de error
para que sepa dónde buscar el problema.
 Cotizaciones problemáticas : puede tener demasiadas, muy pocas o el tipo
incorrecto de citas. Por lo tanto, busque un número equilibrado de citas.
 Faltan paréntesis y corchetes : siempre deben estar en pares.
 Índice de matriz : todas las matrices deben comenzar desde cero en lugar de 1.
Además, maneje todos los errores correctamente y dirija todos los mensajes
de rastreo al archivo de registro del sistema para que, si ocurre algún
problema, se registre en el archivo de registro del sistema y pueda depurar
ese problema.

PHP - Fecha y hora


Las fechas son una parte tan importante de la vida cotidiana que resulta fácil
trabajar con ellas sin pensar. PHP también proporciona herramientas
poderosas para la aritmética de fechas que facilitan la manipulación de fechas.

Obtener el sello de tiempo con tiempo ()


La función time () de PHP le brinda toda la información que necesita sobre la
fecha y hora actuales. No requiere argumentos pero devuelve un número
entero.
El número entero devuelto por time () representa el número de segundos
transcurridos desde la medianoche GMT del 1 de enero de 1970. Este
momento se conoce como la época UNIX, y el número de segundos que han
transcurrido desde entonces se denomina marca de tiempo.
Demo en vivo
<?php
print time();
?>
Esto producirá el siguiente resultado:
1480930103
Esto es algo difícil de entender. Pero PHP ofrece excelentes herramientas
para convertir una marca de tiempo en una forma con la que los humanos se
sientan cómodos.

Convertir una marca de tiempo con getdate ()


La función getdate () opcionalmente acepta una marca de tiempo y devuelve
una matriz asociativa que contiene información sobre la fecha. Si omite la
marca de tiempo, funciona con la marca de tiempo actual que devuelve time ().
La siguiente tabla enumera los elementos contenidos en la matriz devuelta por
getdate ().

No Señor Clave y descripción Ejemplo

1 20
segundos
Segundos pasados los minutos (0-59)

2 29
minutos
Minutos después de la hora (0-59)

3 22
horas
Horas del día (0-23)

44 11
mday
Día del mes (1 - 31)

55 44
wday
Día de la semana (0 - 6)

66 77
Lun
Mes del año (1 - 12)

77 1997
año
Año (4 dígitos)

8 19
el dia
Día del año (0 - 365)
99 jueves
día laborable
Día de la semana

10 enero
mes
Mes del año

11 948370048
00
Marca de tiempo

Ahora tiene control completo sobre la fecha y la hora. Puede formatear esta
fecha y hora en el formato que desee.

Ejemplo

Pruebe el siguiente ejemplo


Demo en vivo
<?php
$date_array = getdate();

foreach ( $date_array as $key => $val ){


print "$key = $val<br />";
}

$formated_date = "Today's date: ";


$formated_date .= $date_array['mday'] . "/";
$formated_date .= $date_array['mon'] . "/";
$formated_date .= $date_array['year'];

print $formated_date;
?>
Esto producirá el siguiente resultado:
seconds = 10
minutes = 29
hours = 9
mday = 5
wday = 1
mon = 12
year = 2016
yday = 339
weekday = Monday
month = December
0 = 1480930150
Today's date: 5/12/2016

Convertir una marca de tiempo con fecha ()


La función date () devuelve una cadena con formato que representa una
fecha. Puede ejercer una enorme cantidad de control sobre el formato que
date () devuelve con un argumento de cadena que debe pasarle.
date(format,timestamp)
La fecha () opcionalmente acepta una marca de tiempo si se omite, entonces
se usará la fecha y hora actuales. Cualquier otro dato que incluya en la
cadena de formato pasada a date () se incluirá en el valor de retorno.
La siguiente tabla enumera los códigos que puede contener una cadena de
formato:

No Señor Formato y descripción Ejemplo

1 pm
un
'am' o 'pm' en minúsculas

2 PM
UN
'AM' o 'PM' en mayúsculas

3 20
re
Día del mes, un número con ceros a la izquierda

44 Jue
re
Día de la semana (tres letras)

55 enero
F
Nombre del mes

66 12
h
Hora (formato de 12 horas - ceros iniciales)

77 22
H
Hora (formato de 24 horas - ceros iniciales)

8 12
sol
Hora (formato de 12 horas - sin ceros a la izquierda)

99 22
sol
Hora (formato de 24 horas - sin ceros a la izquierda)

10 23
yo
Minutos (0-59)

11 20
j
Día del mes (sin ceros a la izquierda

12 jueves
l ('L' inferior)
Día de la semana

13 1
L
Año bisiesto ('1' para sí, '0' para no)

14 1
metro
Mes del año (número - ceros iniciales)

15 ene
METRO
Mes del año (tres letras)

dieciséis Jue, 21 dic 2000


r
16:01:07 +0200
La fecha formateada RFC 2822

17 2
norte
Mes del año (número - sin ceros a la izquierda)

18 años 20
s
Segundos de hora

19 948372444
U
Sello de tiempo

20 06
y
Año (dos dígitos)
21 2006
Y
Año (cuatro dígitos)

22 206
z
Día del año (0 - 365)

23 +5
Z
Compensación en segundos de GMT

Ejemplo

Pruebe el siguiente ejemplo


Demo en vivo
<?php
print date("m/d/y G.i:s<br>", time());
echo "<br>";
print "Today is ";
print date("j of F Y, \a\\t g.i a", time());
?>

Esto producirá el siguiente resultado:


12/05/16 9:29:47
Today is 5 2016f December 2016 at 9:29 am
Espero que comprenda bien cómo formatear la fecha y la hora de acuerdo con
sus requisitos. Para su referencia, se proporciona una lista completa de todas
las funciones de fecha y hora en Funciones de fecha y hora de PHP
PHP y MySQL
PHP funcionará con prácticamente todo el software de base de datos,
incluidos Oracle y Sybase, pero el más comúnmente utilizado es la base de
datos MySQL disponible gratuitamente.

¿Qué deberías tener ya?


 Has seguido el tutorial de MySQL para comprender los conceptos básicos de
MySQL.
 Descargué e instalé una última versión de MySQL.
 Creado por el usuario de base de datos de invitados con contraseña guest123 .
 Si no ha creado una base de datos, necesitaría un usuario root y su contraseña
para crear una base de datos.
Hemos dividido este capítulo en las siguientes secciones:
 Conexión a la base de datos MySQL : aprenda a usar PHP para abrir y cerrar una
conexión de base de datos MySQL.
 Crear una base de datos MySQL usando PHP - Esta parte explica cómo crear una
base de datos MySQL y tablas usando PHP.
 Eliminar la base de datos MySQL usando PHP - Esta parte explica cómo eliminar
la base de datos MySQL y las tablas usando PHP.
 Insertar datos en la base de datos MySQL : una vez que haya creado su base de
datos y tablas, le gustaría insertar sus datos en las tablas creadas. Esta sesión lo
llevará a través de ejemplos reales de inserción de datos.
 Recuperar datos de la base de datos MySQL : aprenda a buscar registros de la
base de datos MySQL usando PHP.
 Uso de paginación a través de PHP : este explica cómo mostrar el resultado de su
consulta en varias páginas y cómo crear el enlace de navegación.
 Actualización de datos en la base de datos MySQL : esta parte explica cómo
actualizar los registros existentes en la base de datos MySQL usando PHP.
 Eliminar datos de la base de datos MySQL : esta parte explica cómo eliminar o
purgar registros existentes de la base de datos MySQL usando PHP.
 Uso de PHP para hacer una copia de seguridad de la base de datos MySQL :
aprenda diferentes formas de hacer una copia de seguridad de su base de datos
MySQL por razones de seguridad

Conexión de base de datos MySQL


Abrir conexión de base de datos
PHP proporciona la función mysql_connect para abrir una conexión de base
de datos. Esta función toma cinco parámetros y devuelve un identificador de
enlace MySQL en caso de éxito o FALSO en caso de error.

Sintaxis
connection
mysql_connect(server,user,passwd,new_link,client_flag);
No Descripción de parámetros
Señor

1
servidor
Opcional: el nombre de host que ejecuta el servidor de base de datos. Si no se
especifica, el valor predeterminado es localhost: 3306 .

2
usuario
Opcional: el nombre de usuario que accede a la base de datos. Si no se especifica,
el valor predeterminado es el nombre del usuario propietario del proceso del
servidor.

3
passwd
Opcional: la contraseña del usuario que accede a la base de datos. Si no se
especifica, el valor predeterminado es una contraseña vacía.

44
nuevo_enlace
Opcional: si se realiza una segunda llamada a mysql_connect () con los mismos
argumentos, no se establecerá una nueva conexión; en su lugar, se devolverá el
identificador de la conexión ya abierta.

55
banderas_clientes
Opcional: una combinación de las siguientes constantes:
 MYSQL_CLIENT_SSL - Usar cifrado SSL
 MYSQL_CLIENT_COMPRESS - Usar protocolo de compresión
 MYSQL_CLIENT_IGNORE_SPACE - Permitir espacio después de los
nombres de funciones
 MYSQL_CLIENT_INTERACTIVE : permita un tiempo de espera interactivo
de segundos de inactividad antes de cerrar la conexión

NOTA - Puede especificar servidor, usuario, contraseña en


el archivo php.ini en lugar de usarlos una y otra vez en todos sus scripts
PHP. Verifique la configuración del archivo php.ini .

Cerrar conexión de base de datos


Su función más simple que mysql_close PHP proporciona para cerrar una
conexión de base de datos. Esta función toma el recurso de conexión devuelto
por la función mysql_connect. Devuelve VERDADERO en caso de éxito o
FALSO en caso de error.

Sintaxis

bool mysql_close ( resource $link_identifier );


Si no se especifica un recurso, se cierra la última base de datos opend.

Ejemplo

Pruebe el siguiente ejemplo para abrir y cerrar una conexión de base de datos:
<?php

$dbhost = 'localhost:3036';
$dbuser = 'guest';
$dbpass = 'guest123';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';


mysql_close($conn);
?>

Crear una base de datos MySQL usando


PHP

Crear una base de datos


Para crear y eliminar una base de datos, debe tener privilegios de
administrador. Es muy fácil crear una nueva base de datos MySQL. PHP usa
la función mysql_query para crear una base de datos MySQL. Esta función
toma dos parámetros y devuelve VERDADERO en caso de éxito o FALSO en
caso de error.

Sintaxis

bool mysql_query( sql, connection );


No Descripción de parámetros
Señor

1
sql
Obligatorio: consulta SQL para crear una base de datos

2
conexión
Opcional: si no se especifica, se utilizará la última conexión opend por
mysql_connect.

Ejemplo

Pruebe el siguiente ejemplo para crear una base de datos:


<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';

$sql = 'CREATE Database test_db';


$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not create database: ' . mysql_error());
}

echo "Database test_db created successfully\n";


mysql_close($conn);
?>

Seleccionar una base de datos


Una vez que establezca una conexión con un servidor de base de datos,
entonces es necesario seleccionar una base de datos particular donde estén
asociadas todas sus tablas.
Esto es necesario porque puede haber múltiples bases de datos que residen
en un solo servidor y puede trabajar con una sola base de datos a la vez.
PHP proporciona la función mysql_select_db para seleccionar una base de
datos. Devuelve VERDADERO en caso de éxito o FALSO en caso de error.

Sintaxis

bool mysql_select_db( db_name, connection );


No Descripción de parámetros
Señor

1
db_name
Obligatorio: se debe seleccionar el nombre de la base de datos

2
conexión
Opcional: si no se especifica, se utilizará la última conexión opend por
mysql_connect.

Ejemplo

Aquí está el ejemplo que le muestra cómo seleccionar una base de datos.
<?php
$dbhost = 'localhost:3036';
$dbuser = 'guest';
$dbpass = 'guest123';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';

mysql_select_db( 'test_db' );
mysql_close($conn);

?>

Crear tablas de base de datos


Para crear tablas en la nueva base de datos, debe hacer lo mismo que crear la
base de datos. Primero cree la consulta SQL para crear las tablas y luego
ejecute la consulta usando la función mysql_query ().

Ejemplo

Pruebe el siguiente ejemplo para crear una tabla:


<?php

$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);
if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

echo 'Connected successfully';

$sql = 'CREATE TABLE employee( '.


'emp_id INT NOT NULL AUTO_INCREMENT, '.
'emp_name VARCHAR(20) NOT NULL, '.
'emp_address VARCHAR(20) NOT NULL, '.
'emp_salary INT NOT NULL, '.
'join_date timestamp(14) NOT NULL, '.
'primary key ( emp_id ))';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not create table: ' . mysql_error());
}

echo "Table employee created successfully\n";

mysql_close($conn);
?>

En caso de que necesite crear muchas tablas, es mejor crear primero un


archivo de texto y colocar todos los comandos SQL en ese archivo de texto y
luego cargar ese archivo en la variable $ sql y ejecutar esos comandos.
Considere el siguiente contenido en el archivo sql_query.txt
CREATE TABLE employee(
emp_id INT NOT NULL AUTO_INCREMENT,
emp_name VARCHAR(20) NOT NULL,
emp_address VARCHAR(20) NOT NULL,
emp_salary INT NOT NULL,
join_date timestamp(14) NOT NULL,
primary key ( emp_id ));
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$query_file = 'sql_query.txt';

$fp = fopen($query_file, 'r');


$sql = fread($fp, filesize($query_file));
fclose($fp);
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not create table: ' . mysql_error());
}

echo "Table employee created successfully\n";


mysql_close($conn);
?>

Eliminar la base de datos MySQL usando


PHP
Eliminar una base de datos
Si ya no se necesita una base de datos, se puede eliminar para
siempre. Puede usar pasar un comando SQL a mysql_query para eliminar
una base de datos.

Ejemplo

Pruebe el siguiente ejemplo para descartar una base de datos.


<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$sql = 'DROP DATABASE test_db';


$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not delete database db_test: ' .
mysql_error());
}

echo "Database deleted successfully\n";

mysql_close($conn);
?>
ADVERTENCIA : es muy peligroso eliminar una base de datos y cualquier
tabla. Entonces, antes de eliminar cualquier tabla o base de datos, debe
asegurarse de que está haciendo todo intencionalmente.

Eliminar una tabla


De nuevo, se trata de emitir un comando SQL a través de
la función mysql_query para eliminar cualquier tabla de base de datos. Pero
tenga mucho cuidado al usar este comando porque al hacerlo puede eliminar
alguna información importante que tenga en su tabla.

Ejemplo

Pruebe el siguiente ejemplo para colocar una tabla:


<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$sql = 'DROP TABLE employee';


$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not delete table employee: ' .
mysql_error());
}

echo "Table deleted successfully\n";

mysql_close($conn);
?>

Insertar datos en la base de datos MySQL


Los datos se pueden ingresar en las tablas MySQL ejecutando la instrucción
SQL INSERT a través de la función PHP mysql_query . Debajo de un
ejemplo simple para insertar un registro en la tabla de empleados .

Ejemplo
Pruebe el siguiente ejemplo para insertar el registro en la tabla de empleados.
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$sql = 'INSERT INTO employee '.
'(emp_name,emp_address, emp_salary, join_date) '.
'VALUES ( "guest", "XYZ", 2000, NOW() )';

mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not enter data: ' . mysql_error());
}

echo "Entered data successfully\n";

mysql_close($conn);
?>
En una aplicación real, todos los valores se tomarán usando un formulario
HTML y luego esos valores se capturarán usando un script PHP y finalmente
se insertarán en las tablas de MySQL.
Mientras hace los datos, inserte su mejor práctica para usar la
función get_magic_quotes_gpc () para verificar si la configuración actual
para la cita mágica está establecida o no. Si esta función devuelve falso, use
la función addlashes () para agregar barras inclinadas antes de las comillas.

Ejemplo
Pruebe este ejemplo colocando este código en add_employee.php, esto
tomará datos utilizando el formulario HTML y luego creará registros en la base
de datos.
<html>

<head>
<title>Add New Record in MySQL Database</title>
</head>

<body>
<?php
if(isset($_POST['add'])) {
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

if(! get_magic_quotes_gpc() ) {
$emp_name = addslashes ($_POST['emp_name']);
$emp_address = addslashes
($_POST['emp_address']);
}else {
$emp_name = $_POST['emp_name'];
$emp_address = $_POST['emp_address'];
}

$emp_salary = $_POST['emp_salary'];

$sql = "INSERT INTO employee ".


"(emp_name,emp_address, emp_salary,
join_date) ".
"VALUES('$emp_name','$emp_address',$emp_salary, NOW())";

mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not enter data: ' . mysql_error());
}

echo "Entered data successfully\n";

mysql_close($conn);
}else {
?>

<form method = "post" action = "<?php


$_PHP_SELF ?>">
<table width = "400" border = "0"
cellspacing = "1"
cellpadding = "2">

<tr>
<td width = "100">Employee Name</td>
<td><input name = "emp_name" type =
"text"
id = "emp_name"></td>
</tr>

<tr>
<td width = "100">Employee
Address</td>
<td><input name = "emp_address" type
= "text"
id = "emp_address"></td>
</tr>

<tr>
<td width = "100">Employee
Salary</td>
<td><input name = "emp_salary" type =
"text"
id = "emp_salary"></td>
</tr>
<tr>
<td width = "100"> </td>
<td> </td>
</tr>

<tr>
<td width = "100"> </td>
<td>
<input name = "add" type =
"submit" id = "add"
value = "Add Employee">
</td>
</tr>

</table>
</form>

<?php
}
?>

</body>
</html>

Obteniendo datos de la base de datos


MySQL
Los datos se pueden obtener de las tablas MySQL ejecutando la instrucción
SELECT de SQL a través de la función PHP mysql_query. Tiene varias
opciones para obtener datos de MySQL.
La opción más utilizada es utilizar la función mysql_fetch_array () . Esta
función devuelve la fila como una matriz asociativa, una matriz numérica o
ambas. Esta función devuelve FALSE si no hay más filas.
A continuación se muestra un ejemplo simple para buscar registros de la tabla
de empleados .

Ejemplo
Pruebe el siguiente ejemplo para mostrar todos los registros de la tabla de
empleados.
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$sql = 'SELECT emp_id, emp_name, emp_salary FROM


employee';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not get data: ' . mysql_error());
}

while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) {


echo "EMP ID :{$row['emp_id']} <br> ".
"EMP NAME : {$row['emp_name']} <br> ".
"EMP SALARY : {$row['emp_salary']} <br> ".
"--------------------------------<br>";
}

echo "Fetched data successfully\n";

mysql_close($conn);
?>

El contenido de las filas se asigna a la variable $ fila y luego se imprimen los


valores en fila.
NOTA : recuerde siempre colocar corchetes cuando desee insertar un valor de
matriz directamente en una cadena.
En el ejemplo anterior, la constante MYSQL_ASSOC se usa como segundo
argumento para mysql_fetch_array (), de modo que devuelve la fila como una
matriz asociativa. Con una matriz asociativa puede acceder al campo
utilizando su nombre en lugar de utilizar el índice.
PHP proporciona otra función llamada mysql_fetch_assoc () que también
devuelve la fila como una matriz asociativa.

Ejemplo
Pruebe el siguiente ejemplo para mostrar todos los registros de la tabla de
empleados utilizando la función mysql_fetch_assoc ().
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$sql = 'SELECT emp_id, emp_name, emp_salary FROM


employee';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not get data: ' . mysql_error());
}

while($row = mysql_fetch_assoc($retval)) {
echo "EMP ID :{$row['emp_id']} <br> ".
"EMP NAME : {$row['emp_name']} <br> ".
"EMP SALARY : {$row['emp_salary']} <br> ".
"--------------------------------<br>";
}

echo "Fetched data successfully\n";

mysql_close($conn);
?>
También puede usar la constante MYSQL_NUM , como el segundo argumento
de mysql_fetch_array (). Esto hará que la función devuelva una matriz con
índice numérico.

Ejemplo
Pruebe el siguiente ejemplo para mostrar todos los registros de la tabla de
empleados utilizando el argumento MYSQL_NUM.
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$sql = 'SELECT emp_id, emp_name, emp_salary FROM


employee';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );
if(! $retval ) {
die('Could not get data: ' . mysql_error());
}

while($row = mysql_fetch_array($retval, MYSQL_NUM)) {


echo "EMP ID :{$row[0]} <br> ".
"EMP NAME : {$row[1]} <br> ".
"EMP SALARY : {$row[2]} <br> ".
"--------------------------------<br>";
}

echo "Fetched data successfully\n";

mysql_close($conn);
?>
Todos los tres ejemplos anteriores producirán el mismo resultado.

Liberando memoria
Es una buena práctica liberar memoria del cursor al final de cada instrucción
SELECT. Esto se puede hacer usando la función PHP mysql_free_result
() . A continuación se muestra el ejemplo para mostrar cómo se debe usar.

Ejemplo

Pruebe el siguiente ejemplo


<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$sql = 'SELECT emp_id, emp_name, emp_salary FROM


employee';
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not get data: ' . mysql_error());
}

while($row = mysql_fetch_array($retval, MYSQL_NUM)) {


echo "EMP ID :{$row[0]} <br> ".
"EMP NAME : {$row[1]} <br> ".
"EMP SALARY : {$row[2]} <br> ".
"--------------------------------<br>";
}

mysql_free_result($retval);
echo "Fetched data successfully\n";

mysql_close($conn);
?>
Mientras busca datos, puede escribir SQL tan complejo como desee. El
procedimiento seguirá siendo el mencionado anteriormente.

Usar paginación a través de PHP


Siempre es posible que su consulta de instrucción SQL SELECT pueda
generar miles de registros. Pero no es una buena idea mostrar todos los
resultados en una página. Por lo tanto, podemos dividir este resultado en
muchas páginas según los requisitos.
Paginación significa mostrar el resultado de su consulta en varias páginas en
lugar de ponerlas todas en una página larga.
MySQL ayuda a generar paginación usando la cláusula LIMIT que tomará dos
argumentos. Primer argumento como OFFSET y segundo argumento cuántos
registros deben devolverse de la base de datos.
A continuación se muestra un ejemplo simple para buscar registros utilizando
la cláusula LIMIT para generar paginación.

Ejemplo
Pruebe el siguiente ejemplo para mostrar 10 registros por página.
<html>

<head>
<title>Paging Using PHP</title>
</head>

<body>
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$rec_limit = 10;
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
mysql_select_db('test_db');

/* Get total number of records */


$sql = "SELECT count(emp_id) FROM employee ";
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not get data: ' . mysql_error());
}
$row = mysql_fetch_array($retval, MYSQL_NUM );
$rec_count = $row[0];

if( isset($_GET{'page'} ) ) {
$page = $_GET{'page'} + 1;
$offset = $rec_limit * $page ;
}else {
$page = 0;
$offset = 0;
}

$left_rec = $rec_count - ($page * $rec_limit);


$sql = "SELECT emp_id, emp_name, emp_salary ".
"FROM employee ".
"LIMIT $offset, $rec_limit";

$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not get data: ' . mysql_error());
}

while($row = mysql_fetch_array($retval,
MYSQL_ASSOC)) {
echo "EMP ID :{$row['emp_id']} <br> ".
"EMP NAME : {$row['emp_name']} <br> ".
EMP SALARY : {$row['emp_salary']} <br> ".
"--------------------------------<br>";
}

if( $page > 0 ) {


$last = $page - 2;
echo "<a href = \"$_PHP_SELF?page = $last\">Last
10 Records</a> |";
echo "<a href = \"$_PHP_SELF?page = $page\">Next
10 Records</a>";
}else if( $page == 0 ) {
echo "<a href = \"$_PHP_SELF?page = $page\">Next
10 Records</a>";
}else if( $left_rec < $rec_limit ) {
$last = $page - 2;
echo "<a href = \"$_PHP_SELF?page = $last\">Last
10 Records</a>";
}

mysql_close($conn);
?>

</body>
</html>

Actualización de datos en la base de datos


MySQL
Los datos pueden actualizarse en tablas MySQL ejecutando la instrucción
SQL UPDATE a través de la función PHP mysql_query .
A continuación se muestra un ejemplo simple para actualizar registros
en la tabla de empleados . Para actualizar un registro en cualquier tabla, es
necesario ubicar ese registro utilizando una cláusula condicional. El siguiente
ejemplo utiliza la clave principal para hacer coincidir un registro en la tabla de
empleados.

Ejemplo
Pruebe el siguiente ejemplo para comprender la operación de
actualización. Debe proporcionar una identificación de empleado para
actualizar el salario de un empleado.
<html>

<head>
<title>Update a Record in MySQL Database</title>
</head>

<body>
<?php
if(isset($_POST['update'])) {
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$emp_id = $_POST['emp_id'];
$emp_salary = $_POST['emp_salary'];

$sql = "UPDATE employee ". "SET emp_salary =


$emp_salary ".
"WHERE emp_id = $emp_id" ;
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not update data: ' .
mysql_error());
}
echo "Updated data successfully\n";

mysql_close($conn);
}else {
?>
<form method = "post" action = "<?php
$_PHP_SELF ?>">
<table width = "400" border =" 0"
cellspacing = "1"
cellpadding = "2">

<tr>
<td width = "100">Employee ID</td>
<td><input name = "emp_id" type =
"text"
id = "emp_id"></td>
</tr>
<tr>
<td width = "100">Employee
Salary</td>
<td><input name = "emp_salary" type =
"text"
id = "emp_salary"></td>
</tr>

<tr>
<td width = "100"> </td>
<td> </td>
</tr>

<tr>
<td width = "100"> </td>
<td>
<input name = "update" type =
"submit"
id = "update" value = "Update">
</td>
</tr>

</table>
</form>
<?php
}
?>

</body>
</html>

Eliminar datos de la base de datos MySQL


Los datos se pueden eliminar de las tablas de MySQL ejecutando la
instrucción DELETE de SQL a través de la función PHP mysql_query .
A continuación se muestra un ejemplo simple para eliminar registros
en la tabla de empleados . Para eliminar un registro en cualquier tabla, es
necesario ubicar ese registro utilizando una cláusula condicional. El siguiente
ejemplo utiliza la clave principal para hacer coincidir un registro en la tabla de
empleados.

Ejemplo
Pruebe el siguiente ejemplo para comprender la operación de
eliminación. Debe proporcionar una identificación de empleado para eliminar
un registro de empleado de la tabla de empleados.
<html>

<head>
<title>Delete a Record from MySQL Database</title>
</head>

<body>
<?php
if(isset($_POST['delete'])) {
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';
$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$emp_id = $_POST['emp_id'];

$sql = "DELETE FROM employee WHERE emp_id =


$emp_id" ;
mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not delete data: ' .
mysql_error());
}

echo "Deleted data successfully\n";

mysql_close($conn);
}else {
?>
<form method = "post" action = "<?php
$_PHP_SELF ?>">
<table width = "400" border = "0"
cellspacing = "1"
cellpadding = "2">

<tr>
<td width = "100">Employee ID</td>
<td><input name = "emp_id" type =
"text"
id = "emp_id"></td>
</tr>

<tr>
<td width = "100"> </td>
<td> </td>
</tr>
<tr>
<td width = "100"> </td>
<td>
<input name = "delete" type =
"submit"
id = "delete" value = "Delete">
</td>
</tr>

</table>
</form>
<?php
}
?>

</body>
</html>

Realizar copias de seguridad de MySQL


usando PHP
Siempre es una buena práctica realizar una copia de seguridad periódica de
su base de datos. Hay tres formas que puede usar para hacer una copia de
seguridad de su base de datos MySQL.

 Usando el comando SQL a través de PHP.


 Usando MySQL binary mysqldump a través de PHP.
 Usando la interfaz de usuario phpMyAdmin.

Usando el comando SQL a través de PHP


Puede ejecutar el comando SQL SELECT para hacer una copia de seguridad
de cualquier tabla. Para realizar un volcado completo de la base de datos,
deberá escribir una consulta separada para una tabla separada. Cada tabla se
almacenará en un archivo de texto separado.

Ejemplo

Pruebe el siguiente ejemplo de uso de la consulta SELECCIONAR EN SALIDA


para crear una copia de seguridad de la tabla:
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}

$table_name = "employee";
$backup_file = "/tmp/employee.sql";
$sql = "SELECT * INTO OUTFILE '$backup_file' FROM
$table_name";

mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not take data backup: ' . mysql_error());
}

echo "Backedup data successfully\n";

mysql_close($conn);
?>
Puede haber casos en los que necesite restaurar datos que haya respaldado
hace algún tiempo. Para restaurar la copia de seguridad solo necesita ejecutar
la consulta LOAD DATA INFILE como esta:
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$conn = mysql_connect($dbhost, $dbuser, $dbpass);

if(! $conn ) {
die('Could not connect: ' . mysql_error());
}
$table_name = "employee";
$backup_file = "/tmp/employee.sql";
$sql = "LOAD DATA INFILE '$backup_file' INTO TABLE
$table_name";

mysql_select_db('test_db');
$retval = mysql_query( $sql, $conn );

if(! $retval ) {
die('Could not load data : ' . mysql_error());
}
echo "Loaded data successfully\n";

mysql_close($conn);
?>

Usando MySQL binary mysqldump a través de PHP


MySQL proporciona una utilidad mysqldump para realizar copias de
seguridad de la base de datos. Usando este binario, puede realizar un volcado
completo de la base de datos en un solo comando.

Ejemplo

Pruebe el siguiente ejemplo para realizar el volcado completo de su base de


datos:
<?php
$dbhost = 'localhost:3036';
$dbuser = 'root';
$dbpass = 'rootpassword';

$backup_file = $dbname . date("Y-m-d-H-i-s") . '.gz';


$command = "mysqldump --opt -h $dbhost -u $dbuser -p
$dbpass ". "test_db | gzip > $backup_file";

system($command);
?>

Usando la interfaz de usuario phpMyAdmin


Si tiene disponible la interfaz de usuario phpMyAdmin , es muy fácil para
usted hacer una copia de seguridad de su base de datos.
Para hacer una copia de seguridad de su base de datos MySQL usando
phpMyAdmin, haga clic en el enlace "exportar" en la página principal de
phpMyAdmin Elija la base de datos que desea respaldar, verifique las
opciones de SQL apropiadas e ingrese el nombre del archivo de respaldo.
PHP y AJAX
¿Qué es el AJAX?
 AJAX significa A sincrónico Ja vaScript y X ML. AJAX es una nueva técnica para
crear aplicaciones web mejores, más rápidas y más interactivas con la ayuda de
XML, HTML, CSS y Java Script.
 La aplicación web convencional transmite información hacia y desde el servidor
mediante solicitudes sincrónicas. Esto significa que completa un formulario,
presiona enviar y se lo dirige a una nueva página con nueva información del
servidor.
 Con AJAX cuando se presiona enviar, JavaScript realizará una solicitud al
servidor, interpretará los resultados y actualizará la pantalla actual. En el sentido
más puro, el usuario nunca sabría que algo se transmitió al servidor.
Para un aprendizaje completo sobre AJAX, consulte el Tutorial de AJAX.

Ejemplo de PHP y AJAX


Para ilustrar claramente lo fácil que es acceder a la información de una base
de datos usando Ajax y PHP, vamos a construir consultas MySQL sobre la
marcha y mostrar los resultados en "ajax.html". Pero antes de continuar,
hagamos el trabajo de base. Cree una tabla con el siguiente comando.
NOTA - Asumimos que tiene privilegios suficientes para realizar las siguientes
operaciones de MySQL.
CREATE TABLE `ajax_example` (
`name` varchar(50) NOT NULL,
`age` int(11) NOT NULL,
`sex` varchar(1) NOT NULL,
`wpm` int(11) NOT NULL,
PRIMARY KEY (`name`)
)
Ahora volcar los siguientes datos en esta tabla utilizando las siguientes
instrucciones SQL.
INSERT INTO `ajax_example` VALUES ('Jerry', 120, 'm', 20);
INSERT INTO `ajax_example` VALUES ('Regis', 75, 'm', 44);
INSERT INTO `ajax_example` VALUES ('Frank', 45, 'm', 87);
INSERT INTO `ajax_example` VALUES ('Jill', 22, 'f', 72);
INSERT INTO `ajax_example` VALUES ('Tracy', 27, 'f', 0);
INSERT INTO `ajax_example` VALUES ('Julie', 35, 'f', 90);

Archivo HTML del lado del cliente


Ahora tengamos nuestro archivo HTML del lado del cliente que es ajax.html y
tendrá el siguiente código
<html>
<body>

<script language = "javascript" type =


"text/javascript">
<!--
//Browser Support Code
function ajaxFunction(){
var ajaxRequest; // The variable that makes
Ajax possible!

try {
// Opera 8.0+, Firefox, Safari
ajaxRequest = new XMLHttpRequest();
}catch (e) {
// Internet Explorer Browsers
try {
ajaxRequest = new
ActiveXObject("Msxml2.XMLHTTP");
}catch (e) {
try{
ajaxRequest = new
ActiveXObject("Microsoft.XMLHTTP");
}catch (e){
// Something went wrong
alert("Your browser broke!");
return false;
}
}
}

// Create a function that will receive data


// sent from the server and will update
// div section in the same page.

ajaxRequest.onreadystatechange = function(){
if(ajaxRequest.readyState == 4){
var ajaxDisplay =
document.getElementById('ajaxDiv');
ajaxDisplay.innerHTML =
ajaxRequest.responseText;
}
}

// Now get the value from user and pass it to


// server script.

var age =
document.getElementById('age').value;
var wpm =
document.getElementById('wpm').value;
var sex =
document.getElementById('sex').value;
var queryString = "?age=" + age ;

queryString += "&wpm=" + wpm + "&sex=" + sex;


ajaxRequest.open("GET", "ajax-example.php" +
queryString, true);
ajaxRequest.send(null);
}
//-->
</script>

<form name = 'myForm'>


Max Age: <input type = 'text' id = 'age' /> <br />
Max WPM: <input type = 'text' id = 'wpm' />
<br />

Sex: <select id = 'sex'>


<option value = "m">m</option>
<option value = "f">f</option>
</select>

<input type = 'button' onclick = 'ajaxFunction()'


value = 'Query MySQL'/>

</form>

<div id = 'ajaxDiv'>Your result will display here</div>


</body>
</html>
NOTA - La forma de pasar variables en la consulta es de acuerdo con el
estándar HTTP y tiene formA.
URL?variable1=value1;&variable2=value2;
Ahora el código anterior le dará una pantalla como se muestra a continuación
NOTA - Esta es una pantalla ficticia y no funcionaría.

Edad máxima:

WPM máx .:
Sexo:
Tu resultado se mostrará aquí

Archivo PHP del lado del servidor


Así que ahora su script del lado del cliente está listo. Ahora tenemos que
escribir nuestro script del lado del servidor que recuperará la edad, palabras
por minuto y sexo de la base de datos y lo enviará de vuelta al cliente. Ponga
el siguiente código en el archivo "ajax-example.php".
<?php

$dbhost = "localhost";
$dbuser = "dbusername";
$dbpass = "dbpassword";
$dbname = "dbname";

//Connect to MySQL Server


mysql_connect($dbhost, $dbuser, $dbpass);

//Select Database
mysql_select_db($dbname) or die(mysql_error());

// Retrieve data from Query String


$age = $_GET['age'];
$sex = $_GET['sex'];
$wpm = $_GET['wpm'];

// Escape User Input to help prevent SQL Injection


$age = mysql_real_escape_string($age);
$sex = mysql_real_escape_string($sex);
$wpm = mysql_real_escape_string($wpm);

//build query
$query = "SELECT * FROM ajax_example WHERE sex = '$sex'";

if(is_numeric($age))
$query .= " AND age <= $age";

if(is_numeric($wpm))
$query .= " AND wpm <= $wpm";

//Execute query
$qry_result = mysql_query($query) or die(mysql_error());

//Build Result String


$display_string = "<table>";
$display_string .= "<tr>";
$display_string .= "<th>Name</th>";
$display_string .= "<th>Age</th>";
$display_string .= "<th>Sex</th>";
$display_string .= "<th>WPM</th>";
$display_string .= "</tr>";

// Insert a new row in the table for each person returned


while($row = mysql_fetch_array($qry_result)) {
$display_string .= "<tr>";
$display_string .= "<td>$row[name]</td>";
$display_string .= "<td>$row[age]</td>";
$display_string .= "<td>$row[sex]</td>";
$display_string .= "<td>$row[wpm]</td>";
$display_string .= "</tr>";
}
echo "Query: " . $query . "<br />";

$display_string .= "</table>";
echo $display_string;
?>

Ahora intente ingresando un valor válido en "Max Age" o cualquier otro cuadro
y luego haga clic en el botón Consultar MySQL.

Edad máxima:

WPM máx .:
Sexo:
Tu resultado se mostrará aquí
Si ha completado con éxito esta lección, entonces sabe cómo usar MySQL,
PHP, HTML y Javascript en conjunto para escribir aplicaciones Ajax.
PHP y XML
XML es un lenguaje de marcado que se parece mucho a HTML. Un
documento XML es texto sin formato y contiene etiquetas delimitadas por <y>.
Hay dos grandes diferencias entre XML y HTML:

 XML no define un conjunto específico de etiquetas que debe usar.


 XML es extremadamente exigente con la estructura del documento.
XML te da mucha más libertad que HTML. HTML tiene un cierto conjunto de
etiquetas: las etiquetas <a> </a> rodean un enlace, el párrafo <p> comienza y
así sucesivamente. Sin embargo, un documento XML puede usar las etiquetas
que desee. Coloque etiquetas <rating> </rating> alrededor de una calificación
de película, etiquetas <height> </height> alrededor de la altura de alguien. Por
lo tanto, XML le da la opción de crear sus propias etiquetas.
XML es muy estricto cuando se trata de la estructura del documento. HTML te
permite jugar rápido y suelto con algunas etiquetas de apertura y cierre. Pero
este no es el caso con XML.

Lista HTML que no es válida XML


<ul>
<li>Braised Sea Cucumber
<li>Baked Giblets with Salt
<li>Abalone with Marrow and Duck Feet
</ul>
Este no es un documento XML válido porque no hay etiquetas de cierre </li>
que coincidan con las tres etiquetas de apertura <li>. Cada etiqueta abierta en
un documento XML debe estar cerrada.

Lista HTML que es XML válido


<ul>
<li>Braised Sea Cucumber</li>
<li>Baked Giblets with Salt</li>
<li>Abalone with Marrow and Duck Feet</li>
</ul>

Analizar un documento XML


El nuevo módulo SimpleXML de PHP 5 simplifica el análisis de un documento
XML. Convierte un documento XML en un objeto que proporciona acceso
estructurado al XML.
Para crear un objeto SimpleXML a partir de un documento XML almacenado
en una cadena, pase la cadena a simplexml_load_string () . Devuelve un
objeto SimpleXML.

Ejemplo

Pruebe el siguiente ejemplo:


<html>
<body>

<?php
$note=<<<XML

<note>
<to>Gopal K Verma</to>
<from>Sairamkrishna</from>
<heading>Project submission</heading>
<body>Please see clearly </body>
</note>
XML;
$xml=simplexml_load_string($note);
print_r($xml);
?>

</body>
</html>
Producirá el siguiente resultado:

NOTA - Puede usar la función simplexml_load_file (nombre de archivo) si


tiene contenido XML en un archivo.
Para obtener un detalle completo de la función de análisis XML, consulte
la Referencia de funciones de PHP .

Generando un documento XML


SimpleXML es bueno para analizar documentos XML existentes, pero no
puede usarlo para crear uno nuevo desde cero.
La forma más fácil de generar un documento XML es construir una matriz PHP
cuya estructura refleje la del documento XML y luego iterar a través de la
matriz, imprimiendo cada elemento con el formato apropiado.

Ejemplo

Pruebe el siguiente ejemplo:


Demo en vivo
<?php
$channel = array('title' => "What's For Dinner",
'link' => 'http://menu.example.com/',
'description' => 'Choose what to eat tonight.');

print "<channel>\n";

foreach ($channel as $element => $content) {


print " <$element>";
print htmlentities($content);
print "</$element>\n";
}

print "</channel>";
?>

Producirá el siguiente resultado:


http://menu.example.com/ Choose what to eat tonight.
Programación Orientada a Objetos en PHP
Podemos imaginar nuestro universo hecho de diferentes objetos como el sol,
la tierra, la luna, etc. De manera similar, podemos imaginar nuestro automóvil
hecho de diferentes objetos como la rueda, la dirección, el equipo, etc. De la
misma manera, hay conceptos de programación orientados a objetos que
asumen todo como un objeto y implementar un software usando diferentes
objetos.

Conceptos orientados a objetos


Antes de entrar en detalle, definamos términos importantes relacionados con
la Programación Orientada a Objetos.
 Clase : este es un tipo de datos definido por el programador, que incluye
funciones locales y datos locales. Puede pensar en una clase como una plantilla
para hacer muchas instancias del mismo tipo (o clase) de objeto.
 Objeto : una instancia individual de la estructura de datos definida por una
clase. Define una clase una vez y luego crea muchos objetos que le
pertenecen. Los objetos también se conocen como instancia.
 Variable miembro : estas son las variables definidas dentro de una clase. Estos
datos serán invisibles para el exterior de la clase y se puede acceder a ellos a
través de funciones miembro. Estas variables se llaman atributo del objeto una
vez que se crea un objeto.
 Función miembro : esta es la función definida dentro de una clase y se utiliza
para acceder a datos de objetos.
 Herencia : cuando una clase se define heredando la función existente de una
clase primaria, se llama herencia. Aquí la clase secundaria heredará todas o
algunas funciones miembro y variables de una clase primaria.
 Clase principal : una clase heredada de otra clase. Esto también se llama una
clase base o superclase.
 Clase secundaria : una clase que hereda de otra clase. Esto también se llama
una subclase o clase derivada.
 Polimorfismo : este es un concepto orientado a objetos donde la misma función
se puede usar para diferentes propósitos. Por ejemplo, el nombre de la función
seguirá siendo el mismo, pero tomará un número diferente de argumentos y
puede realizar tareas diferentes.
 Sobrecarga : un tipo de polimorfismo en el que algunos o todos los operadores
tienen implementaciones diferentes según los tipos de sus argumentos. Del
mismo modo, las funciones también se pueden sobrecargar con diferentes
implementaciones.
 Abstracción de datos : cualquier representación de datos en la que los detalles
de implementación están ocultos (abstraídos).
 Encapsulación : se refiere a un concepto en el que encapsulamos todos los datos
y las funciones de los miembros para formar un objeto.
 Constructor : se refiere a un tipo especial de función que se llamará
automáticamente siempre que haya una formación de objeto de una clase.
 Destructor : se refiere a un tipo especial de función que se llamará
automáticamente cada vez que un objeto se elimine o quede fuera de alcance.

Definiendo Clases PHP


La forma general para definir una nueva clase en PHP es la siguiente:
<?php
class phpClass {
var $var1;
var $var2 = "constant string";

function myfunc ($arg1, $arg2) {


[..]
}
[..]
}
?>
Aquí está la descripción de cada línea:
 La clase de formulario especial , seguida del nombre de la clase que desea
definir.
 Un conjunto de llaves que encierra cualquier número de declaraciones de
variables y definiciones de funciones.
 Las declaraciones de variables comienzan con la forma especial var , seguida de
un nombre de variable $ convencional; También pueden tener una asignación
inicial a un valor constante.
 Las definiciones de funciones se parecen mucho a las funciones PHP
independientes, pero son locales para la clase y se utilizarán para establecer y
acceder a datos de objetos.

Ejemplo

Aquí hay un ejemplo que define una clase de tipo de Libros:


<?php
class Books {
/* Member variables */
var $price;
var $title;

/* Member functions */
function setPrice($par){
$this->price = $par;
}

function getPrice(){
echo $this->price ."<br/>";
}

function setTitle($par){
$this->title = $par;
}

function getTitle(){
echo $this->title ." <br/>";
}
}
?>
La variable $ this es una variable especial y se refiere al mismo objeto, es
decir. sí mismo.

Crear objetos en PHP


Una vez que haya definido su clase, puede crear tantos objetos como desee
de ese tipo de clase. El siguiente es un ejemplo de cómo crear un objeto
usando un nuevo operador.
$physics = new Books;
$maths = new Books;
$chemistry = new Books;
Aquí hemos creado tres objetos y estos objetos son independientes entre sí y
tendrán su existencia por separado. A continuación veremos cómo acceder a
la función miembro y procesar las variables miembro.

Llamar a funciones de miembro


Después de crear sus objetos, podrá llamar a funciones miembro relacionadas
con ese objeto. Una función miembro solo podrá procesar la variable miembro
del objeto relacionado.
El siguiente ejemplo muestra cómo establecer el título y los precios de los tres
libros llamando a las funciones de miembro.
$physics->setTitle( "Physics for High School" );
$chemistry->setTitle( "Advanced Chemistry" );
$maths->setTitle( "Algebra" );

$physics->setPrice( 10 );
$chemistry->setPrice( 15 );
$maths->setPrice( 7 );

Ahora llama a otras funciones miembro para obtener los valores establecidos
en el ejemplo anterior:
$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();
$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();
Esto producirá el siguiente resultado:
Physics for High School
Advanced Chemistry
Algebra
10
15
7

Funciones de constructor
Las funciones de constructor son tipos especiales de funciones que se llaman
automáticamente cada vez que se crea un objeto. Entonces aprovechamos al
máximo este comportamiento, inicializando muchas cosas a través de las
funciones de constructor.
PHP proporciona una función especial llamada __construct () para definir un
constructor. Puede pasar tantos argumentos como desee a la función
constructora.
El siguiente ejemplo creará un constructor para la clase Libros e inicializará el
precio y el título del libro en el momento de la creación del objeto.
function __construct( $par1, $par2 ) {
$this->title = $par1;
$this->price = $par2;
}
Ahora no necesitamos llamar a la función set por separado para establecer el
precio y el título. Podemos inicializar estas dos variables miembro solo en el
momento de la creación del objeto. Verifique el siguiente ejemplo a
continuación:
$physics = new Books( "Physics for High School", 10 );
$maths = new Books ( "Advanced Chemistry", 15 );
$chemistry = new Books ("Algebra", 7 );

/* Get those set values */


$physics->getTitle();
$chemistry->getTitle();
$maths->getTitle();

$physics->getPrice();
$chemistry->getPrice();
$maths->getPrice();

Esto producirá el siguiente resultado:


Physics for High School
Advanced Chemistry
Algebra
10
15
7

Incinerador de basuras
Al igual que una función constructora, puede definir una función destructora
utilizando la función __destruct () . Puede liberar todos los recursos dentro de
un destructor.

Herencia
Las definiciones de clase PHP pueden heredar opcionalmente de una
definición de clase padre mediante el uso de la cláusula extend. La sintaxis es
la siguiente:
class Child extends Parent {
<definition body>
}
El efecto de la herencia es que la clase secundaria (o subclase o clase
derivada) tiene las siguientes características:
 Tiene automáticamente todas las declaraciones de variables miembro de la clase
padre.
 Tiene automáticamente las mismas funciones miembro que el padre, que (por
defecto) funcionará de la misma manera que esas funciones en el padre.
El siguiente ejemplo hereda la clase Libros y agrega más funcionalidad según
el requisito.
class Novel extends Books {
var $publisher;

function setPublisher($par){
$this->publisher = $par;
}

function getPublisher(){
echo $this->publisher. "<br />";
}
}

Ahora, aparte de las funciones heredadas, la clase Novela mantiene dos


funciones miembro adicionales.

Anulación de funciones
Las definiciones de función en las clases secundarias anulan las definiciones
con el mismo nombre en las clases primarias. En una clase secundaria,
podemos modificar la definición de una función heredada de la clase primaria.
En el siguiente ejemplo, las funciones getPrice y getTitle se anulan para
devolver algunos valores.
function getPrice() {
echo $this->price . "<br/>";
return $this->price;
}

function getTitle(){
echo $this->title . "<br/>";
return $this->title;
}

Miembros públicos
A menos que especifique lo contrario, las propiedades y los métodos de una
clase son públicos. Es decir, se puede acceder a ellos en tres situaciones
posibles:
 Desde fuera de la clase en la que se declara
 Desde dentro de la clase en la que se declara
 Desde dentro de otra clase que implementa la clase en la que se declara
Hasta ahora hemos visto a todos los miembros como miembros públicos. Si
desea limitar la accesibilidad de los miembros de una clase, defina los
miembros de la clase como privados o protegidos .

Miembros privados
Al designar un miembro privado, limita su accesibilidad a la clase en la que se
declara. No se puede hacer referencia al miembro privado desde las clases
que heredan la clase en la que se declara y no se puede acceder desde fuera
de la clase.
Un miembro de la clase puede hacerse privado mediante el uso de palabras
clave privadas delante del miembro.
class MyClass {
private $car = "skoda";
$driver = "SRK";

function __construct($par) {
// Statements here run every time
// an instance of the class
// is created.
}

function myPublicFunction() {
return("I'm visible!");
}

private function myPrivateFunction() {


return("I'm not visible outside!");
}
}
Cuando otra clase hereda la clase MyClass mediante extend,
myPublicFunction () estará visible, al igual que $ driver. La clase que se
extiende no tendrá conocimiento ni acceso a myPrivateFunction y $ car,
porque se declaran privados.

Miembros protegidos
Se puede acceder a una propiedad o método protegido en la clase en la que
se declara, así como en las clases que extienden esa clase. Los miembros
protegidos no están disponibles fuera de esos dos tipos de clases. Un
miembro de la clase se puede proteger mediante el uso de palabras
clave protegidas delante del miembro.
Aquí hay una versión diferente de MyClass:
class MyClass {
protected $car = "skoda";
$driver = "SRK";
function __construct($par) {
// Statements here run every time
// an instance of the class
// is created.
}

function myPublicFunction() {
return("I'm visible!");
}

protected function myPrivateFunction() {


return("I'm visible in child class!");
}
}

Interfaces
Las interfaces se definen para proporcionar nombres de funciones comunes a
los implementadores. Los diferentes implementadores pueden implementar
esas interfaces de acuerdo con sus requisitos. Se puede decir que las
interfaces son esqueletos que implementan los desarrolladores.
A partir de PHP5, es posible definir una interfaz, como esta:
interface Mail {
public function sendMail();
}

Luego, si otra clase implementó esa interfaz, como esta:


class Report implements Mail {
// sendMail() Definition goes here
}

Constantes
Una constante es algo así como una variable, ya que contiene un valor, pero
en realidad es más como una función porque una constante es inmutable. Una
vez que declaras una constante, no cambia.
Declarar una constante es fácil, como se hace en esta versión de MyClass:
class MyClass {
const requiredMargin = 1.7;

function __construct($incomingValue) {
// Statements here run every time
// an instance of the class
// is created.
}
}
En esta clase, requiredMargin es una constante. Se declara con la palabra
clave const, y bajo ninguna circunstancia se puede cambiar a otra cosa que no
sea 1.7. Tenga en cuenta que el nombre de la constante no tiene un $ inicial,
como lo hacen los nombres de variables.

Clases abstractas
Una clase abstracta es aquella que no puede ser instanciada, solo
heredada. Declaras una clase abstracta con la palabra clave abstract , así:
Al heredar de una clase abstracta, el niño debe definir todos los métodos
marcados como abstractos en la declaración de clase del padre; Además,
estos métodos deben definirse con la misma visibilidad.
abstract class MyAbstractClass {
abstract function myAbstractFunction() {
}
}

Tenga en cuenta que las definiciones de funciones dentro de una clase


abstracta también deben estar precedidas por la palabra clave abstract. No es
legal tener definiciones de funciones abstractas dentro de una clase no
abstracta.

Palabra clave estática


Declarar miembros de la clase o métodos como estáticos los hace accesibles
sin necesidad de una instanciación de la clase. No se puede acceder a un
miembro declarado como estático con un objeto de clase instanciado (aunque
sí puede hacerlo un método estático).
Pruebe el siguiente ejemplo:
<?php
class Foo {
public static $my_static = 'foo';

public function staticValue() {


return self::$my_static;
}
}

print Foo::$my_static . "\n";


$foo = new Foo();

print $foo->staticValue() . "\n";


?>

Palabra clave final


PHP 5 introduce la palabra clave final, que evita que las clases secundarias
anulen un método al prefijar la definición con final. Si la clase misma se está
definiendo como definitiva, entonces no se puede extender.
El siguiente ejemplo da como resultado un error fatal: no se puede anular el
método final BaseClass :: moreTesting ()
<?php

class BaseClass {
public function test() {
echo "BaseClass::test() called<br>";
}

final public function moreTesting() {


echo "BaseClass::moreTesting() called<br>";
}
}

class ChildClass extends BaseClass {


public function moreTesting() {
echo "ChildClass::moreTesting() called<br>";
}
}
?>

Llamar a constructores principales


En lugar de escribir un constructor completamente nuevo para la subclase,
escribámoslo llamando explícitamente al constructor del padre y luego
haciendo lo que sea necesario además de la instanciación de la
subclase. Aquí hay un ejemplo simple:
class Name {
var $_firstName;
var $_lastName;

function Name($first_name, $last_name) {


$this->_firstName = $first_name;
$this->_lastName = $last_name;
}

function toString() {
return($this->_lastName .", " .$this->_firstName);
}
}
class NameSub1 extends Name {
var $_middleInitial;

function NameSub1($first_name, $middle_initial,


$last_name) {
Name::Name($first_name, $last_name);
$this->_middleInitial = $middle_initial;
}

function toString() {
return(Name::toString() . " " . $this->_middleInitial);
}
}
En este ejemplo, tenemos una clase padre (Nombre), que tiene un constructor
de dos argumentos, y una subclase (NameSub1), que tiene un constructor de
tres argumentos. El constructor de NameSub1 funciona llamando a su
constructor padre explícitamente usando la sintaxis :: (pasando dos de sus
argumentos) y luego configurando un campo adicional. Del mismo modo,
NameSub1 define su función no constructora toString () en términos de la
función principal que anula.
NOTA - Un constructor se puede definir con el mismo nombre que el nombre
de una clase. Se define en el ejemplo anterior.

PHP - Introducción al formulario


Sitios web dinámicos
Los sitios web proporcionan las funcionalidades que se pueden usar para almacenar,
actualizar, recuperar y eliminar los datos en una base de datos.

¿Qué es el formulario?
Un documento que contiene campos negros, que el usuario puede completar los datos o
el usuario puede seleccionar los datos. Por lo general, los datos se almacenarán en la
base de datos
Ejemplo

El siguiente ejemplo muestra el formulario con algunas acciones específicas mediante


el método de publicación.
<html>

<head>
<title>PHP Form Validation</title>
</head>

<body>
<?php

// define variables and set to empty values


$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
$name = test_input($_POST["name"]);
$email = test_input($_POST["email"]);
$website = test_input($_POST["website"]);
$comment = test_input($_POST["comment"]);
$gender = test_input($_POST["gender"]);
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

<h2>Postparaprogramadores Absolute classes


registration</h2>

<form method = "post" action =


"/php/php_form_introduction.htm">
<table>
<tr>
<td>Name:</td>
<td><input type = "text" name = "name"></td>
</tr>

<tr>
<td>E-mail:</td>
<td><input type = "text" name = "email"></td>
</tr>

<tr>
<td>Specific Time:</td>
<td><input type = "text" name =
"website"></td>
</tr>

<tr>
<td>Class details:</td>
<td><textarea name = "comment" rows = "5" cols
= "40"></textarea></td>
</tr>

<tr>
<td>Gender:</td>
<td>
<input type = "radio" name = "gender" value
= "female">Female
<input type = "radio" name = "gender" value
= "male">Male
</td>
</tr>

<tr>
<td>
<input type = "submit" name = "submit"
value = "Submit">
</td>
</tr>
</table>
</form>

<?php
echo "<h2>Your Given details are as :</h2>";
echo $name;
echo "<br>";

echo $email;
echo "<br>";

echo $website;
echo "<br>";

echo $comment;
echo "<br>";

echo $gender;
?>

</body>
</html>
Producirá el siguiente resultado:
PHP - Ejemplo de validación
El campo requerido verificará si el campo está lleno o no de la manera
adecuada. La mayoría de los casos usaremos el símbolo * para el campo
requerido.

¿Qué es la validación?
Validación significa verificar la entrada enviada por el usuario. Hay dos tipos
de validación disponibles en PHP. Son los siguientes:
 Validación del lado del cliente : la validación se realiza en los navegadores web
de la máquina cliente.
 Validación del lado del servidor : después de enviar los datos, los datos se han
enviado a un servidor y realizan comprobaciones de validación en la máquina del
servidor.

Algunas de las reglas de validación para el campo


Campo Reglas de validación

Nombre Deben requerirse letras y espacios en blanco

Email En caso de requerir @ y .

Sitio web Debería requerir una URL válida

Radio Debe ser seleccionable al menos una vez

Casilla de verificación Debe ser verificable al menos una vez

Menú desplegable Debe ser seleccionable al menos una vez

URL válida
El siguiente código muestra la validación de la URL
$website = input($_POST["site"]);

if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-
9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$website)) {
$websiteErr = "Invalid URL";
}

La sintaxis anterior verificará si una URL dada es válida o no. Debe permitir
algunas palabras clave como https, ftp, www, az, 0-9, .. etc.

Email valido
El siguiente código muestra la validación de la dirección de correo electrónico
$email = input($_POST["email"]);

if (!filter_var($email, FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid format and please re-enter valid
email";
}
La sintaxis anterior verificará si la dirección de correo electrónico dada está
bien formada o no. Si no lo está, mostrará un mensaje de error.

Ejemplo

El siguiente ejemplo muestra el formulario con la validación de campo


requerida
<html>

<head>
<style>
.error {color: #FF0000;}
</style>
</head>

<body>
<?php
// define variables and set to empty values
$nameErr = $emailErr = $genderErr = $websiteErr =
"";
$name = $email = $gender = $comment = $website = "";

if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
}else {
$name = test_input($_POST["name"]);
}

if (empty($_POST["email"])) {
$emailErr = "Email is required";
}else {
$email = test_input($_POST["email"]);

// check if e-mail address is well-formed


if (!filter_var($email,
FILTER_VALIDATE_EMAIL)) {
$emailErr = "Invalid email format";
}
}

if (empty($_POST["website"])) {
$website = "";
}else {
$website = test_input($_POST["website"]);
}

if (empty($_POST["comment"])) {
$comment = "";
}else {
$comment = test_input($_POST["comment"]);
}

if (empty($_POST["gender"])) {
$genderErr = "Gender is required";
}else {
$gender = test_input($_POST["gender"]);
}
}

function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>

<h2>Absolute classes registration</h2>

<p><span class = "error">* required field.</span></p>

<form method = "post" action = "<?php


echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
<table>
<tr>
<td>Name:</td>
<td><input type = "text" name = "name">
<span class = "error">* <?php echo
$nameErr;?></span>
</td>
</tr>

<tr>
<td>E-mail: </td>
<td><input type = "text" name = "email">
<span class = "error">* <?php echo
$emailErr;?></span>
</td>
</tr>

<tr>
<td>Time:</td>
<td> <input type = "text" name = "website">
<span class = "error"><?php echo
$websiteErr;?></span>
</td>
</tr>
<tr>
<td>Classes:</td>
<td> <textarea name = "comment" rows = "5"
cols = "40"></textarea></td>
</tr>

<tr>
<td>Gender:</td>
<td>
<input type = "radio" name = "gender" value
= "female">Female
<input type = "radio" name = "gender" value
= "male">Male
<span class = "error">* <?php echo
$genderErr;?></span>
</td>
</tr>

<td>
<input type = "submit" name = "submit" value =
"Submit">
</td>

</table>

</form>

<?php
echo "<h2>Your given values are as:</h2>";
echo $name;
echo "<br>";

echo $email;
echo "<br>";

echo $website;
echo "<br>";

echo $comment;
echo "<br>";

echo $gender;
?>

</body>
</html>
Producirá el siguiente resultado:
PHP - Formulario completo
Esta página explica en tiempo real el formulario en tiempo real con
acciones. El siguiente ejemplo tomará los campos de entrada como texto,
botón de opción, menú desplegable y casilla marcada.
Ejemplo
Demo en vivo
<html>

<head> <style> . error { color : # FF0000;} </style>


</head>

<cuerpo> <? php


// define variables y establece valores vacíos
$ nameErr = $ emailErr = $ genderErr = $ websiteErr
= "" ;
$ nombre = $ correo electrónico = $ género = $ clase
= $ curso = $ asunto = "" ;

if ( $ _SERVER [ "REQUEST_METHOD" ] == "POST" ) { if


( vacío ( $ _POST [ "name" ])) {
$ nameErr = "Se requiere nombre" ; } else {
$ name = test_input ( $ _POST [ "name" ]); }

if ( empty ( $ _POST [ "email" ])) {


$ emailErr = "Se requiere correo electrónico"
; } else {
$ email = test_input ( $ _POST [ "email" ]);

// verifica si la dirección de correo


electrónico está bien formada si (! filter_var ( $ email ,
FILTER_VALIDATE_EMAIL )) {
$ emailErr = "Formato de correo electrónico
no válido" ; } }

if ( empty ( $ _POST [ "course" ])) {


$ course = "" ; } else {
$ course = test_input ( $ _POST [ "course" ]);
}

if ( empty ( $ _POST [ "class" ])) {


$ class = "" ; } else {
$ class = test_input ( $ _POST [ "class" ]); }

if ( empty ( $ _POST [ "gender" ])) {


$ genderErr = "Se requiere género" ; } else {
$ gender = test_input ( $ _POST [ "gender" ]);
}

if ( empty ( $ _POST [ "subject" ])) {


$ subjectErr = "Debe seleccionar 1 o más" ; }
else {
$ subject = $ _POST [ "subject" ]; } }

función test_input ( $ data ) {


$ data = trim ( $ data );
$ datos = tiras de barra ( $ datos );
$ datos = htmlspecialchars ( $ datos ); devolver
$ datos ; } ?>

<h2> Registro de clases absolutas </h2>

<p> <span class = "error" > * campo obligatorio.


</span> </p>

<form method = "POST" action = " <? php echo


htmlspecialchars ( $ _SERVER [ " PHP_SELF " ]);?> ">
<table> <tr> <td> Nombre: </td> <td> < tipo de
entrada = "texto" nombre = "nombre" > <abarcan clase =
"error" > * <? php echo $ nameErr ;?> </span> </td> </tr>

<tr> <td> Correo electrónico: </td> <td> <input


type = "text" name = "email" > <span class = "error" > * <?
php echo $ emailErr ;?> </span> </td> </tr>
<tr> <td> Hora: </td> <td> <input type = "text"
name = "course" > <span class = "error" > <? php echo $
websiteErr ;?> </span> </td> </tr>

<tr> <td> Clases: </td> <td> <textarea name =


"class" rows = "5" cols = "40" > </textarea> </td> </tr>

<tr> <td> Sexo: </td> <td> <input type = "radio"


name = "gender" value = "female" > Female
<input type = "radio" name = "gender"
value = "male " > Hombre
<abarcan clase = " error " > * <? php echo
$ genderErr ;?> </span> </td> </tr>

<tr> <td> Seleccionar: </td> <td> <select name =


"subject []" size = "4" multiple > <option value = "Android"
> Android </option> <option value = "Java " > Java </option>
<option value = " C # " > C # </option> <option value = "
Base de datos " > Base de datos </option> <valor de la opción
= "Hadoop" > Hadoop

</option> <option value = "VB script"


> VB script </option> </select> </td> </tr>

<tr> <td> De acuerdo </td> <td> <input type =


"checkbox" name = "verified" value = "1" > </td> <? php if (!
isset ( $ _POST [ 'marcado' ])) { ?> <abarcan clase = "error"
> * <? php echo "Debe aceptar los términos" ;?> </span> <?
php } ?> </tr>
<tr> <td> <input type = "submit" name = "submit"
value = "Submit" > </td> </tr>

</table> </form>

<? php
echo "<h2> Sus valores dados son: </h2>" ;
echo ( "<p> Tu nombre es $ name </p>" );
echo ( "<p> su dirección de correo electrónico es $
email </p>" );
echo ( "<p> Su tiempo de clase en $ curso </p>" );
echo ( "<p> su información de clase $ class </p>" );
echo ( "<p> tu género es $ gender </p>" );

for ( $ i = 0 ; $ i < count ( $ subject ); $ i ++) {


echo ( $ subject [ $ i ] . "" ); } ?>

</body> </html>

Producirá el siguiente resultado:


PHP - Ejemplo de inicio de sesión

Inicio de sesión PHP con sesión


El script de inicio de sesión de PHP se utiliza para proporcionar la
autenticación de nuestras páginas web. el script se ejecuta después de enviar
el botón de inicio de sesión del usuario.

Página de inicio de sesión


La página de inicio de sesión debe ser la siguiente y funciona según la
sesión. Si el usuario cierra la sesión, borrará los datos de la sesión.
Demo en vivo
<?php
ob_start();
session_start();
?>

<?
// error_reporting(E_ALL);
// ini_set("display_errors", 1);
?>

<html lang = "en">

<head>
<title>Postparaprogramadores.com</title>
<link href = "css/bootstrap.min.css" rel =
"stylesheet">

<style>
body {
padding-top: 40px;
padding-bottom: 40px;
background-color: #ADABAB;
}

.form-signin {
max-width: 330px;
padding: 15px;
margin: 0 auto;
color: #017572;
}

.form-signin .form-signin-heading,
.form-signin .checkbox {
margin-bottom: 10px;
}
.form-signin .checkbox {
font-weight: normal;
}

.form-signin .form-control {
position: relative;
height: auto;
-webkit-box-sizing: border-box;
-moz-box-sizing: border-box;
box-sizing: border-box;
padding: 10px;
font-size: 16px;
}

.form-signin .form-control:focus {
z-index: 2;
}

.form-signin input[type="email"] {
margin-bottom: -1px;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
border-color:#017572;
}

.form-signin input[type="password"] {
margin-bottom: 10px;
border-top-left-radius: 0;
border-top-right-radius: 0;
border-color:#017572;
}

h2{
text-align: center;
color: #017572;
}
</style>

</head>

<body>

<h2>Enter Username and Password</h2>


<div class = "container form-signin">

<?php
$msg = '';

if (isset($_POST['login']) &&
!empty($_POST['username'])
&& !empty($_POST['password'])) {
if ($_POST['username'] ==
'postparaprogramadores' &&
$_POST['password'] == '1234') {
$_SESSION['valid'] = true;
$_SESSION['timeout'] = time();
$_SESSION['username'] =
'postparaprogramadores';

echo 'You have entered valid use name and


password';
}else {
$msg = 'Wrong username or password';
}
}
?>
</div> <!-- /container -->

<div class = "container">

<form class = "form-signin" role = "form"


action = "<?php echo
htmlspecialchars($_SERVER['PHP_SELF']);
?>" method = "post">
<h4 class = "form-signin-heading"><?php echo
$msg; ?></h4>
<input type = "text" class = "form-control"
name = "username" placeholder = "username =
postparaprogramadores"
required autofocus></br>
<input type = "password" class = "form-control"
name = "password" placeholder = "password =
1234" required>
<button class = "btn btn-lg btn-primary btn-
block" type = "submit"
name = "login">Login</button>
</form>

Click here to clean <a href = "logout.php" tite =


"Logout">Session.

</div>

</body>
</html>

Logout.php
Borrará los datos de la sesión.
<?php
session_start();
unset($_SESSION["username"]);
unset($_SESSION["password"]);

echo 'You have cleaned session';


header('Refresh: 2; URL = login.php');
?>

Producirá el siguiente resultado:


PHP - Inicio de sesión en Facebook
Podemos usar el inicio de sesión de Facebook para permitir que los usuarios
tengan acceso a los sitios web. Esta página le explicará sobre el inicio de
sesión con Facebook PHP SDK.

Iniciar sesión con Facebook


 Debe ir a https://developers.facebook.com/apps/ y hacer clic en agregar un nuevo
botón de grupo para crear la ID de la aplicación.
 Elegir sitio web
 Dé un nombre a la aplicación y haga clic en Crear nueva ID de aplicación de
Facebook
 Haga clic en Crear ID de aplicación
 Haga clic en Omitir prueba rápida
En la etapa final, se mostrará como se muestra a continuación.

Descripción general del archivo fbconfig.php


 Ahora descargue zip desde aquí
 Ahora abra el archivo fbconfig.php y agregue su ID de aplicación y Secreto de
aplicación

FacebookSession::setDefaultApplication( 'your app ID','App


Secrete ' );
// login helper with redirect_uri
$helper = new FacebookRedirectLoginHelper('You web
address' );
Finalmente el archivo fbconfig.php como se muestra a continuación:
<?php

session_start();

// added in v4.0.0
require_once 'autoload.php';
use Facebook\FacebookSession;
use Facebook\FacebookRedirectLoginHelper;
use Facebook\FacebookRequest;
use Facebook\FacebookResponse;
use Facebook\FacebookSDKException;
use Facebook\FacebookRequestException;
use Facebook\FacebookAuthorizationException;
use Facebook\GraphObject;
use Facebook\Entities\AccessToken;
use Facebook\HttpClients\FacebookCurlHttpClient;
use Facebook\HttpClients\FacebookHttpable;

// init app with app id and secret


FacebookSession::setDefaultApplication(
'496544657159182','e6d239655aeb3e496e52fabeaf1b1f93' );

// login helper with redirect_uri


$helper = new
FacebookRedirectLoginHelper('http://www.postparaprogramadores
.com/' );

try {
$session = $helper->getSessionFromRedirect();
}catch( FacebookRequestException $ex ) {
// When Facebook returns an error
}catch( Exception $ex ) {
// When validation fails or other local issues
}

// see if we have a session


if ( isset( $session ) ) {
// graph api request for user data
$request = new FacebookRequest( $session, 'GET', '/me'
);
$response = $request->execute();

// get response
$graphObject = $response->getGraphObject();
$fbid = $graphObject->getProperty('id'); //
To Get Facebook ID
$fbfullname = $graphObject->getProperty('name'); //
To Get Facebook full name
$femail = $graphObject->getProperty('email'); //
To Get Facebook email ID

/* ---- Session Variables -----*/


$_SESSION['FBID'] = $fbid;
$_SESSION['FULLNAME'] = $fbfullname;
$_SESSION['EMAIL'] = $femail;

/* ---- header location after session ----*/


header("Location: index.php");
}else {
$loginUrl = $helper->getLoginUrl();
header("Location: ".$loginUrl);
}
?>

Página de inicio de sesión


La página de inicio de sesión se utiliza para iniciar sesión en FB
<?php
session_start();
session_unset();

$_SESSION['FBID'] = NULL;
$_SESSION['FULLNAME'] = NULL;
$_SESSION['EMAIL'] = NULL;
header("Location: index.php");
?>

Index.php
La página de índice se muestra a continuación.
<?php
session_start();
?>
<html xmlns:fb = "http://www.facebook.com/2008/fbml">

<head>
<title>Login with Facebook</title>
<link
href = "http://www.bootstrapcdn.com/twitter-
bootstrap/2.2.2/css/bootstrap-combined.min.css"
rel = "stylesheet">
</head>

<body>
<?php if ($_SESSION['FBID']): ?> <!-- After user
login -->

<div class = "container">


<div class = "hero-unit">
<h1>Hello <?php echo $_SESSION['USERNAME'];
?></h1>
<p>Welcome to "facebook login" tutorial</p>
</div>

<div class = "span4">

<ul class = "nav nav-list">


<li class = "nav-header">Image</li>

<li><img src =
"https://graph.facebook.com/<?php
echo $_SESSION['FBID'];
?>/picture"></li>

<li class = "nav-header">Facebook ID</li>


<li><?php echo $_SESSION['FBID']; ?></li>

<li class = "nav-header">Facebook


fullname</li>

<li><?php echo $_SESSION['FULLNAME'];


?></li>

<li class = "nav-header">Facebook


Email</li>

<li><?php echo $_SESSION['EMAIL']; ?></li>

<div><a href="logout.php">Logout</a></div>

</ul>

</div>
</div>

<?php else: ?> <!-- Before login -->

<div class = "container">


<h1>Login with Facebook</h1>
Not Connected

<div>
<a href = "fbconfig.php">Login with
Facebook</a>
</div>

<div>
<a href =
"http://www.postparaprogramadores.com"
title = "Login with facebook">More
information about Postparaprogramadores</a>
</div>
</div>

<?php endif ?>

</body>
</html>

Producirá el resultado. Antes de probar este ejemplo, cierre la sesión de su


cuenta de libreta en su navegador.

Cerrar sesión en Facebook


El siguiente código se utiliza para cerrar sesión en Facebook.
<?php
session_start();.
session_unset();

$_SESSION['FBID'] = NULL;
$_SESSION['FULLNAME'] = NULL;
$_SESSION['EMAIL'] = NULL;
header("Location: index.php");
?>
PHP - Integración de PayPal
PayPal es un sistema de procesamiento de pagos. Podemos integrar PayPal
con sitios web mediante php.

Sistema de archivos de integración de PayPal


El sistema de archivos de integración de PayPal incluye 4 archivos como se
muestra a continuación.
 constants.php : este archivo ha incluido el nombre de usuario, la contraseña y la
firma de la API.
 CallerService.php : este archivo ha incluido los servicios de PayPal, que se
utilizan para llamar a los servicios de PayPal.
 confirmacion.php - Este archivo ha incluido un formulario con los campos
mínimos requeridos para realizar el proceso de pago y devolverá el pago exitoso
o fallido.
 PayPal_entry.php : esta página se ha utilizado para enviar al usuario los datos a
PayPal. Actúa como un adaptador entre PayPal y el formulario de usuario.
El usuario tiene que descargar un archivo SDK de PayPal desde aquí y exigir
un archivo zip. El archivo zip contiene cuatro archivos php. No necesitamos
cambiar ningún archivo excepto constants.php
El archivo constants.php contiene el código que se muestra a continuación:
<?php
define('API_USERNAME', 'YOUR USER NAME HERE');
define('API_PASSWORD', 'YOUR PASSWORD HERE');
define('API_SIGNATURE', 'YOUR API SIGNATURE HERE');
define('API_ENDPOINT', 'https://api-3t.paypal.com/nvp');
define('USE_PROXY',FALSE);
define('PROXY_HOST', '127.0.0.1');
define('PROXY_PORT', '808');
define('PAYPAL_URL',
'https://www.PayPal.com/webscr&cmd=_express-
checkout&token=');
define('VERSION', '53.0');
?>

El usuario declarará el nombre de usuario, la contraseña y la firma en la


sintaxis anterior que se colocan en constants.php. Este es un ejemplo
experimental, por lo que la última cantidad se agregará a la cuenta de
sandbox.
PHP - Inicio de sesión MySQL
Este tutorial muestra cómo crear una página de inicio de sesión con la base de
datos MySQL. Antes de ingresar a la parte del código, necesitaría privilegios
especiales para crear o eliminar una base de datos MySQL. Entonces,
suponiendo que tenga acceso al usuario root, puede crear cualquier base de
datos usando mysql mysqladmin binary.

Config.php
El archivo Config.php tiene información sobre la configuración de la base de
datos MySQL.
<?php
define('DB_SERVER', 'localhost:3036');
define('DB_USERNAME', 'root');
define('DB_PASSWORD', 'rootpassword');
define('DB_DATABASE', 'database');
$db =
mysqli_connect(DB_SERVER,DB_USERNAME,DB_PASSWORD,DB_DATABASE)
;
?>

Login.php
Inicio de sesión PHP tiene información sobre el script php y el script HTML
para iniciar sesión.
<?php
include("config.php");
session_start();

if($_SERVER["REQUEST_METHOD"] == "POST") {
// username and password sent from form

$myusername =
mysqli_real_escape_string($db,$_POST['username']);
$mypassword =
mysqli_real_escape_string($db,$_POST['password']);

$sql = "SELECT id FROM admin WHERE username =


'$myusername' and passcode = '$mypassword'";
$result = mysqli_query($db,$sql);
$row = mysqli_fetch_array($result,MYSQLI_ASSOC);
$active = $row['active'];
$count = mysqli_num_rows($result);

// If result matched $myusername and $mypassword, table


row must be 1 row

if($count == 1) {
session_register("myusername");
$_SESSION['login_user'] = $myusername;

header("location: welcome.php");
}else {
$error = "Your Login Name or Password is invalid";
}
}
?>
<html>

<head>
<title>Login Page</title>

<style type = "text/css">


body {
font-family:Arial, Helvetica, sans-serif;
font-size:14px;
}
label {
font-weight:bold;
width:100px;
font-size:14px;
}
.box {
border:#666666 solid 1px;
}
</style>

</head>

<body bgcolor = "#FFFFFF">

<div align = "center">


<div style = "width:300px; border: solid 1px
#333333; " align = "left">
<div style = "background-color:#333333;
color:#FFFFFF; padding:3px;"><b>Login</b></div>

<div style = "margin:30px">

<form action = "" method = "post">


<label>UserName :</label><input type =
"text" name = "username" class = "box"/><br /><br />
<label>Password :</label><input type =
"password" name = "password" class = "box" /><br/><br />
<input type = "submit" value = " Submit
"/><br />
</form>

<div style = "font-size:11px; color:#cc0000;


margin-top:10px"><?php echo $error; ?></div>

</div>

</div>

</div>

</body>
</html>

bienvenido.php
Después de iniciar sesión correctamente, se mostrará la página de bienvenida.
<?php
include('session.php');
?>
<html">

<head>
<title>Welcome </title>
</head>

<body>
<h1>Welcome <?php echo $login_session; ?></h1>
<h2><a href = "logout.php">Sign Out</a></h2>
</body>

</html>

Página de cierre de sesión


La página de cierre de sesión tiene información sobre cómo cerrar sesión en la
sesión de inicio de sesión.
<?php
session_start();

if(session_destroy()) {
header("Location: login.php");
}
?>

session.php
Session.php verificará la sesión, si no hay sesión redirigirá a la página de
inicio de sesión.
<?php
include('config.php');
session_start();

$user_check = $_SESSION['login_user'];

$ses_sql = mysqli_query($db,"select username from admin


where username = '$user_check' ");

$row = mysqli_fetch_array($ses_sql,MYSQLI_ASSOC);

$login_session = $row['username'];

if(!isset($_SESSION['login_user'])){
header("location:login.php");
die();
}
?>
PHP - Búsqueda Ajax
Ajax se utiliza para comunicarse con páginas web y servidores web. El
siguiente ejemplo muestra un campo de búsqueda con Ajax.
<html>
<head>

<style>
span {
color: green;
}
</style>

<script>
function showHint(str) {
if (str.length == 0) {
document.getElementById("txtHint").innerHTML =
"";
return;
}else {
var xmlhttp = new XMLHttpRequest();

xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 &&
xmlhttp.status == 200) {

document.getElementById("txtHint").innerHTML =
xmlhttp.responseText;
}
}
xmlhttp.open("GET", "php_ajax.php?q=" + str,
true);
xmlhttp.send();
}
}
</script>

</head>
<body>

<p><b>Search your favourite tutorials:</b></p>

<form>
<input type = "text" onkeyup =
"showHint(this.value)">
</form>

<p>Entered Course name: <span id="txtHint"></span></p>


</body>
</html>
El código anterior abre un archivo, cuyo nombre se llama php_ajax.php
mediante el método GET, por lo que debemos crear un archivo, cuyo nombre
se llama php_ajax.php en el mismo directorio y que se colocará junto con
txtHint.

php_ajax.php
Contenía una variedad de nombres de cursos y devuelve el valor al navegador
web.
<?php
// Array with names
$a[] = "Android";
$a[] = "B programming language";
$a[] = "C programming language";
$a[] = "D programming language";
$a[] = "euphoria";
$a[] = "F#";
$a[] = "GWT";
$a[] = "HTML5";
$a[] = "ibatis";
$a[] = "Java";
$a[] = "K programming language";
$a[] = "Lisp";
$a[] = "Microsoft technologies";
$a[] = "Networking";
$a[] = "Open Source";
$a[] = "Prototype";
$a[] = "QC";
$a[] = "Restful web services";
$a[] = "Scrum";
$a[] = "Testing";
$a[] = "UML";
$a[] = "VB Script";
$a[] = "Web Technologies";
$a[] = "Xerox Technology";
$a[] = "YQL";
$a[] = "ZOPL";

$q = $_REQUEST["q"];
$hint = "";

if ($q !== "") {


$q = strtolower($q);
$len = strlen($q);

foreach($a as $name) {

if (stristr($q, substr($name, 0, $len))) {


if ($hint === "") {
$hint = $name;
}else {
$hint .= ", $name";
}
}
}
}
echo $hint === "" ? "Please enter a valid course name" :
$hint;
?>

Producirá el siguiente resultado:


PHP - Analizador XML Ajax

Ejemplo XML Ajax


Usando con Ajax podemos analizar xml desde el directorio local, así como
desde servidores, a continuación se muestra cómo analizar xml con un
navegador web.
<html>
<head>

<script>
function showCD(str) {
if (str == "") {
document.getElementById("txtHint").innerHTML =
"";
return;
}

if (window.XMLHttpRequest) {
// code for IE7+, Firefox, Chrome, Opera,
Safari
xmlhttp = new XMLHttpRequest();
}else {
// code for IE6, IE5
xmlhttp = new
ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status
== 200) {

document.getElementById("txtHint").innerHTML =
xmlhttp.responseText;
}
}
xmlhttp.open("GET","getcourse.php?q="+str,true);
xmlhttp.send();
}
</script>

</head>
<body>

<form>
Select a Course:
<select name = "cds" onchange =
"showCD(this.value)">
<option value = "">Select a course:</option>
<option value = "Android">Android </option>
<option value = "Html">HTML</option>
<option value = "Java">Java</option>
<option value = "Microsoft">MS
technologies</option>
</select>
</form>

<div id = "txtHint"><b>Course info will be listed


here...</b></div>

</body>
</html>
El ejemplo anterior llamará a getcourse.php usando el método GET. El archivo
getcourse.php carga catalog.xml. getcourse.php es como se muestra a
continuación:
<?php
$q = $_GET["q"];

$xmlDoc = new DOMDocument();


$xmlDoc->load("catalog.xml");

$x = $xmlDoc->getElementsByTagName('COURSE');

for ($i = 0; $i<=$x->length-1; $i++) {


=
if ($x->item($i)->nodeType == 1) {
if ($x->item($i)->childNodes->item(0)->nodeValue ==
$q) {
$y = ($x->item($i)->parentNode);
}
}
}

$cd = ($y->childNodes);

for ($i = 0;$i<$cd->length;$i++) {


if ($cd->item($i)->nodeType == 1) {
echo("<b>" . $cd->item($i)->nodeName . ":</b> ");
echo($cd->item($i)->childNodes->item(0)->nodeValue);
echo("<br>");
}
}
?>

Catalog.xml
Archivo XML con una lista de cursos y detalles. Getcourse.php accede a este
archivo
<CATALOG>
<SUBJECT>
<COURSE>Android</COURSE>
<COUNTRY>India</COUNTRY>
<COMPANY>Postparaprogramadores</COMPANY>
<PRICE>$10</PRICE>
<YEAR>2015</YEAR>
</SUBJECT>

<SUBJECT>
<COURSE>Html</COURSE>
<COUNTRY>India</COUNTRY>
<COMPANY>Postparaprogramadores</COMPANY>
<PRICE>$15</PRICE>
<YEAR>2015</YEAR>
</SUBJECT>

<SUBJECT>
<COURSE>Java</COURSE>
<COUNTRY>India</COUNTRY>
<COMPANY>Postparaprogramadores</COMPANY>
<PRICE>$20</PRICE>
<YEAR>2015</YEAR>
</SUBJECT>

<SUBJECT>
<COURSE>Microsoft</COURSE>
<COUNTRY>India</COUNTRY>
<COMPANY>Postparaprogramadores</COMPANY>
<PRICE>$25</PRICE>
<YEAR>2015</YEAR>
</SUBJECT>
</CATALOG>
Producirá el siguiente resultado:
PHP - Búsqueda automática completa de
Ajax

Búsqueda completa automática


El cuadro de búsqueda de Autocompletar proporciona las sugerencias cuando
ingresa datos en el campo. Aquí estamos usando xml para llamar a
sugerencias de autocompletar. El siguiente ejemplo muestra cómo utilizar el
cuadro de texto de autocompletar con php.

Página de inicio
La página de índice debe ser la siguiente:
<html>
<head>

<style>
div {
width:240px;
color:green;
}
</style>

<script>
function showResult(str) {

if (str.length == 0) {

document.getElementById("livesearch").innerHTML = "";

document.getElementById("livesearch").style.border = "0px";
return;
}

if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}else {
xmlhttp = new
ActiveXObject("Microsoft.XMLHTTP");
}

xmlhttp.onreadystatechange = function() {

if (xmlhttp.readyState == 4 && xmlhttp.status


== 200) {
document.getElementById("livesearch").innerHTML =
xmlhttp.responseText;

document.getElementById("livesearch").style.border = "1px
solid #A5ACB2";
}
}

xmlhttp.open("GET","livesearch.php?q="+str,true);
xmlhttp.send();
}
</script>

</head>
<body>

<form>
<h2>Enter Course Name</h2>
<input type = "text" size = "30" onkeyup =
"showResult(this.value)">
<div id = "livesearch"></div>
<a href =
"http://www.postparaprogramadores.com">More Details </a>
</form>

</body>
</html>

livesearch.php
Se utiliza para llamar los datos del archivo xml y enviará el resultado a los
navegadores web.
<?php
$xmlDoc = new DOMDocument();
$xmlDoc->load("autocomplete.xml");
$x = $xmlDoc->getElementsByTagName('link');
$q = $_GET["q"];

if (strlen($q)>0) {
$hint = "";

for($i = 0; $i>($x->length); $i++) {


$y = $x->item($i)->getElementsByTagName('title');
$z = $x->item($i)->getElementsByTagName('url');

if ($y->item(0)->nodeType == 1) {
if (stristr($y->item(0)->childNodes->item(0)-
>nodeValue,$q)) {

if ($hint == "") {
$hint = "<a href = '" . $z->item(0)-
>childNodes->item(0)->nodeValue . "' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue
. "</a>";
}else {
$hint = $hint . "<br/><a href = '" .
$z->item(0)->childNodes->item(0)->nodeValue
. "' target='_blank'>" .
$y->item(0)->childNodes->item(0)->nodeValue
. "</a>";
}
}
}
}
}

if ($hint == "") {
$response = "Please enter a valid name";
}else {
$response = $hint;
}
echo $response;
?>

autocomplete.xml
Contenía datos de autocompletado y se accede por livesearch.php basado en
el campo de título y Url archivado
<pages>

<link>
<title>android</title>

<url>http://www.postparaprogramadores.com/android/index.htm</
url>
</link>

<link>
<title>Java</title>

<url>http://www.postparaprogramadores.com/java/index.htm</url
>
</link>

<link>
<title>CSS </title>

<url>http://www.postparaprogramadores.com/css/index.htm</url>
</link>

<link>
<title>angularjs</title>

<url>http://www.postparaprogramadores.com/angularjs/index.htm
</url>
</link>

<link>
<title>hadoop</title>

<url>http://www.postparaprogramadores.com/hadoop/index.htm
</url>
</link>

<link>
<title>swift</title>

<url>http://www.postparaprogramadores.com/swift/index.htm
</url>
</link>

<link>
<title>ruby</title>

<url>http://www.postparaprogramadores.com/ruby/index.htm
</url>
</link>

<link>
<title>nodejs</title>

<url>http://www.postparaprogramadores.com/nodejs/index.htm
</url>
</link>

</pages>
Producirá el siguiente resultado:
PHP - Ejemplo de fuente RSS de Ajax
RSS
Really Simple Syndication se utiliza para publicar información a menudo
actualizada del sitio web, como audio, video, imágenes, etc. Podemos integrar
las fuentes RSS en un sitio web mediante el uso de Ajax y php. Este código
muestra cómo mostrar canales RSS en nuestro sitio.

Index.html
La página de índice debe ser la siguiente:
<html>
<head>

<script>
function showRSS(str) {
if (str.length == 0) {
document.getElementById("output").innerHTML =
"";
return;
}

if (window.XMLHttpRequest) {
xmlhttp = new XMLHttpRequest();
}else {
xmlhttp = new
ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status
== 200) {
document.getElementById("output").innerHTML
= xmlhttp.responseText;
}
}

xmlhttp.open("GET","rss.php?q="+str,true);
xmlhttp.send();
}
</script>

</head>

<body>
<p>Please Select an option to get RSS:</p>

<form>
<select onchange = "showRSS(this.value)">
<option value = "">Select an RSS-feed:</option>
<option value = "cnn">CNN</option>
<option value = "bbc">BBC News</option>
<option value = "pc">PC World</option>
</select>
</form>
<br>

<div id = "output">RSS-feeds</div>

</body>
</html>

rss.php
rss.php contiene una sintaxis sobre cómo obtener acceso a los canales RSS y
devolver los canales RSS a las páginas web.
<?php
$q = $_GET["q"];

if($q == "cnn") {
$xml = ("http://rss.cnn.com/rss/cnn_topstories.rss");
}elseif($q == "bbc") {
$xml =
("http://newsrss.bbc.co.uk/rss/newsonline_world_edition/ameri
cas/rss.xml");
}elseif($q = "pcw"){
$xml = ("http://www.pcworld.com/index.rss");
}

$xmlDoc = new DOMDocument();


$xmlDoc->load($xml);

$channel = $xmlDoc->getElementsByTagName('channel')-
>item(0);

$channel_title = $channel->getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;

$channel_link = $channel->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;
$channel_desc = $channel-
>getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;

echo("<p><a href = '" . $channel_link . "'>" .


$channel_title . "</a>");
echo("<br>");
echo($channel_desc . "</p>");

$x = $xmlDoc->getElementsByTagName('item');

for ($i = 0; $i<=2; $i++) {


$item_title = $x->item($i)-
>getElementsByTagName('title')
->item(0)->childNodes->item(0)->nodeValue;

$item_link = $x->item($i)->getElementsByTagName('link')
->item(0)->childNodes->item(0)->nodeValue;

$item_desc = $x->item($i)-
>getElementsByTagName('description')
->item(0)->childNodes->item(0)->nodeValue;

echo ("<p><a href = '" . $item_link . "'>" .


$item_title . "</a>");
echo ("<br>");
echo ($item_desc . "</p>");
}
?>
Producirá el siguiente resultado:
PHP - Introducción a XML

¿Qué es el XML?
XML es un lenguaje de marcado para compartir los datos a través de la web,
XML es tanto para lectura humana como para lectura mecánica. Ejemplo de
xmls compartibles son RSS Feeds. Los analizadores XML son útiles para leer
y actualizar los datos mediante navegadores web.

Tipos de XML
 Basado en el árbol
 Basado en eventos

Extensiones de análisis XML


Las extensiones de análisis XML son trabajos basados en libxml. Los
siguientes analizadores xml están disponibles en el núcleo de php.

 Analizador XML simple


 Analizador DO XML
 Analizador XML
 Lector XML

Analizador XML simple


El analizador XML simple también se llama como analizador XML basado en
árbol y analizará el archivo XML simple. El análisis XML simple llamará al
método simplexml_load_file () para obtener acceso al xml desde una ruta
específica.

Analizador DOM
DOM Parser también llamado como un analizador de nodo complejo, que se
utiliza para analizar archivos XML altamente complejos. Se utiliza como
interfaz para modificar el archivo XML. El analizador DOM ha codificado con
codificación de caracteres UTF-8.

Análisis XML
El análisis XML se basa en el análisis SAX. Es más rápido que todos los
analizadores anteriores. Creará el archivo XML y analizará el XML. El
analizador XML se ha codificado mediante la codificación de caracteres ISO-
8859-1, US-ASCII y UTF-8.

Lector XML
Analizador de lector XML también llamado análisis XML de extracción. Se
utiliza para leer el archivo XML de una manera más rápida. Funciona con
documentos XML de alta complejidad con validación XML.
PHP - XML simple

El analizador XML simple


El analizador XML simple se usa para analizar Nombre, atributos y contenido
textual.
Las funciones XML simples se muestran a continuación:

simplexml_load_file ()
Esta función acepta la ruta del archivo como primer parámetro y es obligatoria.
simplexml_load_file(($fileName,$class,$options,$ns,$is_prefix
)

simplexml_load_string ()
Esta función acepta la cadena en lugar de la referencia del archivo.
simplexml_load_string($XMLData,$class,$options,$ns,$is_prefix
)

simplexml_import_dom ()
Esta función acepta contenido XML con formato DOM y se convierte en XML
simple.
simplexml_load_string($DOMNode,$class)
El siguiente ejemplo muestra, Cómo analizar un archivo de datos xml.
<?php
$data = "<?xml version = '1.0' encoding = 'UTF-8'?>

<note>
<Course>Android</Course>
<Subject>Android</Subject>
<Company>Postparaprogramadores</Company>
<Price>$10</Price>
</note>";

$xml = simplexml_load_string($data) or die("Error: Cannot


create object");
?>
<html>

<head>
<body>

<?php
print_r($xml);
?>

</body>
</head>

</html>
Producirá el siguiente resultado:
SimpleXMLElement Object ( [Course] => Android [Subject] =>
Android [Company] => Postparaprogramadores [Price] => $10 )
También podemos llamar a un archivo de datos xml como se muestra a
continuación y produce el mismo resultado que se muestra arriba:
<?php
$xml = simplexml_load_file("data") or die("Error: Cannot
create object");
print_r($xml);
?>
PHP - XML simple GET
XML Get ha utilizado para obtener los valores de nodo del archivo xml. El siguiente
ejemplo muestra, Cómo obtener los datos de xml.

Note.xml
Note.xml es un archivo xml, se puede acceder mediante un archivo php.
<SUBJECT>
<COURSE>Android</COURSE>
<COUNTRY>India</COUNTRY>
<COMPANY>Postparaprogramadores</COMPANY>
<PRICE>$10</PRICE>
</SUBJECT>

Index.htm
La página de índice tiene derechos para obtener acceso a los datos xml utilizando
implexml_load_file ().
<?php
$xml = simplexml_load_file("note.xml") or die("Error:
Object Creation failure");
?>

<html>
<head>

<body>

<?php
echo $xml->COURSE . "<br>";
echo $xml->COUNTRY . "<br>";
echo $xml->COMPANY . "<br>";
echo $xml->PRICE;
?>

</body>

</head>
</html>
Producirá el siguiente resultado:

Obtener valores de nodo


El siguiente código tiene información sobre cómo obtener valores de nodo del archivo
xml y XML debe ser el siguiente:
<?xml version = "1.0" encoding = "utf-8"?>
<postparaprogramadores>

<course category = "JAVA">


<title lang = "en">Java</title>
<tutor>Gopal</tutor>
<duration></duration>
<price>$30</price>
</course>

<course category = "HADOOP">


<title lang = "en">Hadoop</title>.
<tutor>Satish</tutor>
<duration>3>/duration>
<price>$50</price>
</course>

<course category = "HTML">


<title lang = "en">html</title>
<tutor>raju</tutor>
<duration>5</duration>
<price>$50</price>
</course>

<course category = "WEB">


<title lang = "en">Web Technologies</title>
<tutor>Javed</tutor>
<duration>10</duration>
<price>$60</price>
</course>

</postparaprogramadores>
El código PHP debe ser el siguiente
<html>
<body>

<?php
$xml = simplexml_load_file("books.xml") or
die("Error: Cannot create object");

foreach($xml->children() as $books) {
echo $books->title . "<br> ";
echo $books->tutor . "<br> ";
echo $books->duration . "<br> ";
echo $books->price . "<hr>";
}
?>

</body>
</html>
Producirá el siguiente resultado:
PHP - Ejemplo de analizador SAX
El analizador SAX se ha utilizado para analizar el archivo xml y mejor para la
administración de la memoria que el analizador xml de muestra y DOM. No
guarda ningún dato en la memoria, por lo que puede usarse para archivos muy
grandes. El siguiente ejemplo mostrará cómo obtener datos de xml utilizando
la API SAX.

SAX.xml
XML debe ser el siguiente:
<?xml version = "1.0" encoding = "utf-8"?>
<tutors>
<course>
<name>Android</name>
<country>India</country>
<email>[email protected]</email>
<phone>123456789</phone>
</course>

<course>
<name>Java</name>
<country>India</country>
<email>[email protected]</email>
<phone>123456789</phone>
</course>

<course>
<name>HTML</name>
<country>India</country>
<email>[email protected]</email>
<phone>123456789</phone>
</course>
</tutors>

SAX.php
El archivo PHP debería ser el siguiente:
<?php
//Reading XML using the SAX(Simple API for XML) parser

$tutors = array();
$elements = null;

// Called to this function when tags are opened


function startElements($parser, $name, $attrs) {
global $tutors, $elements;

if(!empty($name)) {
if ($name == 'COURSE') {
// creating an array to store information
$tutors []= array();
}
$elements = $name;
}
}

// Called to this function when tags are closed


function endElements($parser, $name) {
global $elements;

if(!empty($name)) {
$elements = null;
}
}

// Called on the text between the start and end of the


tags
function characterData($parser, $data) {
global $tutors, $elements;

if(!empty($data)) {
if ($elements == 'NAME' || $elements == 'COUNTRY' ||
$elements == 'EMAIL' || $elements == 'PHONE') {
$tutors[count($tutors)-1][$elements] =
trim($data);
}
}
}

// Creates a new XML parser and returns a resource handle


referencing it to be used by the other XML functions.
$parser = xml_parser_create();

xml_set_element_handler($parser, "startElements",
"endElements");
xml_set_character_data_handler($parser, "characterData");

// open xml file


if (!($handle = fopen('sax.xml', "r"))) {
die("could not open XML input");
}

while($data = fread($handle, 4096)) // read xml file {


xml_parse($parser, $data); // start parsing an xml
document
}

xml_parser_free($parser); // deletes the parser


$i = 1;

foreach($tutors as $course) {
echo "course No - ".$i.'<br/>';
echo "course Name - ".$course['NAME'].'<br/>';
echo "Country - ".$course['COUNTRY'].'<br/>';
echo "Email - ".$course['EMAIL'].'<br/>';
echo "Phone - ".$course['PHONE'].'<hr/>';
$i++;
}
?>
Producirá el siguiente resultado:

PHP - Ejemplo de analizador DOM


Un analizador HTML Dom escrito en versiones PHP5.X. Dom Parser es muy
bueno para tratar tanto XML como HTML. El analizador Dom viaja según el
árbol y antes de acceder a los datos, cargará los datos en el objeto dom y
actualizará los datos en el navegador web. El siguiente ejemplo muestra cómo
obtener acceso a los datos HTML en el navegador web.
<?php
$html = '
<head>
<title>Postparaprogramadores</title>
</head>

<body>
<h2>Course details</h2>

<table border = "0">


<tbody>
<tr>
<td>Android</td>
<td>Gopal</td>
<td>Sairam</td>
</tr>

<tr>
<td>Hadoop</td>
<td>Gopal</td>
<td>Satish</td>
</tr>

<tr>
<td>HTML</td>
<td>Gopal</td>
<td>Raju</td>
</tr>

<tr>
<td>Web technologies</td>
<td>Gopal</td>
<td>Javed</td>
</tr>

<tr>
<td>Graphic</td>
<td>Gopal</td>
<td>Satish</td>
</tr>

<tr>
<td>Writer</td>
<td>Kiran</td>
<td>Amith</td>
</tr>

<tr>
<td>Writer</td>
<td>Kiran</td>
<td>Vineeth</td>
</tr>
</tbody>
</table>
</body>
</html>
';
/*** a new dom object ***/
$dom = new domDocument;

/*** load the html into the object ***/


$dom->loadHTML($html);

/*** discard white space ***/


$dom->preserveWhiteSpace = false;

/*** the table by its tag name ***/


$tables = $dom->getElementsByTagName('table');

/*** get all rows from the table ***/


$rows = $tables->item(0)->getElementsByTagName('tr');

/*** loop over the table rows ***/


foreach ($rows as $row) {
/*** get each column by tag name ***/
$cols = $row->getElementsByTagName('td');

/*** echo the values ***/


echo 'Designation: '.$cols->item(0)->nodeValue.'<br
/>';
echo 'Manager: '.$cols->item(1)->nodeValue.'<br />';
echo 'Team: '.$cols->item(2)->nodeValue;
echo '<hr />';
}
?>

Producirá el siguiente resultado:


PHP - Frame Works
Frame Work es una colección de software o programa que desencadena la
codificación fácil y la implementación del código. Ayuda al programador a
lograr objetivos en un corto período de tiempo. Si el código PHP está
integrado con el trabajo de marcos, puede hacer cualquier cosa con
habilidades de codificación php.

Algunos de los trabajos de marco


FuelPHP

Fuel PHP funciona basado en Model View Control y con complementos


innovadores. FuelPHP admite la teoría basada en enrutadores en la que
puede enrutar directamente a una uri de entrada más cercana, haciendo que
el cierre sea el controlador y dándole el control de una mayor ejecución.

CakePHP

Cake PHP es una gran fuente para crear aplicaciones web simples y geniales
de una manera fácil. Algunas características excelentes que están
incorporadas en php son la validación de entrada, la prevención de inyección
SQL que mantiene su aplicación segura y protegida.
Caracteristicas

 Construir rápidamente
 No es necesario configurar
 Licencia MIT
 Modelo MVC
 Seguro
FlightPHP

Flight PHP es muy útil para hacer servicios web RESTful y está bajo licencia
MIT.

Symfony

Symfony es para desarrolladores altamente profesionales que crean sitios web


con componentes PHP como Drupal, PHPBB, laravel, eX, OROCRM y piwik.
yiiMarco

YiiFramework funciona basado en web 2.0 con alta seguridad. Incluyó


Validación de entrada, filtrado de salida e inyección de SQL.

Laravel

Laravel es más útil para el enrutamiento RESRful y el motor tentador con


sangrado ligero. Laravel se ha integrado con algunos de los mejores
componentes de código bien probado y confiable.
Zend

Zend es un marco moderno para realizar aplicaciones web de alta gama. Esto
funciona en base a herramientas de codificación criptográfica y segura.

Codeigniter

Codeigiter es sencillo de desarrollar una pequeña impresión tonta para


desarrolladores que necesitan un kit de herramientas simple y elegante para
crear aplicaciones web innovadoras.
Phalcon PHP

Pholcon PHP funciona basado en MVC e integrado con una arquitectura


innovadora para un rendimiento más rápido.

PHPixie

PHPixie funciona basado en MVC y está diseñado para desarrollar sitios web
de manera rápida y confiable.
Agavi

Agavi es un marco potente y sigue el modelo MVC. Permite al desarrollador


escribir código limpio y fácil de mantener.
PHP básico vs Frame Works PHP
Suponemos que Core PHP significa resolver un problema matemático
utilizando papel y lápiz. El trabajo de marco significa resolver problemas
matemáticos mediante el uso de una calculadora.

Problema matemático básico para resolver PHP


Solo algunos estudiantes pueden lograr resultados usando papel y lápiz de la
misma manera que en PHP. Solo unos pocos desarrolladores pueden escribir
el código de una manera fácil y en un formato confiable.

Marco - Resolver problemas matemáticos


Todos pueden lograr el resultado usando la calculadora igual que en
PHP. Incluso los principiantes pueden escribir el código de manera fácil y en
un formato confiable.
El principal problema con el núcleo de PHP es que cuando los desarrolladores
escriben su propia lógica, es difícil lograr el resultado, por lo que la mayoría de
los desarrolladores eligen marcos innovadores.

Marco de referencia
La mayoría de los marcos son confiabilidad, consistencia y ahorro de
tiempo. Algunos de los marcos innovadores tienen un amplio conjunto de
funcionalidades, por lo que el desarrollador no necesita escribir código
completo, los desarrolladores deben acceder al código utilizando el marco y
desarrollar una aplicación web PHP. Frameworks no ofrece soluciones para
escritores de códigos incorrectos, pero brinda confiabilidad al escribir código.

Proyectos mejorados
Todos quieren pasar a tecnologías sofisticadas. Si algún sitio web o
aplicaciones web se han desarrollado en Core PHP, es difícil mejorar los
componentes del sitio web, pero si el sitio web o las aplicaciones web se han
desarrollado en Frame Work PHP, es muy fácil mejorar las características.

¿Ha sido malo el núcleo de PHP ?


No está del todo mal. Core PHP te ayuda a escribir el código y entender el
código. cuando el desarrollador en la etapa inicial, recomendamos
encarecidamente aprender Core PHP, porque no queremos verte como un mal
desarrollador. Según la teoría mundial, fácil siempre da el mejor resultado con
una base sólida. Según la teoría mundial, si conoce PHP central, alcanzaría su
objetivo utilizando PHP marco.
PHP - Patrones de diseño
La teoría de patrones de diseño de Microsoft es: "El documento introduce patrones y
luego los presenta en un repositorio o catálogo, que está organizado para ayudarlo a
ubicar la combinación correcta de patrones que resuelva su problema".

Ejemplos de patrones de diseño.


único

Una clase tiene una instancia, le proporciona un punto de acceso global, el siguiente
código explicará el concepto de singleton.
<?php
class Singleton {
public static function getInstance() {
static $instance = null;

if (null === $instance) {


$instance = new static();
}
return $instance;
}
protected function __construct() {
}

private function __clone() {


}

private function __wakeup() {


}
}

class SingletonChild extends Singleton {


}

$obj = Singleton::getInstance();
var_dump($obj === Singleton::getInstance());

$anotherObj = SingletonChild::getInstance();
var_dump($anotherObj === Singleton::getInstance());
var_dump($anotherObj === SingletonChild::getInstance());
?>
El ejemplo anterior implementado en base a la creación del método estático es
getInstance ()

Fábrica
Una clase simple crea el objeto y desea utilizar ese objeto. El siguiente ejemplo
explicará el patrón de diseño de fábrica.
<?php
class Automobile {
private $bikeMake;
private $bikeModel;

public function __construct($make, $model) {


$this->bikeMake = $make;
$this->bikeModel = $model;
}

public function getMakeAndModel() {


return $this->bikeMake . ' ' . $this->bikeModel;
}
}

class AutomobileFactory {
public static function create($make, $model) {
return new Automobile($make, $model);
}
}

$pulsar = AutomobileFactory::create('ktm', 'Pulsar');


print_r($pulsar->getMakeAndModel());

class Automobile {
private $bikeMake;
private $bikeModel;

public function __construct($make, $model) {


$this->bikeMake = $make;
$this->bikeModel = $model;
}

public function getMakeAndModel() {


return $this->bikeMake . ' ' . $this->bikeModel;
}
}

class AutomobileFactory {
public static function create($make, $model) {
return new Automobile($make, $model);
}
}
t$pulsar = AutomobileFactory::create('ktm', 'pulsar');

print_r($pulsar->getMakeAndModel());
?>
La principal dificultad con el patrón de fábrica es que aumentará la complejidad y no
es confiable para los buenos programadores.
Patrón de estrategia

El patrón de estrategia crea un algoritmo familiar y encapsula cada algoritmo. Aquí


cada algoritmo debe ser intercambiable dentro de la familia.
<?php
$elements = array(
array(
'id' => 2,
'date' => '2011-01-01',
),
array(
'id' => 1,
'date' => '2011-02-01'
)
);

$collection = new ObjectCollection($elements);

$collection->setComparator(new IdComparator());
$collection->sort();

echo "Sorted by ID:\n";


print_r($collection->elements);

$collection->setComparator(new DateComparator());
$collection->sort();

echo "Sorted by date:\n";


print_r($collection->elements);
?>

Control de vista de modelo


La vista actúa como GUI, el modelo actúa como back end y el control actúa como un
adaptador. Aquí tres partes están interconectadas entre sí. Pasará los datos y accederá a
los datos entre sí.

También podría gustarte