guía para programar en php
DESCRIPTION
guía de programación en php, html, informática, internet, páginas web, php editor, vectores, matrices, computación, innovación, base de datos.TRANSCRIPT
PHP (Hypertext Preprocesador)
PHP es un lenguaje de alto nivel que se ejecuta en el servidor; donde están alojadas las
páginas, al contrario de otros lenguajes que son ejecutados en el navegador.
Php es un lenguaje que se presenta embebido dentro de las páginas web. Esto quiere
decir que el código se incrusta en el mismo documento en el que aparecen las etiquetas
HTML. Al ejecutarse un programa escrito en este lenguaje, se obtiene una página
HTML compuesta por una parte de las etiquetas originales y por otra generadas
dinámicamente por el código PHP.
La principal ventaja de php, es que al ejecutarse en el servidor, todas nuestras páginas
van a poder ser vistas en cualquier ordenador, independientemente del ordenador que se
tenga. A diferencia del código que se ejecuta en el navegador, que muchos navegadores
no son capaces de entender todo el código, lo que presentaría errores al mostrar el
resultado de las páginas.
Otra ventaja que presenta PHP, es que es un lenguaje de programación gratuito y, por
tanto, todo el mundo puede utilizarlo sin ningún costo, frente a otros lenguajes cuyo
software es necesario comprar para su utilización.
Código de fuente abierto: toda persona puede mejorar o hacer sugerencias de su
desarrollo
Portable y multiplataforma: el lenguaje PHP pude ser ejecutado en cualquier plataforma
sin necesidad de modificar una línea de código
Permite realizar rápidamente sitios web dinámicos; alta velocidad de desarrollo
PHP se contruyó para ser utilizado conjuntamente con la base de datos MySQL, pero
actualmente soporta la mayoría de bases de datos (Oracle, Informix, ODBC, SQl Server,
etc.).
DIFERENCIA DE EJECUCIÓN ENTRE UN DOCUMENTO ESTÁTICO Y UN
DOCUMENTO DINÁMICO
FASE DE LA OBTENCIÓN DE UN DOCUMENTO DINÁMICO
1. El usuario pulsa sobre un enlace, solicitando un documento (HTML,JPG,…) y el
navegador envía la petición al servidor utilizando el protocolo http
2. La solicitud llega al servidor web correspondiente a través de la red. El servidor
localiza el documento solicitado
3. El servidor lee el documento del sistema, de fichero y envía al cliente que
realizó la petición una copia exacta del mismo
4. El documento llega al cliente y se visualiza su contenido en el navegador.
SERVIDOR WWW
DOCUMENTO ESTÁTICO (HTML,JPG…)
SOLICITUD
RESPUESTA
3
1
4
2
FASE DE LA OBTENCIÓN DE UN DOCUMENTO DINÁMICO
1. El usuario pulsa sobre un enlace, solicitando un documento (PHP) y el
navegador envía la petición al servidor utilizando el protocolo http
2. Llega la solicitud al servidor correspondiente y este localiza el documento. Por
la extensión del fichero(.PHP) determina que se trata de un fichero que contiene
PHP y lanza el interprete
3. El interprete ejecuta el script solicitado, generando un resultado (Habitualmente
un documento HTML) que se devuelve al servidor para que este a su vez lo
transfiera al cliente que hizo la petición
4. Se visualiza el Doc. Generado dinámicamente en el navegador del usuario.
PAQUETES INTEGRADOS
Son kits de instalación automática que nos simplifican todas las tareas de instalación de
los diferente software a partir de un solo ejecutable; algunos de ellos son:
Xampp:http://www.apachefriends.org/en/xampp.html/
Foxserver:http://sourceforget.net/projects/foxserv
Apache2triad:http://apache2triad.sourceforge.net
Wamp5:http://www.en.wampserver.com/download.php/
Winlamp:http://www.datacaptech.com/winlamp.php
Appserv:http://www.appservnetwork.com/
Nushpere:http://nusphere.com7
SERVIDOR WWW
DOCUENTO ESTÁTICO (HTML,JPG…)
SOLICITUD
RESPUESTA
3
1
4
2
PHP
Delimitadores
PHP esta muy relacionado con el lenguaje de hipertexto HTML; tanto así que el código
PHP aparece normalmente insertado dentro de un documento HTML
Las etiquetas de comienzo y final del código PHP son:
a) <?php instrucciones
¿>
b) <? En el php.ini debe estar activainstrucciones la directiva short_open_tag
¿>
c) <% En el php.ini debe estar activa lainstrucciones directiva aspt_tags; utilizada por ASP
%> Active Server Pages
d) <script lenguaje=”php”>
instrucciones Se debe indicar el lenguaje que se va ha utilizar </script>
Comentarios
// (C,C++,Java, JavaScript), #(Perl, Shell) comentarios de una sola línea
/* comentarios */ comentarios de varias líneas
Fin de línea
Php ignora cualquier carácter de espaciado presente en el código (espacios en blanco,
tabulaciones, saltos de líneas, excepto si se encuentra en una cadena de texto).
El fin de sentencia se marca “; “o bien aprovechando la etiqueta de cierre “?>”
Variables
Es el nombre que se le da a una posición de memoria del ordenador en la cual se
almacena la información, en php no es necesario declarar las variables antes de su
utilización; se crean al instante, no tienen asociado el tipo de dato, puede almacenar
diferentes tipos de datos
El tipo de variable no se suele especificar. Se decide en tiempo de ejecución en función
del contexto y puede variar, para crear una variable se debe comenzar con el símbolo $
luego una letra o el carácter subrayado
Ejemplo:
$sueldo, $_sueldo, $sueldo2012
ConstantesLas constantes son contenedores de php que nunca cambian su valor, se utilizan para
valores bien conocidos y que se sabe que se van a utilizar.
En php las constantes se definen con la función define(), la cual acepta dos argumentos:
el nombre de la constante y su valor. Los nombres de constantes deben seguir las
mismas reglas que las variables, con una sola excepción el prefijo $ no se requiere.
Sintaxis
define(‘nombreconstante’,valor);
Ejemplo:
define(‘texto’,’bienvenido’);
define(‘pi’,3.1416);
define(‘precio’,20);
EXPRESIONES Y OPERADORES
Operadores aritméticos+ suma - resta* producto/ división% resto++ incremento (si se coloca antes de la variable es un preincremento,
después de la variable postincremento) -- decremento(si se coloca antes de la variable es un predecremento,
después de la variable postdecremento)
Operadores de cadena. concatenación
Operadores de asignación=
Operadores de asignación combinado
+=-=*=/=%=.=
Ejemplo:1. Si se tiene la siguiente variable $a=3
Entonces:
$a+=5 $a=$a+5 $a=8$a-=5 $a=$a-5 $a=-2$a*=5 $a=$a*5 $a=15$a/=5 $a=$a/5 $a=0.6$a%=5 $a=$a%5 $a=0
2. si se tiene $a=”hola”
$a.=”mundo” $a=$a . “mundo” $a=”hola mundo”
Operadores de comparación
= = $a= =$b True si los valores son iguales
= = = $a= = = $b True si los variable son iguales y del mismo tipo
!= $a != $b True si son diferentes
!= = $a != = $b True si los variable no son iguales y del mismo tipo
< $a < $b True si $a es menor $b> $a >$b True si $a es mayor $b<= $a <= $b True si $a es menor o igual $b>= $a >= $b True si $a es mayor o igual $b
Operadores Lógicos
and && $a and $b True si lo son $a y $b$a && $b
or || $a or $b True si lo son $a o $b$a || $b
xor $a xor $b True si $a o$b lo son pero no ambos a la vez
! !$a True si $a es falso o false si $a es verdadero (negación)
INSTRUCCIONES DE CONTROL EN PHP
CondicionalesLas sentencias condicionales nos permiten ejecutar o no unas ciertas instrucciones
dependiendo del resultado de evaluar una condición. Estas pueden ser simples, dobles
múltiples.
SIMPLE
<?php if (condición) { Sentencias a ejecutar cuando la condición es cierta. }
?>
DOBLE
<?php if (condición) { Sentencias a ejecutar cuando la condición es cierta. } else { Sentecias a ejecutar cuando la condición es falsa. }
?>
EJEMPLO:
<html> <head> <title>uso de la sentencia if</title> </head> <body>
<?php $a = 8; $b = 3; if ($a < $b) { echo "a es menor que b"; } else
{ echo "a no es menor que b"; }
?> </body> </html>
MULTIPLE SELECCIÓN
IF / ELSEIF…
Esta estructura evalúa una condición y en caso de que se cumpla realiza las sentencias
dentro de su ciclo y se sale de la estructura; de no cumplirse la primera condición pasará
a evaluar la segunda y así sucesivamente
<?php if (condicion) { Sentencias a ejecutar cuando la condición es cierta.
} elseif (condicion1) { Sentencias a ejecutar cuando la condición es cierta. }
elseif (condicion2) { Sentencias a ejecutar cuando la condición es cierta. }
else { Sentencias a ejecutar cuando la condición es cierta. }
?>
SWITCH ... CASECon la sentencia switch podemos ejecutar unas u otras instrucciones dependiendo del
valor de una variable, la variable siempre recibe un valor el cual puede ser texto o
número, y dependiendo de ese valor se seleccionara el caso posible y de forma opcional
se coloca el default ( En caso de que no se cumpla ninguna)
switch($variable) { case "texto 1" // Bloque 1
sentencias break; case "texto2": // Bloque 2
sentencias
break; default: // Bloque 3
sentencias break; }
Ejemplo del uso de switch
<html> <head> <title>Uso de la estructura switch</title> </head> <body>
<?php $posicion = "arriba"; switch($posicion) { case "arriba": // Bloque 1
echo "La variable contiene"; echo " el valor arriba";
break; case "abajo": // Bloque 2
echo "La variable contiene"; echo " el valor abajo"; break;
default: // Bloque 3 echo "La variable contiene otro valor"; echo " distinto de arriba y abajo"; }
?> </body> </html>
Ciclos iterativos o buclesLos bucles nos permiten iterar conjuntos de instrucciones, es decir repetir la ejecución de un conjunto de instrucciones mientras se cumpla una condición. Los ciclos iterativos en PHP son while y for
Sentencia while
<?php while (condición) { intrucciones a ejecutar. }
?>
Mientras la condición sea cierta se reiterará la ejecución de las instrucciones que están
dentro del while.
En el siguiente ejemplo, el valor de $i al comienzo es 0, durante la ejecución del bucle,
se va sumando 1 al valor de $i de manera que cuando $i vale 10 ya no se cumple la
condición y se termina la ejecución del bucle.
<html> <head> <title>uso de la sentencia while</title> </head> <body>
<?php $i=0; while ($i<10) { echo "El valor de i es ", $i,"<br>"; $i++; }
?> </body> </html>
Sentencia for
La instrucción for es la instrucción de bucles más completa. En una sola instrucción nos
permite controlar todo el funcionamiento del bucle.
El primer parámetro del for, es ejecutado la primera vez y sirve para inicializar la
variable del bucle, el segundo parámetro indica la condición que se debe cumplir para
que el bucle siga ejecutándose y el tercer parámetro es una instrucción que se ejecuta al
final de cada iteración y sirve para modificar el valor de la variable de iteración.
<?php for (inicial ; condición ; ejecutar en iteración) { intrucciones a ejecutar. }
?>
En el siguiente ejemplo $i inicia en 0, luego se valida la condición, $i sea menor que
cero entonces se mostrará en pantalla el valor de $i, luego $i se incrementa en uno con
el último bloque del ciclo for $i++, y vuelve nuevamente a comparar hasta que se
cumpla la condición y se sale del ciclo.
<html> <head> <title>uso del ciclo for</title> </head> <body>
<?php for($i=0 ; $i<10 ; $i++)
{ echo "El valor de i es ", $i,"<br>";
} ?>
</body> </html>
Salida (echo)
echo “mensajes “ muestra una o más cadenas
printf muestra una cadena
Hasta ahora hemos usado la instrucción echo para realizar salida a pantalla, esta
instrucción es bastante limitada ya que no nos permite formatear la salida. La
instrucción printf nos da mucha más potencia.
Sentencia printf
<?php printf(cadena formato, variable1, variable2...);
?>
La cadena de formateo indica cómo se han de representar las valores que se le indiquen.
La principal ventaja es que además de poder formatear los valores de salida, nos permite
intercalar texto entre ellos.
<html> <head> <title>uso de printf</title> </head> <body>
<?php printf("El numero dos con diferentes formatos: %d %f %.2f",2,2,2);
?> </body> </html>
La cadena de formato puede incluir una seria de caracteres especiales que indican como
formatear las variables que se incluyen en la instrucción. Entre ellos tenemos:
Elemento Tipo de variable
%s Cadena de carácteres.
%d Número sin decimales.
%f Número con decimales.
%c Carácter ASCII.
Aunque existen otros tipos, estos son los más importantes.
<html> <head> <title>Ejemplo de PHP</title> </head> <body>
<?php $var="texto"; $num=3; printf("Puede fácimente intercalar <b>%s</b> con números <b>%d</b> <br>",$var,$num);
printf("<TABLE BORDER=1 CELLPADDING=20>"); for ($i=0;$i<10;$i++) { printf("<tr><td>%10.d</td></tr>",$i); } printf("</table>");
?> </body> </html>
FORMULARIOS
Los formularios es la herramienta que disponemos a la hora de hacer nuestras páginas
web interactivas, en el sentido de que nos permiten recopilar información de la persona
que ve la página, procesarla y responder a ella,.
Los formularios están formados por una serie de controles distintos, cada uno de los
cuales está asociado a un tipo concreto de datos o una acción predeterminada: botones
de envío y borrado de datos, listas de selección, cajas de entrada de texto, entre otros.
Etiquetas <FORM>...</FORM>
Estas etiquetas son las que delimitan el comienzo y el final de un formulario. Si
queremos mostrar en una página un elemento aislado de un formulario, cualquier
elemento que se desee colocar dentro de una página debe estar delimitado por estas
etiquetas para que sea interpretado.
La pareja de etiquetas se introduce en el código HTML dentro del BODY de la página,
en el lugar en que queramos que nos aparezcan los elementos del formulario.
Principales Atributos o Parámetros de <FORM>
action = "ruta_programa". Indica el programa del servidor que va a "tratar" las
variables que se envíen con el formulario o el envío de los datos mediante correo
electrónico mediante el valor "mailto: direccion_de_correo", en cuyo caso deberemos
añadir el parámetro ENCTYPE="text/plain" para que lo que recibamos resulte legible.
En el caso de que definamos aquí un programa para el tratamiento de datos deberemos
especificar su ruta relativa respecto al directorio de carpetas del servidor en dónde
tengamos situado nuestra aplicación web o bien una URL completa, si el programa está
en otra dirección de Internet.
method = " POST / GET " . Indica el método según el que se van a transferir las
variables del formulario. POST envía los datos, normalmente al programa CGI definido
en action o por correo si en action hemos utilizado mailto. El método GET añade los
argumentos del formulario al URL recogido en.
El método de uso más normal es POST, y en el caso de que estemos mandando el
formulario a nuestra dirección de correo electrónico es obligado usarlo.
Con GET los datos son encadenados al URL especificado en action , utilizando el tipo
de codificación especificado en el atributo enctype. Este método se utiliza cuando los
datos no modifican la base de datos, por ejemplo, al realizar una búsqueda, y los
caracteres a enviar tienen que pertenecer obligatoriamente al conjunto ASCII.
Con el método POST se realiza una transacción mediante el protocolo HTTP, utilizando
la codificación enctype. Se utiliza para aplicaciones que modifican la base de datos de
destino.
enctype =" tipo ". Indica al explorador web el método de cifrado utilizado para pasar
los datos del formulario a la secuencia de comandos CGI en el servidor. Normalmente,
el valor del atributo encitype se define como "application/x-www-form-urlencoded".
accept =" tipo MIME ", que indica al servidor qué tipos de archivo MIME se van a
aceptar en el envío. Normalmente no se usa, pero si nos es necesario el administrador de
nuestro servidor web nos puede indicar cuales son aceptados.
accept-charset = "charset ", que especifica la lista de caracteres permitidos que deben
ser interpretados correctamente por el servidor receptor. Por ejemplo, si el servidor
admite como caracteres permitidos código HTML, en valor de charset será "text/html".
target= " nombre ".. Este atributo indica en qué ventana de una página con frames se
debe mostrar el resultado del proceso de datos mediante el programa CGI.
title= texto que mostrará el explorador al colocar el puntero del mouse sobre una zona
de la página
id= se utiliza para asignarle un nombre único por el cual se puede hacer referencia al
formulario en una secuencia de comandos.
name= coloca un texto para hacer referencia a un formulario por su nombre
ELEMENTOS DE UN FORMULARIO
Cuadro de textos (text)
Atributos:
type= “text”, permite definir qué tipo de elemento se va a crear
name=” nombre” se utiliza para identificar el campo de entrada, el valor que se ingresa
en el cuadro de texto se envía al servidor dentro del nombre del atributo name.
size=”valor”, ancho de caracteres del cuadro de texto
value=”valor” texto que aparecerá asignado cuando se dibuje el formulario
maxlength=”valor”, número máximo de caracteres que el visitante puede escribir en el
campo de texto de entrada.
Id=”valor”, se utiliza para asignarle un nombre único por el cual se puede hacer
referencia al campo de entrada en una secuencia de comandos
tabindex=”valor” se utiliza para establecer el orden de tabulación (TAB) en el que los
elementos del formulario recibe el focus.
Cuadro de textos (password)
Se utiliza para ingresar una breve cadena de texto o número, la etiqueta para generarlo es <input>
password, define una caja de texto para contener una clave o password, por lo que el
texto que introduzca el usuario aparecerá como asteriscos, por motivos de seguridad.
Sus atributos opcionales son los mismos que los del tipo text.
Campo oculto
Se utiliza para ingresar una breve cadena de texto o número, la etiqueta para generarlo es <input>
hidden, que define un campo invisible, por lo que no se ve en pantalla. Aunque parece así definido que no tiene utilidad, sus usos son varios e importantes,. Sus atributos son:
name=" nombre", que asigna un nombre identificador único al campo oculto.
value=" valor ", que va a ser el valor fijo que se le va a pasar al programa del servidor,
ya que el usuario no puede modificarlo. En realidad este valor no tiene porqué ser fijo,
ya que lo vamos a poder modificar mediante código de script, lo que nos va a permitir ir
pasando una serie de variables ocultas de una página a otra.
Cuadro multilíneas <textarea> </textarea>
Se utiliza para permitirle al usuario que ingrese varias líneas de texto
Atributos:
rows=”valor” numero de filas de texto que desea que el explorador web muestre al
mismo tiempo
cols=”valor”, numero de caracteres que desea que el explorador muestre en cada línea
del cuadro de texto
id=”valor”, se utiliza para asignarle un nombre único por el cual se puede hacer
referencia al campo de entrada en una secuencia de comandos
name=”nombre” se utiliza para identificar el campo de entrada, el valor que se ingresa
en el cuadro multilínea se envía al servidor dentro del nombre del atributo name.
La cantidad de caracteres se define del producto del número de filas por el número de
columnas
Casillas de verificación (checkbox)
Permite al usuario elegir más de una opción o elemento, la etiqueta para generarlo es <input>
Atributos:
type=”checkbox” crea la casilla de verificación
id=”valor”, se utiliza para asignarle un nombre único por el cual se puede hacer
referencia al campo de entrada en una secuencia de comandos
name=”nombre” se utiliza para identificar el campo de entrada,.
value=”valor” valor que se llevara el nombre de la casilla de verificación
checked al colocar este atributo, define si al generar el formulario aparece activo
Botones de Opción (radio)
Permiten al usuario seleccionar una de diferentes , la etiqueta para generarlo es <input>
Atributos
id=”valor”, se utiliza para asignarle un nombre único por el cual se puede hacer
referencia al campo de entrada en una secuencia de comandos
name=”nombre” se utiliza para identificar el campo de entrada,.
value=”valor” valor que se llevara el nombre del botón de opción
checked al colocar este atributo, define si al generar el formulario aparece activo
Listas Desplegables <Select>
Se utilizan para indicarle al usuario una serie de opciones, la etiqueta para generarlo es
<select>
<option> TEXTO 1</option>
<option> TEXTO 2</option>
<option> TEXTO 3</option>
</select>
Atributos <select>:
size=”valor”, número de elementos del menú de opciones que aparecerá en pantalla al
mismo tiempo
id=”valor”, se utiliza para asignarle un nombre único a la lista desplegable, por el cual
se puede hacer referencia al campo de entrada en una secuencia de comandos
name=”nombre”, se utiliza para identificar un elemento de la lista desplegable en el
formulario.
Multiple, al estar este atributo presente en la etiqueta select , el explorador web
permitirá al visitante seleccinar más de un elemento a la vez
Atributos <option>
value=”valor”, cadena de texto que se pasa al servidor web como la parte de la pareja
nombre/valor
selected, al incluir este atributo en la etiqueta option, indica al explorador web que
seleccione el elemento al dibujar la lista.
Boton
Permiten al usuario ejecutar una acción de envió de datos, la etiqueta para generarlo es <input>
type=”submit”, incorpora al formulario un botón de envío de datos. Cuando el usuario
pulsa este botón los datos que ha introducido en los diferentes campos del formulario
son enviados al programa del servidor o a la dirección de correo indicada en action. Sus
atributos son:
name=”nombre”, permite asociar un nombre con el botón
value=" valor ", que define el texto que va a aparecer en el botón de envío.
disabled, desactiva el botón, de tal forma que no se produce ninguna acción cuando se
pulsa, pues permanece inactivo.
tabindex = " n ", que especifica el orden de tabulador que tendrá el campo respecto
todos los elementos que incluye el formulario.
Otro botón que también permite enviar datos del formulario es el de image
type=”image”
src=”archivo de imagen.jpg” //imagen del botón de enviar
Boton
Permiten al usuario ejecutar una acción de borrar los datos que se han ingresado en el
formulario, la etiqueta para generarlo es <input>
type=”reset”, define un botón que al ser pulsado por el usuario borra todos los datos
que hubiera introducido en cualquiera de los campos del formulario. Sus atributos son
los mismos que los de submit.
Etiquetas <LABEL>...</LABEL>
Hasta hora, el texto que acompañaba a los campos de entrada no estaba asociado a los
mismos de ninguna manera. Así, por ejemplo, si pulsábamos en el texto que
acompañaba a un control de confirmación, no sucedía nada. Ahora, en cambio, si
utilizamos la etiqueta LABEL, el control cambiará de estado
Para asociar la etiqueta a un elemento del formulario, dentro de las etiquetas
<label>...</label>, colocamos el elemento
Ejemplo
<label>
<input type="text" name="nombre">
</label>
Etiquetas <FIELDSET>...</FIELDSET>
Hasta ahora, no disponíamos de ninguna manera de agrupar visualmente varios
controles, si no echábamos mano de elementos que no son del formulario, como tablas o
imágenes.
Ahora, si encerramos una parte de un formulario dentro de la etiqueta FIELDSET se
mostrará un rectángulo alrededor de los mismos.
Además, podemos indicar un título por medio de la etiqueta <LEGEND>, que admite el
atributo align="left / center / right / top /bottom", lo que nos permite alinear el título
horizontal y verticalmente..
PROCESANDO FORMULARIO
Envío y recepción de datos
El lenguaje PHP nos proporciona una manera sencilla de manejar formularios,
permitiéndonos de esta manera procesar la información que el usuario ha introducido.
Al diseñar un formulario debemos indicar la página PHP que procesará el formulario,
así como en método por el que se le pasará la información a la página.
<html> <head> <title>formulario</title> </head> <body>
<H1> proceso de formularios</H1> Introduzca su nombre: <FORM ACTION="procesa.phtml" METHOD="GET">
<INPUT TYPE="text" NAME="nombre"><BR> <INPUT TYPE="submit" VALUE="Enviar">
</FORM> </body> </html>
Al pulsar el botón Enviar el contenido de cuadro de texto es enviado a la página que
indicamos en el atributo ACTION de la etiqueta FORM.
Para acceder a las variables del formulario hay que usar el array de parámetros
$_POST[] o $_GET[] dependiendo del método usado para enviar los parámetros.
En este ejemplo se ha creado una entrada en el array $_GET[] con el índice 'nombre' y
con el valor que haya introducido el navegante.
<html> <head> <title>Ejemplo de PHP</title> </head> <body>
<H1>Ejemplo de procesado de formularios</H1> El nombre que ha introducido es: <?php echo $_GET['nombre'] ?> <br>
</body> </html>
Method GET y POST
Los datos de un formulario se envía mediante el método indicado en el atributo
METHOD de la etiqueta FORM, los dos métodos posibles son GET y POST.
La diferencia entre estos dos métodos radica en la forma de enviar los datos a la página,
mientras que el método GET envía los datos usando la URL, el método POST los envía
por la entrada estándar STDIO.
Envio usando el metodo GET
<html> <head> <title>Ejemplo de PHP</title> </head> <body>
<H1> formularios con GET</H1>
<FORM ACTION="procesa2.phtml" METHOD="GET"> Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar">
</FORM> </body> </html>
Envio usando el metodo POST
<html> <head> <title>Ejemplo de PHP</title> </head> <body>
<H1> formularios con POST</H1> <FORM ACTION="procesa2.phtml" METHOD="POST">
Introduzca su nombre:<INPUT TYPE="text" NAME="nombre"><BR> Introduzca sus apellidos:<INPUT TYPE="text" NAME="apellidos"><BR> <INPUT TYPE="submit" VALUE="Enviar">
</FORM> </body> </html>
procesa2.phtml<html> <head> <title>Ejemplo de PHP</title> </head> <body>
<H1>Ejemplo de procesado de formularios</H1>
El nombre que ha introducido por GET es: <?php echo $_GET['nombre']," ",$_GET['apellidos'] ?><br> El nombre que ha introducido por POST es: <?php echo $_POST['nombre']," ",$_POST['apellidos'] ?> <br>
</body> </html>
El resultado final es el mismo, solo que con el método GET podemos ver los parámetros pasados ya que están codificados en la URL.
Arrays en php
Un array en PHP es en realidad un mapa ordenado. Un mapa es un tipo de datos que
asocia valores con claves. Este tipo se optimiza para varios usos diferentes; se puede
emplear como un array, lista (vector), tabla asociativa (tabla hash - una implementación
de un mapa), diccionario, colección, pila, cola, entre otros.
Tipos de Arreglos:
Unidimensional
Bidimensional
Multidimensional
Aparte de los tipos de arreglos tradicionales, en php se utiliza otra división de los
arreglos, Indexado y Asociativos.
Vectores (Arrays De Una Dimensión)Los vectores son los arrays que sólo contienen una dimensión (un índice).
Para declarar un vector en php, se pude realizar de diferentes formas<?php$mes[0] = "enero";$mes[1] = "febrero";$mes [2] = "marzo";$mes [3] = "abril";?>
<?php$mes[] = "enero";$mes[] = "febrero";$mes [] = "marzo";$mes [] = "abril";?>
En este caso se realiza de la manera tradicional, indicando en qué posición se guarda cada valor
En este caso el primer valor se almacenará en la posición cero, y así sucesivamente
<?php$mes= array("enero", "febrero", "marzo”, "abril");?>
Por último utilizando el operador de asignación =><?php$mes= array(0=>"enero", 1=>"febrero", "marzo”, "abril");?>
MATRICES O ARRAYS (ARREGLOS) DE DOS DIMENSIONES
Las matrices, son arrays (arreglos) de dos dimensiones. También podemos verlas como
tablas donde cada elemento tiene una fila y una columna.
Por ejemplo:
En una matriz normalmente hablamos de filas y columnas y decimos que la matriz tiene
M filas y N columnas. Así, cada elemento queda identificado por su fila i y su columna
j.
Tomando en cuenta la matriz anterior, se podría decir que tenemos 3 filas y 4
columnas. Para hacer referencia a un elemento, se llama al vector por su fila y columna,
ejemplo:
$valor [0] [0] = 1; $valor [0] [1] = 14; $valor [0] [2] = 8; $valor [0] [3] = 3;
$valor [1] [0] = 6; $valor [1] [1] = 19; $valor [1] [2] = 7; $valor [1] [3] = 2;
$valor [2] [0] = 3; $valor [2] [1] = 13; $valor [2] [2] = 4; $valor [2] [3] = 1;
Al igual que se denotan los vectores, se hace el mismo trabajo con las matrices.
Ejemplo:
<?php
$animal[0][0] = "Perro";
$animal[0][1] = "Gato";
$animal[1][0] = "Lombriz";
$animal[1][1] = "Burro";
$animal[2][0] = "Murciélago";
$animal[2][1] = "Cocodrilo";
?>
En este caso se utiliza la función array(), el primer valor ocupa la posición cero, el segundo la uno, y así sigue el orden
En php podemos escribir los array multidimensional, como un arreglo de arrays
<?php
$animal = array(
array("Perro", "Gato"),
array("Lombriz", "Burro"),
array("Murciélago", "Cocodrilo")
);
?>
<?php
$animal[0] = array("Perro", "Gato");
$animal[1] = array("Lombriz", "Burro");
$animal[2] = array("Murciélago", "Cocodrilo");
?>
ARRAYS ASOCIATIVOS
Los arrays asociativos, son aquellos en los cuales el índice del array, pasa hacer una
clave(keys) de tipo texto; ya no es numérica por defecto.
Ejemplo 1:
<?php$pago[enero] = 5000;$pago febrero] = 14000;$pago [marzo] = 200;$pago [abril] =1200
?>
Ejemplo 2:
<?php $menu = array(
’Primer plato’ => ’Sopa de Res’, ’Segundo plato’ => ’Pollo a la plancha’, ’Postre’ => ‘Quesillo’ );
?>
Ejemplo 3:
<?php $menu = array(
array(’Primer plato’ => ’Sopa de Res’, ’Segundo plato’ => ’Pollo a la plancha’,
’Jugo’ => ‘Piña),
array(’Primer plato’ => ’Sopa de Pollo’, ’Segundo plato’ => ’Bistec a la
plancha’, ’Jugo’ => ‘Fresa),array(
’Primer plato’ => ’Mondongo’, ’Segundo plato’ => ’Asado, ’Jugo’=> ‘Melon’)
);?>
Recorridos Arrays
Función count($nombreArray);
Esta función cuenta el número de elementos de un array.
Estructura for
for($i=0;$i<count($nombreArray);$i++){ Procesos;
}
Estructura while
$i=0;while($i<count($nombreVector){ Procesos;}
$i=0;do{ Procesos; }while($i<count($nombreVector);
Estructura foreach( )
foreach($nombreVector,$valor){
echo $valor[indice];
}
Recorridos Array Asociativos
Funciones para trabajar con array asociativos
current Recorridos Array indexados
pos Recorridos Array indexados
reset mueve el puntero al primer elemento de la tabla
end mueve el puntero al último elemento de la tabla
next mueve el puntero al elemento siguiente
prev mueve el puntero al elemento anterior
count devuelve el número de elementos de una vector o tabla.
Funciones en Php
Una función es un conjunto de instrucciones que a lo largo del programa van a ser
ejecutadas varias veces. Es por ello, que este conjunto de instrucciones se agrupan en
una función. Las funciones pueden ser llamadas y ejecutadas desde cualquier punto del
programa.
Sintaxis
function nombreFuncion (parámetro1, parámetro2, …, parámetroN) { instrucción1 instrucción2 . . instrucciónN }
Para ejecutar la función
nombreFuncion(dato1, dato2, dato3, …, datoN);
donde dato1, dato2, dato3, …, datoN, son los datos que le pasamos a la función.
Una función puede necesitar de ningún, uno o varios parámetros para ejecutarse.
Ejemplo 1
<?php //Declaración de funcionfunction mostrarContenido($texto) {
echo "<strong>$texto </strong>";} //Fin de declaración de funciones
//valor a pasar a la función$mensaje= “Curso de PIV”;
// llamado de la función
mostrarContenido($mensaje);
?>
Ejemplo 2
<?php function operaciones($n1, $n2, $tipoOperacion) {
$respuesta = 0;if($tipoOperacion == "+") {
$ respuesta = $n1 + $n2;}else if($tipoOperacion == "-") {
$ respuesta = $n1 - $n2;}else if($tipoOperacion == "*") {
$ respuesta = $n1 * $n2;}
return $respuesta; // Valor que devuelve la función}
// Llamado de la función $dato1=8;
$dato2=5;$simbolo=”*”;$r = operaciones($dato1, $dato2,"$simbolo);echo $r . "<br>";
?>
Parámetros de una función
Existen dos formas de pasar parámetros a una función, por valor o por referencia.
Cuando pasamos una variable por valor a una función, esta nunca afectará el contenido
de la variable que paso el valor.
Mientras que si el paso de parámetros es por referencia, cualquier cambio que se
produzca en la función (con respecto a la variable declarada por referencia), afectará a
la variable que pasó el valor.
Para indicar que la variable se pasa por referencia se antepone el símbolo & a el nombre
de la variable en la definición de la función.
También ocurre que hay funciones donde nos interesa pasar un valor por defecto, estos
valores deben ser constantes y estos se declaran a la derecha de cualquier parámetro sin
valor.
Ejemplo
<?phpfunction sumar($x,$y){$x=$x+$y;return $x;
}Sa=3;$b=5;//caso de parámetro por valorecho sumar($a,$b); mostrará 8;
echo $a; // mostrará 3echo $b;// mostrará 5//caso de parámetro por referenciaecho sumar(&$a,$b); mostrará 8;echo $a; // mostrará 8echo $b;// mostrará 5
¿>
Ejemplo de paso de parámetro por defecto
<?phpfunction sumar($y, $x=2){$x=$x+$y;return $x;
}
Variables estáticas y globales
Las variables estáticas (static) se definen dentro de una función, mientras que las
variables globales (global) no se pueden declarar en una función; lo que se hace es
llamar a una variable que ya ha sido declarada (var nombreVariable), tomando el valor
que tenga en ese instante, pudiendo ser modificado en la función.
Ejemplo Variables static
<?phpfunction contador( ){static $count=0;return $count;
}echo contador().”<br>”; //Muestra 1echo contador().”<br>”; //Muestra 2echo contador().”<br>”; //Muestra 3
?>
Ejemplo de variables global<?php
var $valor=1;function mostrar( ){
global Svalor;echo $valor.”<br>”; //Muestra el valor de $valor$valor+;=1
}echo mostrar().”<br>”; //Muestra 1echo mostrar().”<br>”; //Muestra 2$valor=7;echo mostrar().”<br>”; //Muestra 7echo mostrar().”<br>”; //Muestra 8
?>
Funciones para ahorrar código
Generalmente los script dentro de un programa tienen partes de código que se repiten,
existen unas funciones que permiten llamar a los archivos donde se encuentran
almacenadas las funciones que se utilizarán dentro de un script php.
Estas funciones son:
include()
//incluye el fichero functions.php
include("functions.php");
Esta función nos permite incluir el archivo tantas veces como lo pidamos, sin importar
que esté incluido con anterioridad o no, simplemente evalúa el archivo y lo incluye en
nuestro documento. En caso de que el archivo no exista, nos devolverá un warning pero
el script continuará ejecutándose.
include_once():
//evalúa si functions.php está incluido, si no lo está lo incluye
include_once("functions.php");
La diferencia respecto a la función include() y tal y como muestra su nombre, evaluará
si el archivo ya ha sido incluido y si es así, no volverá a incluirlo, es decir, se incluye
una única vez. En el caso de error por no encontrar el archivo se comporta igual que
include().
require():
//incluye y obliga a que functions.php esté incluido
require("functions.php");
Posee el mismo comportamiento que include(), la única diferencia reside en el caso de
error, pues cuando usamos require(), si el archivo no existe lanza un error fatal que para
la ejecución del script.
require_once():
//evalúa y obliga a estar incluido, si lo está, no hace nada
require_once("functions.php");
Al igual que ocurre entre include() y include_once(), el comportamiento de
require_once() es el mismo que el de require(), tan sólo que el primero evalúa si el
archivo ya ha sido incluido y si es así, no vuelve a incluirlo de nuevo. El tratamiento del
error es igual al que realiza require().
FILTROS PARA VALIDACIÓN
filter_var($variable, TipoDeFiltro,$options);
TIPODEFILTRO BANDERAS DESCRIPCIÓN
FILTER_VALIDATE_INTFILTER_FLAG_ALLOW_OCTALFILTER_FLAG_ALLOW_HEX
Valida un valor como integer, opcionalmente desde el rango especificado. min_range: Especifica el mínimo entero permitido. max_range: Especifica el máximo entero permitido
FILTER_VALIDATE_FLOAT FILTER_FLAG_ALLOW_THOUSAND Valida si el valor it float un.
FILTER_VALIDATE_BOOLEAN FILTER_NULL_ON_FAILURE
Devuelve TRUE para "1", "true", "on" y "yes". Devuelve FALSE en caso contrario..
Si FILTER_NULL_ON_FAILURE está declarado, se devolverá FALSE sólo para "0", "false", "off", "no", y "", y NULL para cualquier valor no booleano.
FILTER_VALIDATE_EMAIL
Valida Una Dirección de Correo electrónico.En general se valildan Direcciones de Correo electrónico con la sintaxis de RFC 822, con La Excepción de no admitir el plegamiento de comentarios y Espacios en blanco.
FILTER_VALIDATE_URLFILTER_FLAG_PATH_REQUIREDFILTER_FLAG_QUERY_REQUIRED
Valida si su valor es una URL (de acuerdo con» http://www.faqs.org/rfcs/rfc2396 ), opcionalmente con componentes necesarios. Se ha de tener cuidado ya que una URL válida podría no especificar el protocolo HTTP http://, por lo que podrían ser necesarias validaciones posteriores para determinar que la URL utiliza un protocolo esperado, p.ej., ssh:// o mailto:. Nótese que esta función sólo buscará para ser validadas URLs ASCII; los nombres de dominio internacionales (que contienen no-ASCII caracteres) fallarán en la validación.
FILTER_VALIDATE_IP
FILTER_FLAG_IPV4FILTER_FLAG_IPV6FILTER_FLAG_NO_PRIV_RANGEFILTER_FLAG_NO_RES_RANGE
Valida si es valor es una dirección IP, opcionalmente se puede indicar que sea sólo IPv4 o IPv6 o que no sea de rangos privados o reservados.
FILTROS DE SANEAMIENTOID Nombre Banderas Descripción
FILTER_SANITIZE_EMAIL "email" Elimina todos los caracteres menos letras, dígitos y !#$%&'*+-/=?^_`{|}~@.[].
FILTER_SANITIZE_ENCODED "encoded"
FILTER_FLAG_STRIP_LOWFILTER_FLAG_STRIP_HIGHFILTER_FLAG_ENCODE_LOWFILTER_FLAG_ENCODE_HIGH
String URL-encode, opcionalmente elimina o codifica caracteres especiales.
FILTER_SANITIZE_MAGIC_QUOTES "magic_quotes" Aplica addslashes().
FILTER_SANITIZE_NUMBER_FLOAT "number_float"FILTER_FLAG_ALLOW_FRACTIONFILTER_FLAG_ALLOW_THOUSANDFILTER_FLAG_ALLOW_SCIENTIFIC
Elimina todos los caracteres a excepción de los dígitos, +- y, opcionalmente, .,eE.
FILTER_SANITIZE_NUMBER_INT "number_int" Elimina todos los caracteres excepto dígitos y los signos de suma y resta.
FILTER_SANITIZE_SPECIAL_CHARS "special_chars"FILTER_FLAG_STRIP_LOWFILTER_FLAG_STRIP_HIGHFILTER_FLAG_ENCODE_HIGH
Escapa caracteres HTML '"<>& y caracteres con valores ASCII menores que 32, opcionalmente elimina o codifica caracteres especiales.
FILTER_SANITIZE_FULL_SPECIAL_CHARS "full_special_chars" FILTER_FLAG_NO_ENCODE_QUOTES,
Equivalente a llamar a htmlspecialchars() con ENT_QUOTES establecido. Las comillas de codificación pueden ser desactivadas mediante el establecimiento de FILTER_FLAG_NO_ENCODE_QUOTES. Al igual que html specialchars(), este filtro tiene en cuenta el default_charset y si en una secuencia de bytes se detecta que contiene un carácter no válido en el conjunto de caracteres actual entonces el string completo es rechazado lo que resulta en un string de longitud 0. Cuando se utiliza este filtro como un filtro predeterminado, vea la advertencia de abajo sobre establecer las banderas predeterminadas a 0 .
FILTER_SANITIZE_STRING "string" FILTER_FLAG_NO_ENCODE_QUOTESFILTER_FLAG_STRIP_LOWFILTER_FLAG_STRIP_HIGH
Elimina etiquetas, opcionalmente elimina o codifica caracteres especiales.
ID Nombre Banderas DescripciónFILTER_FLAG_ENCODE_LOWFILTER_FLAG_ENCODE_HIGHFILTER_FLAG_ENCODE_AMP
FILTER_SANITIZE_STRIPPED "stripped" Alias del filtro "string".
FILTER_SANITIZE_URL "url" Elimina todos los caracteres excepto letras, dígitos y $-_.+!*'(),{}|\\^~[]`<>#%";/?:@&=.
FILTER_UNSAFE_RAW "unsafe_raw"
FILTER_FLAG_STRIP_LOWFILTER_FLAG_STRIP_HIGHFILTER_FLAG_ENCODE_LOWFILTER_FLAG_ENCODE_HIGHFILTER_FLAG_ENCODE_AMP
No hace nada, opcionalmente elimina o codifica caracteres especiales.
Otra manera de Filtrar el dato que ingresa del formulario es creando funciones que
eviten los datos errados-
1)Validar Campo numérico
función empty()
Bool empty (mixed $var)
Determina si una variable es considerada vacía. Una variable se considera vacía si no
existe si su valor es igual a FALSE. empty() no genera una advertencia si la variable no
existe; de otro modo devuelve TRUE
Las siguientes expresiones son consideradas como vacías:
"" (una cadena vacía)
0 (0 como un integer)
0.0 (0 como un float)
"0" (0 como un string)
NULL
FALSE
array() (un array vacío)
$var; (una variable declarada, pero sin un valor)
función ctype_digit()
bool ctype_digit (string $text)
Verifica si todos los caracteres en la string entregada, text, son numéricos.
Devuelve TRUE si cada caracter del texto es un dígito decimal, o FALSE de lo
contrario.
<?php$dato_string = '42';$integer = 42;ctype_digit($ato_string); // truectype_digit($integer); // false (ASCII 42 es el caracter *)
?>Nota:
Esta función espera un string para ser útil, por ejemplo si pasamos un integer no puede
devolver el resultado esperado. Sin embargo, nótese también los formularios HTML
resultarán en strings numéricos y no en integers. Ver también la sección del
manual tipos.
Si se proporciona un integer entre -128 y 255 inclusive, se interpreta como el valor
ASCII de un simple caráter (a los valores negativos se le añade 256 para permitir
caracteres en el rango ASCII Extendido). Cualquier otro entero se interpreta como una
cadena que contiene los dígitos decimales del entero.
Ejemplo: validar campo numerico
<?phpfunction valorEntero($dato){
if(empty($dato)){ return false; //campo vacio
}else{ if(ctype_digit($valor)){
return false; //si es un numero}
else{return true; //error no es número
}}
}?>
2) Validar campo Alfabético
<?phpfunction valorAlfabetico($dato){ $valores_alfabeticos=’/ ^[A-Z üÜáéíóúÁÉÍÓÚñÑ]{1,25}/i’;
if(empty($dato)){ return false; //campo vacio
}else{ if(preg_match($valores_alfabeticos ,$dato)){
return false; //Campo permitido}
else{return true; //error uno de los caracteres no pertenece a la expresión
permitida}
}}?>
Funcion preg_match()
Realiza una comparación con una expresión regular
Sintaxis
entero preg_match (exp_regular , cadena [, coincidencias[, flags [, comienzo ]]])
Parámetros:
entero: La función devuelve un número entero. El valor será ‘1’ en caso de
coincidencia, ‘0’ si no la hay, también puede devolver FALSE si hay algún error en la
función.
exp_regular (Obligatorio): Expresión regular que usaremos para la
comparación.
cadena (Obligatorio): Cadena de texto comparada.
coincidencias (Opcional): Es un array con información de las partes de la
cadena que coinciden con la expresión regular.
flags (Opcional): Si se pasa el parametro ‘PREG_OFFSET_CAPTURE’ en
el array de coincidencias también vendrá el índice de comienzo de cada coincidencia.
comienzo (Opcional): Posición de comienzo dentro de la ‘cadena‘ de la
comparación.
Hay varios caracteres que son delimitadores del patrón::
i: Indica que el patrón de búsqueda no diferencia entre mayúsculas y minúsculas.
b: Delimita el final de la condición estricta de un patrón, es decir, sin
comparamos ‘/compara/b’ con ‘/comparador/’ la búsqueda dará FALSE.
Función isset()
La función isset() nos permite comprobar si una variable está definida, devolviendo true
si lo estuviese. es decir si la variable fué instanciada previamente utilizada o separada
su espacio en memoria (declarada).
Su uso más común es cuando queremos comprobar si estamos entrando por primera vez
a una pagina con un formulario o estamos entrando porque se presionó el botón de
SUBMIT y hay que verificar si los campos han sido rellenados correctamente. Otro uso
es para comprobar si existe una variable en $_SESSION .
Ejemplo:
<html><head><title>Funcion isset()</title></head><body> <form action="" method="POST" name="frmEnvio"> Nombre: <input type="text" name="nombre"><br /> <input type="submit" value="Enviar"> </form>
<?php if (isset($_POST['nombre'])) { echo "La variable $_POST['nombre'] existe, "; }?></body></html>
Ejemplo:Página que recibe un dato y si no se cumple devuelve automáticamente a la página de donde fue enviado
FORMULARIO
<HTML><HEAD> <TITLE>New Document</TITLE></HEAD><BODY><form method="POST" action="regresar.php"> <input type="text" name="valor"size="20"> <input type="submit" value="enviar"></form></BODY></HTML>
ARCHIVO QUE REGRSA EL RESULTADO (regresar.php)
<HTML><HEAD> <TITLE>New Document</TITLE></HEAD><BODY><?php include('funciones1.php'); $error=array(); if(validarEntero($valor)){ $error[]='Campo no valido'; } if(!$error){ header('Location:pruebaheader.htm'); exit; }
echo "El valor ingresado es correcto";
?></BODY></HTML>
ARCHIVO DE FUNCIONES (funciones1.php)
$valor=$_POST['valor']; function validarEntero($x){ if(filter_var($x,FILTER_VALIDATE_INT)===FALSE){ return false; }else { return true; } }