Anda di halaman 1dari 58

Desarrollo de

Aplicaciones con

César Bustamante
Temario a desarrollar
ƒ Conceptos Iniciales
ƒ Software a usar
ƒ Variables y Arreglos
ƒ Funciones en PHP
ƒ Diagramación
ƒ Conectividad a Base de Datos
ƒ Productividad
ƒ Sistemas de Pago
ƒ Seguridad
Conceptos Iniciales
Software Libre

ƒ Su fundador: Richard Stallman


ƒ Es un asunto de Libertad
y no de Precio
ƒ Se refiere a la libertad de los usuarios
para ejecutar, distribuir, estudiar,
modificar y mejorar el software
Conceptos Iniciales
Que es PHP?

ƒ Su creador: Rasmus Lerdorf


ƒ Rasmus llamó a su script
Personal Home Page
ƒ PHP es un lenguaje de alto nivel que se
inserta en los documentos HTML, las
cuales se ejecutan en el Servidor y
proporcionan caracteristicas dinámicas a
una pagina web
Conceptos Iniciales
Caracteristicas de PHP

ƒ Multiplataforma
ƒ Un solo lenguaje: PHP
ƒ Se conecta a todos los
Servidores de Base de Datos
ƒ Diseño modular de facil aprendizaje
ƒ Licencia abierta
Conceptos Iniciales
PHP el 4º lenguaje más popular

ƒ Los buscadores Google, Yahoo y MSN


han sido utilizados para realizar las
valoraciones.
1. C ha subido un poco en popularidad
2. Java ha bajado
3. C++ se mantiene en su puesto
4. PHP ha subido bastante
5. Visual Basic .Net se mantiene
Conceptos Iniciales
Extensión de los Archivos

ƒ .php3 Indica código PHP 3.x.


ƒ .php4 Indica código PHP 4.x.

ƒ en la actualidad solo .php


ƒ .phtml Actualmente en desuso
Software a usar
WAMP, LAMP, XAMP

ƒ Fuente original:
ƒ Apache.org
ƒ Php.net
ƒ Mysql.com
ƒ Sourceforge.org
ƒ Paquetes de Instalación
ƒ XAMPP, FoxServ, PHPTriad, AppServ, EasyPHP
ƒ Todas suelen incluir Apache, PHP, MySQL,
phpMyAdmin
Software a usar
XAMPP

www.ApacheFriends.org
http://localhost
Software a usar
Herramientas de Adm de Base de Datos

ƒ phpMyAdmin, aplicación basada en


PHP
ƒ DBManager, para Windows
ƒ MySQL Control Center
ƒ eSKUeL
ƒ Aqua Data Studio
ƒ Navicat
Software a usar
Herramientas de Adm de Base de Datos
Software a usar
Modelamiento de Base de Datos

ƒ DBDesigner
Software a usar
Editores

ƒ EditPlus
ƒ Rapid PHP
ƒ PHP Designer
ƒ PHP Expert Editor
ƒ Macromedia Dreamweaver
Variables y Arreglos
Delimitadores

<? echo ‘Saludos'; ?>

<?php echo ‘Bienvenidos'; ?>


Variables y Arreglos
Fin de línea

<? echo 'Bienvenidos


hoy es ' .date(“Y-m-d”);
echo “Estamos revisando PHP” ;
?>

<? echo 'Bienvenidos hoy es ' .date(“Y-m-d”) ;


echo “Estamos revisando PHP” ;
?>
Variables y Arreglos
Comentarios

<?
/* Comentarios estilo C.
* Pueden extenderse durante varias líneas.
*/

// Comentarios estilo C++. Hasta fin de línea.

# Comentarios estilo Perl. Hasta fin de línea.


?>
Variables y Arreglos
Declaración y Uso

No hace falta declararlas


Llevan delante el signo dólar $

<?
$var_1 = 123;
$var_2 = ’hola’;
$var_3 = $var_1 * 2;
?>
Variables y Arreglos
Conversión automática

PHP hace la conversión automática

<?
$importe = 123;
$igv = ’0.19’;
$total = $importe * $igv ;
echo “Impuesto: ”.$total;
?>
Variables y Arreglos
Ambito

ƒ Las variables conservan su valor dentro de la


página donde se las definio.
ƒ Las variables conservan su valor dentro de la
función donde se las definio.
ƒ Para enviar los valores de una página a otra,
se usa los siguientes métodos:
ƒ Envio de la valores mediante un Formulario
ƒ Envio de valores como Parámetros por la URL
ƒ Usando Variables de Sesión
Variables y Arreglos
Tipos

ƒ Numerico
ƒ $edad = 17;
ƒ Carácter
ƒ $nombre = “Cesar”;
ƒ Fecha
ƒ $fecha = “2007-07-15”;
ƒ Lógico
ƒ $casado = 1;
Variables y Arreglos
Arreglos

ƒ Arreglos por Indice


ƒ Arreglos Asociativos
Variables y Arreglos
Arreglos por Indice

ƒ Definición
$distrito[0] = “Lince”;
$distrito[1] = “Miraflores”;
$distrito[2] = “San Isidro”;
ƒ Otra forma
$distrito = array(“Lince”,”Miraflores”,
”San Isidro”);
Variables y Arreglos
Arreglos por Indice

ƒ Lectura del arreglos


<?
$distrito = array(“Lince”,”Miraflores”,
”San Isidro”);
echo $distrito[1]; // Imprime Miraflores
foreach($distrito as $k){
echo $k; // Imprimr todos los distritos
}
?>
Variables y Arreglos
Arreglos Asociativos

ƒ Definición
$articulo[“codigo”] = “A01”;
$articulo[“descripcion”] = “Palm”;
$articulo[“precio”] = 680;

ƒ Impresión
foreach( $articulo as $k => $v){
echo “$k : $v ”;
echo “<BR>”;
}
Variables y Arreglos
Operadores Aritméticos

Operación Nombre Resultado


$a + $b Suma Suma de $a y $b.
$a - $b Resta Diferencia entre $a y $b.
$a * $b Multiplicación Producto de $a y $b.
$a / $b División Cociente de $a y $b.
$a % $b Módulo Resto de la operación $a/$b.
Variables y Arreglos
Operadores Aritméticos

OperaciónNombre Resultado
Incrementa $a en 1, y
++$a Pre-incremento
devuelve $a (incrementado).
Devuelve $a, y después lo
$a++ Post-incremento
incrementa en 1.
Decrementa $a en 1, y
--$a Pre-decremento
después lo devuelve.
Devuelve $a, y después lo
$a-- Post-decremento
incrementa en 1.
Variables y Arreglos
Operadores Lógicos

Operación Nombre Resultado


$a and $b Y Cierto si $a y $b son ciertos.
$a or $b O Cierto si $a o $b es cierto.
Cierto si $a o $b es cierto, pero no
$a xor $b O Exclusivo.
ambos.
! $a No Cierto si $a es falso.
$a && $b Y Cierto si $a y $b son ciertos.
$a || $b O Cierto si $a o $b es cierto.
Variables y Arreglos
Operadores Asignación y Comparación

OperaciónNombre Resultado
Asigna el valor de una variable o
$a = $b Asignación expresión del segundo término a la
variable del primer término.
Compara si el valor de los dos
$a == $b Igualdad
operandos es el mismo.
Compara si el valor es el mismo y,
$a === $b Identidad
además, el tipo coincide.
Estructuras de Control
If… else

if (expresión) {
if (expresión) { comandos_cierto
comandos } else {
}
comandos_falso
}
Estructuras de Control
for…

for (expresión1; expresión2; expresión3) {


comandos
}
Funciones en PHP
Estructura

function nombre ($arg_1, $arg_2, … ) {


comandos
return $salida;
}

echo nombre(27,”dato”);
Diagramación
ƒ Puede usar el comando Include
Include “archivo.php”;
ƒ Otra forma es mediante el uso de iframe
<iframe name=“contenido”
src = “archivo.php”
width = 500
height = 300
marginwidth = 0
marginheight = 0
frameborder = 0
scrolling = “auto”>
</iframe>
Diagramación
Envio de valores por FORM
datos.htm

<form action=“procesa.php" method="post">


Producto <input type="text" name="item" size="20"><br>
Unidades <input type="text" name="cantidad" size="20"><br>
<input type="submit" value="Agregar a la canasta"><br>
</form>

procesa.php

<?
$xitem = $_POST[“item”];
$xcant = $_POST[“cantidad”];
echo “Descripcion: $xitem, cantidad: $xcant”;
?>
Diagramación
Envio de valores por URL
datos.php

<form action=“procesa.php" method=“GET">


Codigo <input type="text" name=“codigo"><br>
<input type="submit" value="Aceptar"><br>
</form>

procesa.php

<?
$xcod = $_GET[“codigo”];
echo “Codigo a buscar: $xcod”;
?>
localiza.php
buscar.php
<A HREF=“procesa.php?codigo=333”></A>
<? header(“location:procesa.php?codigo=777”) ?>
Conectividad a BD
Conexión y Desconexion

<?
$cn = mysql_connect (”localhost", ”root", ”mysql");
if (!$cn) {
echo "No se pudo conectar";
}else{
echo "Conexión realizada";
}
mysql_close ($cn);
?>
Conectividad a BD
Selección de la BD

<?
$cn = mysql_connect (”localhost", ”root", ”mysql");
if (!$cn) {
echo "No se pudo conectar";
}else{
echo "Conexión realizada";
mysql_select_db(“ventas”);
}
mysql_close ($cn);
?>
Conectividad a BD
Generación de Consultas

<?
$cn = mysql_connect (”localhost", ”root", ”mysql");
mysql_select_db(“ventas”);
$sql = "SELECT descripcion, precio FROM articulo";
$rsArticulo = mysql_query($sql, $cn);
echo mysql_result($rsArticulo,2,”descripcion”);
mysql_close ($cn);
?>
Conectividad a BD
Operaciones con Consultas

<?
$cn = mysql_connect (”localhost", ”root", ”mysql");
mysql_select_db(“ventas”);
$sql = "SELECT descripcion, precio FROM articulo";
$rsArticulo = mysql_query($sql, $cn);
$n = mysql_num_rows($rsArticulo);
for($k=0;$k<$n;$k++){
echo mysql_result($rsArticulo,$k,”descripcion”);
}
mysql_close ($cn);
?>
Conectividad a BD
Operaciones con Consultas

$cn = mysql_connect (”localhost", ”root", ”mysql");


mysql_select_db(“ventas”);
$sql = "SELECT descripcion, precio FROM articulo";
$rsArticulo = mysql_query($sql, $cn);
while($campo=mysql_fetch_array($rsArticulo)) {
echo campo[“descripcion”];
echo campo[“precio”];
}
mysql_close ($cn);
Control de Sesiones
Para que usar?

ƒ Para controlar el acceso individual a una


página o grupo de páginas determinado,
mediante la asignación de un
identificador único para cada usuario
ƒ Para el almacenamiento de datos
globales
Control de Sesiones
El identificador de Sesión

<?
session_start();
echo session_id();
?>
Control de Sesiones
Variables de Sesión

<?
session_register(“variable”);
$variable = “valor”;
echo session_destroy($variable);
?>
Productividad
Desarrollo del Carrito de Compras
Productividad
Desarrollo del Carrito de Compras

carritobasico.php

<? session_register('miCanasta'); ?>


<form action="carritobasicoagregar.php" method="post">
Producto <input type="text" name="item" size="20"><br>
Unidades <input type="text" name="cantidad" size="20"><br>
<input type="submit" value="Agregar a la canasta"><br>
</form>
Productividad
Desarrollo del Carrito de Compras
carritobasicoagregar.php

<? session_start();
if (!isset($miCanasta)){
$miCanasta[$item]=$cantidad;
}else{
foreach($miCanasta as $k => $v){
if ($item==$k){
$miCanasta[$k]+=$cantidad;
$encontrado=1;
}
}
if (!$encontrado) $miCanasta[$item]=$cantidad;
}
include “carritobasicover.php”;
?>
<A HREF="carritobasico.php">Volver</A>
Productividad
Desarrollo del Carrito de Compras

carritobasicover.php

<? session_start();
if (isset($miCanasta)){
echo "<H2>El contenido de la cesta de la compra es: </H2>";
foreach($miCanasta as $k => $v){
echo "Artículo: ".$k."<br>";
echo "Unidades: ".$v."<br><br>";
}
}
?>
Seguridad
Encriptación con MD5 en PHP

ƒ Se usa para encriptar las contraseñas al


momento de guardarse en una tabla
ƒ En PHP se utiliza la función MD5
(Message Digest 5), que es una función
hash irreversible (de un sólo sentido) , es
decir, encripta el password tecleado por
el usuario y es imposible que partiendo
desde la cadena encriptada se vuelva a
la contraseña origen.
Seguridad
Encriptación con MD5 en PHP

ƒ Cuando un usuario quiere acceder, habrá que


realizar una comparación entre el password
que introduce encriptado en MD5, y lo que
tenemos en la tabla, (que es la contraseña
encriptada en MD5), si coincide se le permite
el acceso, si no, se rechaza.
ƒ Hay que tener en cuenta que esto no es 100%
seguro, puesto que la contraseña se encripta
en el servidor, entonces al enviar la contraseña
desde el cliente al servidor podría ser
interceptada.
Seguridad
Encriptación con MD5 en PHP

ƒ Cuando un usuario quiere acceder, habrá que


realizar una comparación entre el password
que introduce encriptado en MD5, y lo que
tenemos en la tabla, (que es la contraseña
encriptada en MD5), si coincide se le permite
el acceso, si no, se rechaza.
ƒ Hay que tener en cuenta que esto no es 100%
seguro, puesto que la contraseña se encripta
en el servidor, entonces al enviar la contraseña
desde el cliente al servidor podría ser
interceptada.
Seguridad
SSL

ƒ Cuando un usuario quiere acceder, habrá que


realizar una comparación entre el password
que introduce encriptado en MD5, y lo que
tenemos en la tabla, (que es la contraseña
encriptada en MD5), si coincide se le permite
el acceso, si no, se rechaza.
ƒ Hay que tener en cuenta que esto no es 100%
seguro, puesto que la contraseña se encripta
en el servidor, entonces al enviar la contraseña
desde el cliente al servidor podría ser
interceptada.
Sistemas de Pago
Soluciones

ƒ Soluciones locales
ƒ VisaNet Peru
ƒ Soluciones extranjeras
ƒ CCNow.com
ƒ 2CheckOut.com
ƒ iBill.com
ƒ MultiCards.com
Sistemas de Pago
Flujo de Transacción de Pago

El comprador visita la tienda virtual. Selecciona los productos que desea y


los añade al carro de compra virtual. Una vez que concluye su compra, inicia
el proceso de pago pulsando el botón correspondiente.
Sistemas de Pago
Flujo de Transacción de Pago

El sistema de pago realiza las siguientes operaciones:


a) Genera un identificador que es específico de esa transacción.
b) Archiva para el vendedor los datos del pedido: la lista de productos y la
forma y dirección para el envío, junto con el identificador.
c) Envía al banco los datos esenciales de la transacción: la identidad del
vendedor, el identificador de la transacción y su importe
Sistemas de Pago
Flujo de Transacción de Pago

En la pantalla del comprador aparece un formulario web que ya no está alojado en


el servidor del vendedor sino en el del banco, que es un servidor con seguridad
tipo HTTPS o SSL. En ese formulario consta el importe total de la operación y se
identifica al vendedor. El comprador introduce en el formulario del banco los datos
de su tarjeta de crédito. Los datos viajan encriptados al banco
Sistemas de Pago
Flujo de Transacción de Pago

El banco comprueba la validez de la tarjeta. Una vez comprobado, realiza los


cargos y abonos correspondientes y comunica al vendedor que la transacción
correspondiente al identificador es válida
Sistemas de Pago
Flujo de Transacción de Pago

El vendedor procede al envío de la compra


Tecnologías
Complementarias
ƒ XML
ƒ Aplicaciones dinámicas en Flash
usando ActionScript, XML y PHP
ƒ AJAX
César Bustamante
cbustamante@librosdigitales.net