ACCESO A BASES DE DATOS ORACLE CON PHP

Slides:



Advertisements
Presentaciones similares
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Advertisements

Curso de PHP Tema 5: Sesiones.
Diseño de Bases de Datos
Acceso a Bases de Datos con Java
Fernando Alonso Blázquez Servlets con acceso a Bases de Datos 29 de Abril de 2004.
Desarrollo de sitios web con PHP y MySQL
Lenguaje PHP Capítulo 4.
PHP: Acceso a Bases de Datos
Acceso a bases de datos con MySQL y ODBC desde PHP
Fernando Velasco
Acceso a bases de datos MySQL en PHP
Desarrollo de Aplicaciones para Internet
Desarrollo de Aplicaciones para Internet
Tema 2: Lenguaje PHP básico
Lenguaje de consulta de Hibernate
Francisco Moreno Bases de Datos II Universidad Nacional
PL/SQL Francisco Moreno Universidad Nacional.
Desarrollo de sitios web con PHP y MySQL
Cursores Implícitos y Explícitos
4.3. Privilegios de usuarios
TECNOLOGÍA IDC Internet Database Connector Trinitario Gómez López.
Práctica Profesional MySql - PHP. IS 185 Profesor: MOLINA, Carlos PHP acceso a MySQL Algunas funciones que provee PHP para el manejo de bases de datos.
Antonio Becerra Terón Departamento de Lenguajes y Computación Universidad de Almería Desarrollo de aplicaciones PHP para bases de datos.
M.I. María Luisa González Ramírez Servlets y JSP.
TALLER DE DESARROLLO WEB PÁGINAS DINÁMICAS CON PHP.
Tema 3 J2EE Java Database Connectivity Temas Selectos de Cómputo Grupo 912.
Taller 5: Trabajo con Plantillas y uso de tecnología Ajax.
Ing. Eddye Sánchez Castillo. Las principales temas de este capitulo son:  Conectarse al Servidor MySql  Conectarse a la Base de Datos  Enviar Consultas.
BASE DE DATOS DISTRIBUIDAS
Desarrollo de sitios web con PHP y MySQL Tema 5: Sesiones José Mariano González Romano
CURSORES Preparó: Ismael Castañeda Fuentes Fuentes: Manuales Sybase
ADMINISTRACION DE REDES SECUNECIA DE COMANDOS EN SITIOS CRUZADOS(XSS) DIEGO ALEXANDER MADRID DUQUE GABRIEL ANDRES AGUIRRE JARAMILLO INSTITUTO TECNOLOGICO.
Bases de Datos Relacionales
Tema 1: Lenguaje PHP básico Ing. Tulio Nel Benavides Peña
D Copyright © 2010, Oracle y/o sus filiales. Todos los derechos reservados. Uso de SQL*Plus.
PL/SQL Francisco Moreno Universidad Nacional.
Ing. Ricardo Carlos Inquilla Quispe
PAGINAS DINAMICAS PHP. INTRODUCCION PHP (Profesional Home Pages - Páginas Personales Profesionales) es un lenguaje para la creación de páginas web incrustado.
Pulse para añadir texto Desarrollo de sitios web con PHP y MySQL Tema 2: Lenguaje PHP básico Elaborado por: José Mariano González Romano
Introducción a las redes e Internet Unidad 7: Páginas web dinámicas Clase 1 Unidad 7: Páginas web dinámicas Clase 1.
Bases de datos en la Web n Las bases de datos permiten almacenar de una forma estructurada y eficiente toda la información de un sitio web n Ventajas –Proporcionar.
Aprenda MySQL en 120 minutos Tutorial. Dirigido a...
Diseñando la arquitectura de aplicaciones empresariales. Acceso al SQL Server.- Autenticación de usuario:
Modos de Conexión a BD DATOS DE IDENTIFICACIÓN DEL ALUMNO.
Fernando Alonso Nicolás Serrano Acceso a Bases de Datos con Java JDBC 01 de Abril de 2008.
Auditoría del Sistema ¿Qué es una Auditoría de una BD? Controlar y registrar las acciones de determinados usuarios de la BD. A nivel SO vs a nivel del.
JDBC Java Database Connectivity CC52N - Computación para el trabajo grupal Profesor: Nélson Baloian Por: Edgard Pineda.
REFERENCIA DIRECTA INSEGURA A OBJETOS
Introducción a ataques de tipo inyección: Inyección SQL
Desarrollo de sitios web con PHP y MySQL Tema 4: Acceso a bases de datos MySQL en PHP ELABORADO POR: José Mariano González Romano ADAPTADO POR: Prof. Carmen.
PROCEDIMIENTOS ALMACENADOS Es una consulta almacenada en la base de datos en un servidor. Los P.A. Mejoran el Rendimiento Disminuyen el tráfico. Los P.A.
Ing. Lorena Ruhl - Marco Rapallini - Javier FabiánMódulo 3: Integración de PHP con Bases de Datos Ing. A. Lorena Ruhl Universidad.
Nombre: Germania Ruiz UNIVERSIDAD TECNOLOGICA AMERICA.
Se producen cuando una aplicación recibe datos no confiables y estos no han sido validados adecuadamente antes de procesarlos, lo cual puede llevar a que.
Unidad 4 SEGURIDAD 4.1 Tipos de usuarios
Práctica Profesional PHP.
Yeray Caballero López Juan Pablo Quesada Nieves
MSSQL SERVER CURSO BÁSICO 1. CONCEPTOS BASICOS DE SQL. DESCRIPCIÓN DEL CURSO. Sesión 3: Índices Uso, Creación, Tipos, Eliminación LENGUAJE DE CONSULTAS.
Hackear un Sitio Web. Claudio
1 Desarrollo Web en Entorno Servidor Tema 4: Estructuras de control. Estructuras Selectivas. Operadores de comparación. Operadores Lógicos. Operadores.
SQL es un estándar internacional para trabajar con bases de datos, que consta de dos partes: una parte para manipular datos y una parte para definir tipos.
JDBC. Definición Java Database Conectivity El acceso a bases de datos JDBC implica abrir una conexión ejecutar comandos SQL en un sentencia procesar los.
3 Cursores ORACLE Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega Bases de datos II I-2014 Universidad del Cauca In. Wilson Ortega.
Base de Datos I – Ing. Mary Carlota Bernal J.  Cada instrucción PL/SQL tiene asociado internamente un cursor  Los cursores en PL/SQL pueden ser de dos.
Consultas a mysql desde PHP índice 1. Introducción 5. Ejemplo 4. Tratamiento de datos 2. Instrucción SQL 3. Pasos C o n s u l t a s a m y s q l d e s d.
Php y mysql índice 1. Conexión 6. Ejercicio 5. Insertar un registro 2. Operaciones básicas 3. Seleccionar BD 4. Crear una BD P h p y m y s q l Índice 1.
Ing. Sanchez Castillo Eddye Arturo Escuela Académica Profesional de Ingeniería de Sistemas.
PHP Implantación de aplicaciones Web. Arquitectura web en PHP.
Francisco Moreno Bases de Datos II Universidad Nacional
Transcripción de la presentación:

ACCESO A BASES DE DATOS ORACLE CON PHP MANUEL BUTRÓN BLANES

Índice Introducción Qué necesito… Funciones básicas Introducción a las bind variables Otras funciones.

Introducción Mejor dupla bajo web: oracle+php. Muchos tipos de funciones. Diferentes para cada SGDB. El codigo no es portable. Uso de bind variables.

Qué necesito… Gestor de bases de datos oracle. Apache o IIS. Php 5.0 para las funciones actuales. Editor highlight.

Operaciones básicas Conectarse a la base de datos. Preparar una sentencia para su ejecución. Ejecutarla. Cerrar la conexión.

Establecer una conexión con la BD oci_connect ( string username, string password [, string db [, string charset [, int session_mode]]] ) <?php   $conn = oci_connect(‘user', ‘pass', 'orcl');   if (!$conn) {    $e = oci_error();    print htmlentities($e['message']);    exit;   } ?> Devuelve un identificador que se usa en todas las funciones o falso en el caso de que la conexión falle.

bool oci_close ( resource connection ) Cerrar una conexión con la base de datos bool oci_close ( resource connection ) <?php   $conn = oci_connect(‘user', ‘pass', 'orcl');   if (!$conn) {    $e = oci_error();    print htmlentities($e['message']);    exit;   } oci_close($conn) ?> Devuelve true si se cierra y false si no.

oci_parse(resource connection, string query) Preparar una sentencia oracle para su ejecución. oci_parse(resource connection, string query) Prepara la query usando el identificador que devuelve oci_connect y devuelve un sentecia identificadora, que puede ser usada con oci_bind_by name() o oci_execute principalmente pero tambien con otras funciones. <?php $query = 'SELECT * FROM DEPARTMENTS';   $stid = oci_parse($conn, $query);   if (!$stid) {    $e = oci_error($conn);    print htmlentities($e['message']);    exit; ?> Nota: Esta funcion no valida la query. La unica manera de validar si la query es una sentencia correcta de SQL es ejecutandola Devuelve falso o error.

bool oci_execute (resource stmt , [int mode]) Ejecutar una sentecia bool oci_execute (resource stmt , [int mode]) <?php $query = 'SELECT * FROM DEPARTMENTS';   $stid = oci_parse($conn, $query);   if (!$stid) {    $e = oci_error($conn);    print htmlentities($e['message']);    exit; ?> $r = oci_execute($stid, OCI_DEFAULT);   if (!$r) {    $e = oci_error($stid);    echo htmlentities($e['message']);    exit; Ejecuta una sentecia SQL previamente comprobada con oci_parse Devuelve un resultado dependiendo del tipo de query o false en caso de error.

<. php $conn = oci_connect(‘user', ‘pass', 'orcl'); if ( <?php   $conn = oci_connect(‘user', ‘pass', 'orcl');   if (!$conn) {    $e = oci_error();    print htmlentities($e['message']);    exit;   }   $query = 'SELECT * FROM DEPARTMENTS';   $stid = oci_parse($conn, $query);   if (!$stid) {    $e = oci_error($conn);    print htmlentities($e['message']);    exit;   }   $r = oci_execute($stid, OCI_DEFAULT);   if (!$r) {    $e = oci_error($stid);    echo htmlentities($e['message']);    exit;   }   print '<table border="1">';   while ($row = oci_fetch_array($stid, OCI_RETURN_NULLS)) {    print '<tr>';        foreach ($row as $item) {          print '<td>'.($item?htmlentities($item):' ').'</td>';        }        print '</tr>';   }   print '</table>';   oci_close($conn); ?>

Introducción a las bind variables Ligar variables en un enunciado SQL. Ventaja sobre MySQL o ACCESS que no manejan bind nativamente. Pre-compilacion de enunciados SQL. Optimización. Aumento importante de velocidad al insertar. SQL inalterable. Medida de seguridad ante el SQL injection.

Introducción a las bind variables II Sintaxis-> :bindVariable oci_bind_by_name bool oci_bind_by_name ( resource stmt, string ph_name, mixed &variable [, int maxlength [, int type]] )

Ejemplo web insegura. SQL injection. Ejecutar sentecias SQL mediante la aplicación sin la debida autentificación. Login.asp; user:Obelix, pass: Dogmatix SELECT * FROM Users WHERE username= 'Obelix' and password='Dogmatix' Nombre de Usuario: ‘ or 1=1— SELECT * FROM Users WHERE username='' or 1=1-- and password='‘ SELECT * FROM Users WHERE username='' or 1=1

Ejemplo seguridad con bind variables $SQL = "SELECT * FROM TECNICOS WHERE USUARIO = :USUARIO AND CLAVE = :CLAVE"; $Sentencia =oci_parse ($Conexion, $SQL);   oci_bind_by_name ($Sentencia,”:USUARIO", $USUARIO, -1); oci_bind_by_name ($Sentencia, “:CLAVE", $CLAVE, -1);   oci_execute ($Sentencia);

Insertar con bind variables <?php   // Before running, create the table:   //  CREATE TABLE MYTABLE (mid NUMBER, myd VARCHAR2(20));   $conn = oci_connect(‘user', ‘pass', 'orcl');   $query = 'INSERT INTO MYTABLE VALUES(:myid, :mydata)';   $stid = oci_parse($conn, $query);   $id = 60;   $data = 'Some data';   oci_bind_by_name($stid, ':myid', $id);   oci_bind_by_name($stid, ':mydata', $data);   $r = oci_execute($stid);   if ($r)    print "One row inserted";   oci_close($conn); ?>

Funciones auxiliares array oci_fetch_array ( resource statement [, int mode] ) devuelve un array asociativo o numerico o ambos, con el resultado, false en caso de error oci_both oci_assoc oci_num oci_return_nulls oci_return_lobs <?php $conexion = oci_connect(“user", “pass"); $SQL= "SELECT id, name FROM fruits"; $sentencia = oci_parse ($conexion, $SQL); oci_execute ($sentencia); while ($row = oci_fetch_array ($sentencia, OCI_BOTH)) {    echo $row[0]." and ".$row['ID']." is the same<br>";    echo $row[1]." and ".$row['NAME']." is the same<br>"; } ?>

Funciones auxiliares II int oci_fetch_all ( resource statement, array &output [, int skip [, int maxrows [, int flags]]] ) Le pasamos el array por referencia para que lo componga y nos devuelve el numero de filas que han sido imprimidas en el array oci_num_fields(sentencia), devuelve el numero de columas en la sentencia. oci_num_rows(sentencia), devuelve el numero de filas en la sentencia.

Otras funciones oci_commit, oci_roolback, para control de transacciones oci_error, devuelve el ultimo error oci_server_version, devuelve la version del servidor oci_statement_type, devuelve el tipo de sentencia(select,insert…)

Otras funciones II oci_password_change, cambia la contraseña de acceso oci_field_ is null, precision,scale,size,type. oci_pconnect, se conecta a oracle usando una conexión permanente. oci_field_name, oci_row_name

Bibliografía php.net Wikipedia

?