Vous êtes sur la page 1sur 22

UNIVERSITARIA DE COLOMBIA

TALLER DE PHP MYSQL

John Jairo Pea

Empresas y Negocios On-Line" y Diseo Web

QUE ES PHP
PHP (acrnimo recursivo de PHP: Hypertext Preprocessor) es un lenguaje de cdigo
abierto muy popular especialmente adecuado para el desarrollo web y que puede ser
incrustado en HTML
Lo que distingue a PHP de algo del lado del cliente como Javascript es que el cdigo es
ejecutado en el servidor, generando HTML y envindolo al cliente. El cliente recibir el
resultado de ejecutar el script, aunque no se sabr el cdigo subyacente que era. El
servidor web puede ser configurado incluso para que procese todos los ficheros HTML
con PHP, por lo que no hay manera de que los usuarios puedan saber qu se tiene
debajo de la manga.
Lo mejor de utilizar PHP es su extrema simplicidad para el principiante, pero a su vez
ofrece muchas caractersticas avanzadas para los programadores profesionales. No
sienta miedo de leer la larga lista de caractersticas de PHP. En unas pocas horas podr
empezar a escribir sus primeros scripts.

COMO SE DECLARAN VARIABLES EN PHP

Las variables en PHP empiezann con el signo de pesos ( $ )


Los nombres de las variables pueden contener letras, numeros o el guion bajo.
Los nombres de las variables no pueden empezar con un numero pero si por el
guion bajo ( _ ).
Ejemplo: Nombres de variables
$variable ;

// nombre correcto

$_variable ;

// nombre correcto

$5variable ;

// nombre incorrecto

$_5variable ;

// nombre correcto

Ejemplo: Declarar una variable


$texto = "variable de texto";
$num = 5;
$doble = 5.0021;
$valor = true;

// string

// integer
// double
// boleana

3.COMO ES ENVIAN DATOS EN


PHP
Mtodo GET y POST
Existen tres formas de dar valor a variables en PHP en pginas web. Formularios,
enlaces HTML y sesiones.
Formularios
La primera forma es crear un formulario, el cul utiliza los mtodos GET y POST.
$_GET y $_POST son dos de las variables superglobales que vimos antes. Por
tener mbito global, los valores que se incluyan mediante estos dos mtodos
estarn disponibles en la pgina siguiente. Mediante estos mtodos podemos
pasar determinados valores de una pagina a otra.
El mtodo que se desee usar se indica en la propiedad "Method", y la pgina a la
cual deseo enviar la informacin se indica en la propiedad "Action" del formulario.
Es importante recordar que $_GET y $_POST son arreglos que tienen posiciones
asociativas, es decir, cada posicin en el arreglo tiene un nombre, y ese nombre
es el mismo que tiene cada campo del formulario.

4.PARA QUE SIRVEN EL METODO


GET
Mtodo GET
Este mtodo envia las variables dentro de la propia URL (direccin) de la pgina,
concatenadas(unidas) por ampertands(&) quedando algo as:
1http://www.mipagina.com/index.php?page=mia&variable2=valor2&variable3=v

5.PARA QUE SIRVEN EL METO


POST.
Mtodo POST
Este mtodo slo se puede usar con formularios, y la informacin no se enva por
la URL sino que es invisible al usuario (eso en teora porque usando firebug
podramos
ver
que
se
enva
en
realidad).
Para
qu
sirve
POST?
pues para enviar grandes campos de texto, subir imgenes, para no distorcionar
nuestra URL amigable con un coleccin de variables.
Cmo
Pues as:

las

1<form name="miformulario" action="mipagina.php" method="POST">


2 <input
type="text"
size="20"
name="mivariable1">
3</form>

envo?

6. CREACION BASE DE DATOS


CON MYSQL
Ya tengo creada mi base de datos - miweb - usando phpMyAdmin

El siguiente paso va a ser crear un usuario para poder crear los diferentes objetos que
necesitemos como tablas, ndices, etc. con nuestra base de datos seleccionada
pinchamos sobre - Privilegios -, aparecer una lista de usuarios que ya existen en nuestra
base de datos, como podis ver en la imagen, para crear un nuevo usuario pinchamos

sobre - Agregar un nuevo usuario -

Aparece la pgina siguiente para que introduzcamos los valores para nuestro nuevo
usuario, en nombre de usuario introducimos por ejemplo - user_miweb -, una password, la
volvemos a escribir y por ltimo los privilegios que va a tener nuestro usuario, para los
que empezis con MySQL os recomiendo que marquis - Grant all privileges on database
" miweb " - para que no os metis en errores continuos de - El usuario miweb no tiene
privilegio para esto o lo otro -, sino podis marcar los privilegios que queris en el cuadro Privilegios globales - , pulsamos el botn - Continuar Ya tenemos creado con phpMyAdmin nuestro nuevo usuario para la base de datos
MySQL y con los privilegios que hayamos decidido, en este ejemplo, el usuario que
hemos creado tendr todos los privilegios.

7.CREACION
MYSQL

DE

TABLAS

COM

Las bases de datos organizan la informacin en tablas. El primer paso que vamos
a dar es crear una tabla donde introducir algunos datos a modo de ejemplo.
Pinchamos sobre el nombre de la base de datos y la pantalla que se nos muestra
a continuacin nos permite crear una tabla en dicha base de datos (si no te
aparece esta opcin pulsa en la pestaa Operaciones). Nosotros vamos a
suponer que queremos almacenar el nombre, apellidos, direccin, telfono, edad y
altura de personas. Para ello crearemos una tabla que llamaremos <<agenda>>
con 6 columnas. Por tanto escribimos como nombre agenda, nmero de
columnas 6 y pulsamos continuar.

El siguiente paso es indicar los nombres y tipos de las columnas.

Los nombres de columnas que pondremos sern: nombre, apellidos, direccion,


telefono, edad y altura (escribimos estos nombres sin tildes). En tipo elegimos
VARCHAR para todos las columnas de tipo cadena de caracteres. El significado
de VARCHAR podemos verlo como texto de longitud variable. En vez de texto de
longitud variable podramos haber escogido otro tipo de datos como nmeros
enteros, nmeros autoincrementados de uno en uno para los campos tipo
identificador, fechas, etc. El campo edad lo ponemos de tipo nmero entero (INT),
mientras que el campo altura lo ponemos de tipo nmero decimal (FLOAT). De
momento no nos interesa saber ms y, por tanto, con las cuatro columnas tipo
VARCHAR, una columna tipo entero y otra columna tipo flotante, es ms que
suficiente para nuestro objetivo (en este curso no vamos a tratar MySQL ms que
en aspectos bsicos para comprender cmo interacciona con PHP). Como
longitud/valores para los tipos de datos VARCHAR pondremos 100 que ser la
longitud mxima en caracteres que podrn ocupar las columnas.

En resumen, al introducir estos datos hemos declarado que vamos a crear una
tabla con seis columnas, denominadas nombre, apellidos, direccion, telefono,
edad y altura. El nmero de filas no est determinado. Adems los datos que se
almacenen no podrn tener ms de 100 caracteres de longitud para los tipos
VARCHAR.
Para finalizar la creacin de la tabla 'agenda', pulsamos sobre Guardar y
finalizaremos el proceso. La tabla creada podemos verla como algo similar a esto:
nombre apellidos direccion

telefono edad altura

Como vemos ahora la tabla est vaca porque todava no hemos introducido
ningn dato.
Una vez creada la tabla 'agenda' introduciremos algunos datos de prueba. Para
ello, pulsaremos sobre el nombre de la tabla (fjate que en el lateral izquierdo de
phpMyAdmin existe una especie de navegador que nos permite elegir la tabla a la
que queremos ir). Una vez seleccionada una tabla, veremos que hay varias
pestaas (Estructura, SQL, Insertar, Exportar, Importar, Operaciones). Fjate en la
parte de arriba y vers que te indica el nombre de la base de datos y la tabla en
que te encuentras. Pulsaremos sobre la pestaa 'Insertar' para acceder a
introducir los datos para una fila de nuestra tabla.

Nos aparecer una imagen similar a la siguiente. Nos indica un nombre de


columna y los valores para una fila (nombre, apellidos, direccion, telefono).
Aadiremos algunos datos de prueba como: nombre Manuel Jess, apellidos
Lpez de la Rosa, direccin C/Juan Bautista N 3, telefono 658954875, edad

32 y altura 1.80. Aadiremos tambin otros datos como nombre Mara, apellidos
Manzano Cabezas, direccion C/Arco del triunfo N 7, telefono 695001002, edad
19 y altura 1.99.

Despus pulsaremos sobre continuar y ya tendremos los datos guardados en la


tabla. Ahora la tabla tendr este aspecto:
nombre

apellidos

Manuel
Jess

Lpez
Rosa

Mara

Manzano
Cabezas

de

la

direccion

telefono

edad

altura

C/Juan Bautista N
3

658954875 32

1.80

C/Arco del triunfo


N 7

695001002 19

1.99

8.SENTENCIAS SQL (INSER,


SELECT,UPDATE , DELETE, FROM,
WHERE)
Insert
La instruccin INSERT permite crear o insertar nuevos registros en una tabla,
veamos su sintaxis con un ejemplo prctico, la insercin de un registro en la tabla
ALUMNOS:
Cdigo: Seleccionar todo
insert into ALUMNOS (ID_ALUMNO , NOMBRE , APELLIDOS , F_NACIMIENTO)
values (1 , 'Pablo' , 'Hernandaz Mata' , '1995-03-14')

Donde cada dato de la lista VALUES se corresponde y se asigna a cada campo de la


tabla en el mismo orden de aparicin de la sentencia INSERT. Cabe mencionar que si la
clave primaria que identifica el registro que se pretende insertar ya la usa un registro
existente el SGBD rechazara la operacin y devolvera un error de clave primaria
duplicada.
As que cuando usted rellena un formulario en Internet por ejemplo, y los datos son
almacenados en una BD, en algn momento del proceso se realizar una instruccin
INSERT con los datos que usted a cumplimentado

SELECT nos permite consultar los datos almacenados en una tabla de


la base de datos.
El formato de la sentencia select es:

SELECT

[ALL
|
<nombre_campo>

DISTINCT
]
[{,<nombre_campo>}]

FROM
<nombre_tabla>|<nombre_vista>
[{,<nombre_tabla>|<nombre_vista>}]
[WHERE
<condicion>
[{
AND|OR
<condicion>}]]
[GROUP
BY
<nombre_campo>
[{,<nombre_campo
>}]]
[HAVING
<condicion>[{
AND|OR
<condicion>}]]
[ORDER BY <nombre_campo>|<indice_campo> [ASC | DESC]
[{,<nombre_campo>|<indice_campo> [ASC | DESC ]}]]

UPDATE

se utiliza para modificar valores en una tabla.

La sintaxis de SQL UPDATE es:


UPDATE
SET
columna1
=
WHERE columna3 = valor3

valor1,

columna2

nombre_tabla
=
valor2

La clusula SET establece los nuevos valores para las columnas indicadas.
La clusula WHERE sirve para seleccionar las filas que queremos modificar.
Ojo: Si omitimos la clusula WHERE, por defecto, modificar los valores en todas
las filas de la tabla.
Ejemplo del uso de SQL UPDATE
nombre

apellido1 apellido2

ANTONIO PEREZ GOMEZ


LUIS

LOPEZ PEREZ

ANTONIO GARCIA BENITO


PEDRO

RUIZ

GONZALEZ

DELETE A veces podemos desear deshacernos de los registros de una


tabla. Para ello, utilizamos el comando DELETE FROM. La sintaxis para esto es,
DELETE
WHERE "condicin";

FROM

"nombre_tabla"

Es ms fcil utilizar un ejemplo. Por ejemplo, digamos que actualmente tenemos la


siguiente tabla:
Tabla Store_Information
Store_Name Sales Txn_Date
Los Angeles 1500 05-Jan-1999
San Diego

250

07-Jan-1999

Los Angeles 300

08-Jan-1999

Boston

08-Jan-1999

700

y decidimos no mantener ninguna informacin sobre Los ngeles en esta tabla.


Para lograrlo, ingresamos el siguiente SQL:
DELETE
FROM
WHERE Store_Name = 'Los Angeles';

WHERE

Store_Information

se usa para extraer slo los registros que cumplan con una

condicin. Funciona como un filtro.


Sintaxis de la sentencia SQL WHERE
SELECT column_name,column_name
FROM table_name
WHERE column_name operator value;

FROM

Se utiliza para

realizar una operacin en una tablan especifica por

ejemplo
Select nombre FROM usuarios

9.CONEXIONES A BASE DE
DATOS MEDIANTE PHP
Conectarse a una base de datos MySql desde PHP es sencillo. En un pequeo
ejemplo vamos a ver cmo hacerlo.
1- Creamos un primer archivo llamado por ejemplo conexion.php.
2- Incluimos en conexion.php el siguiente cdigo.
1 <?
2 $link=mysql_connect("localhost", "usuario", "clave");
3 mysql_select_db("nombrebd",$link) OR DIE ("Error: No es posible establecer la conexin");
4 ?>

Localhost: Indca a donde se conecta con la DB. Si la conexin es en el mismo


servidor, este es el valor que debe ir. Si la conexin se da en otro servidor,
debemos incluir la Ip del servidor. En este ltimo caso, el servidor deber tener las
conexiones remotas abiertas.
Usuario: Es el usuario de la base de datos. En general lleva el siguiente formato
usuariocpanel_usuariodb
Clave: Es la clave que se corresponde con ese usuario.
Nombrebd: Se corresponde con el nombre de la base de datos.

3- Finalmente para incluir la conexin en cualquier archivo desde el que


querramos conectarnos, slo se debe incluir el siguiente cdigo.
1 <?
2 include("conexion.php");
3 ?>

10.OPERADORES LOGICOS EN
PHP
Nombre

Ejemplo

Mayor que

$a > $b

Resultado
true si $a es mayor que $b
false en caso contrario
true si $a es menor que $b

Menor que

$a < $b
false en caso contrario
true si $a es mayor o igual que $b

Mayor o igual que

$a >= $b
false en caso contrario
true si $a es menor o igual que $b

Menor o igual que

$a <= $b
false en caso contrario
$a <> $b
true si $a es diferente a $b

Diferente

false en caso contrario


$a != $b

Idntico o estrictamente igual

$a
$b

===

true si $a es igual a $b y son del mismo


tipo
false en caso contrario

No idntico o estrictamente
distinto

$a == $b

true si $a no es igual a $b o no son del


mismo tipo
false en caso contrario
true si $a es igual a $b

Igual

$a == $b
false en caso contrario

Los operadores lgicos, nos permiten crear condiciones para las distintas
estructuras en PHP, tanto en estructuras condicionales como en estructuras
repetitivas. Los operadores lgicos ms importantes son and (en espaol: y) y or
(en espaol: o)
Nombre

Ejemplo

Resultado
true si $a es true y $b es true

and && $a and $b


false en caso contrario
true si $a o $b es true, o ambos
or ||

$a or $b
false en caso contrario
true si $a o $b es true, pero no ambos

xor

$a xor $b
false en caso contrario
true si $a no es true

not !

!$a
false en caso contrario

Una condicin puede ser tan larga como se quiera o necesite y usar tantos
operadores lgicos como se quiera o necesiten. El uso de los parntesis otorgar
la prioridad de la ejecucin de unas operaciones y otras (como en matemticas).
Las expresiones donde se utilizan operadores lgicos y relacionales devuelven un
valor booleano, es decir, verdadero (true) o falso (false). Por ejemplo si $a = 7 y $b
= 5 la expresin $a < $b devuelve false (es falsa). Si $a = true y $b = false la
expresin $a && $b devuelve false (es falsa porque no se cumple que $a y $b
sean verdaderas). Si $a = true y $b = false la expresin $a || $b devuelve true
porque uno de los dos operandos es verdadero. Si $a = true la expresin !a
devuelve false (el opuesto o contrario).
El operador || se obtiene en la mayora de los teclados pulsando ALT GR + 1, es
decir, la tecla ALT GR y el nmero 1 simultneamente.
Los operadores && y || se llaman operadores en cortocircuito porque si no se
cumple la condicin de un trmino no se evala el resto de la operacin. Por
ejemplo: ($a == $b && $c != $d && $h >= $k) tiene tres evaluaciones: la primera
comprueba si la variable a es igual a b. Si no se cumple esta condicin, el
resultado de la expresin es falso y no se evalan las otras dos condiciones
posteriores.
En un caso como ( $a < $b || $c != $d || $h <= $k) se evala si a es menor que b.
Si se cumple esta condicin el resultado de la expresin es verdadero y no se
evalan las otras dos condiciones posteriores.
El operador ! recomendamos no usarlo hasta que se tenga una cierta destreza en
programacin. Una expresin como (!$esVisible) devuelve false si ($esVisible ==
true), o true si ($esVisible == false). En general existen expresiones equivalentes
que permiten evitar el uso de este operador cuando se desea.

OPERADOR DE NEGACIN APLICADO SOBRE NMEROS O TEXTO


Si $a = true su negacin !$a devuelve false. Pero qu ocurre si $a es un nmero
o un texto? Si $a es un nmero se considera que equivale a false si su valor
numrico es 0, o que equivale a true si su valor numrico es distinto de cero.
Seguidamente se aplica la negacin. Por tanto si $a = 7, a se considera

equivalente a true y !$a es false. Si $a = 0, a se considera equivalente a false y !$a


es true.
Para cadenas de texto, la cadena vaca se considera equivale a false y cualquier
otra cadena se considera que equivale a true. Si $texto1 = "" (cadena vaca)
entonces !$texto1 vale true.

ORDEN DE PRIORIDAD, PRELACIN O PRECEDENCIA


Los operadores lgicos y matemticos tienen un orden de prioridad o precedencia.
Este es un esquema general que indica el orden en que deben evaluarse en la
mayora de los lenguajes de programacin:

Una expresin como $A+$B == 8 && $A-$B == 1 siendo $A = 3 y $B = 5 supondr


que se evala primero $A+$B que vale 8, luego se evala $A-$B que vale -2.
Luego se evala si se cumple que la primera operacin es cierta y luego si la
segunda tambin es cierta, resultando que no, por lo que la expresin es falsa.

COMPARACIN
RELACIONALES

DE

CADENAS

DE

TEXTO

CON

OPERADORES

Dos cadenas de texto se pueden comparar resultando que se comparan letra a


letra por el valor del equivalente numrico de cada letra. Cada letra tiene un
nmero asociado: por ejemplo la a es el nmero 97, la b el 98, etc.
Si comparamos "avellana" < "sandia" obtenemos true.
Sin embargo, los cdigos numricos pueden generar resultados no previstos. Por
ejemplo, qu cdigo numrico es menor, el de la a el de la A? An ms, resulta
que todos los cdigos numricos de maysculas son menores que los de
minsculas, con lo cual podemos obtener que Zul < avellano devuelve true
(cosa que a priori nos resultar ciertamente extraa).

Para comparar cadenas en base a un orden alfabtico necesitaremos usar


entonces otras tcnicas que comentaremos ms adelante.

EJEMPLO
Escribe este cdigo en un editor como Notepad++ y gurdalo con un nombre de
archivo como ejemplo1.php. A continuacin, sube el fichero al servidor y visualiza
el resultado.
<?php
$a = 3;
$b = 9;
$result = ($a <= 3 and $b <> 9);
if ( $result == true) {
echo "Se cumple la condicin";
}else {
echo "No se cumple la condicin";
}
?>

11.METODOS PARA ENCRIPTAR LA


CONTRASEA EN PHP
Qu funcin hash debo usar?
Las funciones hash md5() y sha1() hasta hace poco fueron un estndar, pero por la
rapidez en la extraccin de datos por fuerza bruta, dictionary o rainbow tables ya no se
recomiendan para la codificacin de contraseas. El mismo creador de MD5 ha escrito en
su blog que la codificacin md5() no es segura y opten por algoritmos como SHA-2.
La funcin hash que utilizaremos ser crypt() que soporta de forma nativa varios
algoritmos. Por defecto usa la codificacin MD5 pero por razones de seguridad usaremos
Blowfish.
Verificando si mi versin de PHP soporta Blowfish
El algoritmo Blowfish est disponible a partir de la versin 5.3 de PHP. Si quieres
comprobar que tienes soporte para Blowfish puedes colocar este cdigo en un archivo
PHP:
<?php
if(defined("CRYPT_BLOWFISH") && CRYPT_BLOWFISH) {
echo "Wiii, tengo CRYPT_BLOWFISH!";
}
?>
Si podemos usar Blowfish pasaremos a codificar la contrasea, en el caso de que no,
tendremos que instalar la ltima versin de PHP.
Codificando la contrasea
Como deca antes, la funcin hash que utilizaremos para codificar nuestra contrasea
ser crypt(). Por defecto, crypt() usaba el algoritmo DES aunque en las ltimas versiones
de PHP paso a MD5.
crypt( string que queremos hacerle el hash, salt)
Para forzar que crypt() utilice el algoritmo Blowfish debemos colocar un salt especial, si la
funcin no reconoce el salt que escribimos, el hash resultante estar codificado en MD5.

El salt para Blowfish debe ser escrito de la siguiente manera: $2a$, $2x$ o $2y$ +
2 nmeros de iteracin entre 04 y 31 + 22 caracteres que pueden ser
./1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz.
Ejemplo: $2x$07$./f4af7kJi1jdaxlswE34$
Para que nuestra contrasea sea ms segura, vamos a crear una funcin que realice un
salt aleatorio. El valor que se generar aleatoriamente para cada hash sern los ltimos
22 caracteres.
function crypt_blowfish_bydinvaders($password, $digito = 7) {
$set_salt
'./1234567890ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz';

$salt = sprintf('$2a$%02d$', $digito);


for($i = 0; $i < 22; $i++)
{
$salt .= $set_salt[mt_rand(0, 22)];
}
return crypt($password, $salt);
}
Para crear el hash con la funcin que recin creamos solamente tenemos que escribirlo
de la siguiente manera
$password = crypt_blowfish_bydinvaders('stringdondeestaralacontrasea');
Y cmo compruebo la contrasea?
Cuando el usuario se registra se guarda en la base de datos su nombre de usuario y su
contrasea encriptada. Cuando ste va a loguearse completar el campo nombre de
usuario y contrasea, si el hash de esta contrasea ingresada en el formulario de login
coincide con el hash asociado al nombre de usuario guardado en la base de datos en el
momento del registro, el usuario iniciar sesin.
Con la funcin crypt() reconocemos que el hash en la base de datos fue creado con
Blowfish.
$passwordenBD
'$2a$07$yMoJrJpwEPrmVnZx4KIyNuOAiOMQksjkV1EW0YRgVe33eYe/yT60y';

if( crypt('micontrasea', $passwordenBD) == $passwordenBD) {

echo 'Es igual';


}
Qu es salt y para que sirve?
Salt en resumen sera una linea de texto que se aade en este caso a una
contrasea para que sea ms compleja de descifrar. Les dejo un ejemplo simple as les
queda ms grfico:
$salt = '34a@$#aA9823$';
$password = 'dinvaders1234';
$password = hash('sha256', $salt . $password);
El resultado sera un hash que contiene el salt que creamos ms la contrasea.

Vous aimerez peut-être aussi