viernes, 27 de septiembre de 2013

INVESTIGACION: Conexion con credenciales explicitas

Como vimos en la entrada anterior, hay varias maneras de conectarse a una base de datos, en esta ocasión hablaremos de la conexión de credenciales explicitas. Se pueden realizar de dos maneras solicitando las credenciales o bien usar las credenciales predeterminadas.
Solicitando las credenciales, se piden los datos y se concatenan al string de conexión.
Para usar credenciales predeterminadas no es nada recomendable poner la información en el código, ya que cualquiera lo podría ver, para esto se recomienda guardarlas cifradas en el archivo Web.config o bien en el registro de Windows como una subclave personalizada.
Para guardarlo en el archivo Web.config se debe creer un apartado de la siguiente manera:

<appSettings>
   <add key="mappedname" value="MyWebAppUser"/>
   <add key="mappedkey" value="Aje$31"/>
</appSettings>

Y en la aplicación leemos las credenciales de la propiedad estática AppSettings.
Dim user As String = System.Configuration.ConfigurationSettings. _
    AppSettings("mappedname")

Cuando usamos C# hay que agregar esta referencia al proyecto,


Y se escriben los valores en el app.config.

Para ver un ejemplo completo y ejemplo de como hacerlo en el registro de windows podemos acceder al link que se encuentra al final de esta entrada.

Fuente: http://msdn.microsoft.com/es-es/library/aa984237(v=vs.71).aspx

INVESTIGACION: Botones Submit HTML

INVESTIGACION 

Submit Buttons

Multiples Botones Submit en un from de html

Problema: No se podían usar varios botones de tipo "Submit" de HTML porque cuando se seleccionaba cualquiera de ellos redireccionaban a la misma pagina y lo requerido era que cada uno lo hiciera a una diferente dependiendo de lo deseado en la aplicación.

Solución: Pagina consultada: Multiple submit buttons

Script:

<script>
    function submitForm(action)
    {
        document.getElementById('form1').action = action; // El id del form
        document.getElementById('form1').submit();
    }
</script>

Horas empleadas en la solucion: 3

Cristian Araya
David Vargas

AVANCE: AplicacionWeb

Aplicacion Web

Trabajo de implementación de la solución a la aplicación Web.


Los días trabajados: 19,20,23,24

Se realizó: o Búsqueda y investigación de los elementos de html y su forma de interactuar y compartir información con php.

o Investigación del lenguaje php

o Solución de problemas como lo fue implementar un Script con JavaScript a forms para el uso de multiples botones Submit.

o Llenado de un Select en HTML usando php con la base de datos.
Codigo:
En este caso se utilizó una variable global que fue cargada desde un metodo creado en una clase php, el cual llama un stored procedure y la carga con los tipos de datos de la base de datos creada



Cristian Araya
David Vargas

Horas Invertidas: 21

INVESTIGACION: Select de varias tablas

La instrucción select recupera filas de la base de datos y habilita la selección de una o varias filas o columnas de una o varias tablas. El poder y complejidad que tiene esta instrucción es de gran alcance, conocer todas las facilidades y clausulas que puede tener un insert nos facilitara la tarea a la hora de consultar datos o extraer datos de una base de datos.

En esta ocasión mostramos como usar un select para crear una tabla o una consulta, con la información de varias tablas. 


Como se puede observar estamos haciendo una consulta, donde queremos crear una tabla compuesta por información de otras tres tablas, donde cada tabla le ponemos un prefijo para ahorrarnos escribir mas, y comparamos elementos de las tablas, para tener lo que queremos.

Hay operadores como union, intersect y except entre otros que son importantes, y que en un futuro los aprenderemos.

INVESTIGACION: Reiniciando los datos en una base de datos

Muchas veces queremos reiniciar o volver los datos desde 0 en una base de datos, sin embargo muchas veces solo eliminamos los datos, y no reiniciamos la llave primaria, o bien en caso contrario reiniciamos la llave primaria pero no borramos los datos de la base datos, lo cual nos puede afectar nuestro trabajo ya que se crearía llaves repetidas.
Para volver una base de datos desde 0 se debe ejecutar los siguientes comandos:
   delete * from tabla
   DBCC CHECKIDENT (tabla, RESEED, 0) 

Mostramos un ejemplo, se tiene la tabla persona con los siguientes datos:


Se borran todos los datos de la tabla


Se reinicia llave primaria


A la hora de insertar un nuevo elemento podemos ver que el ID ha comenzado otra vez desde el número 1.



INVESTIGACION: Comparar Fechas SQL Server

Para el manejo y la comparación de fechas, SQL ofrece herramientas muy practicas, que cuando estamos usando una variable de tipo date debemos saber. A continuación veremos varios aspectos de las fechas en SQL:

  • Se ingresan en comillas simples
  • Se puede ingresa - , y . como separadores
  • La fecha actual del servidor se puede obtener con el comando getdate()
  • Los operadores relacionales se pueden utilizar en las fechas.
Por ejemplo se puede comprar fecha1 < fecha2, y de igual manera para los demás operadores relacionales.


  • Existe el comando YEAR(fecha) que retorna el año de una fecha
  • De igual forma existe el comando MONTH
  • Existe una función que retorna el numero de semana: DATEPART
Por ejemplo:
            MONTH(getdate()) obtiene el mes de la fecha actual
            DATEPART(week,V.Fecha)  obtiene el número de semana de la fecha


miércoles, 25 de septiembre de 2013

INVESTIGACION: Analisis Tipos de Conexion

Para poder conectarse a una base de datos, existen dos grandes modos de poder hacerlo, en cada uno presentamos sus ventajas como desventajas y un ejemplo de como se haria en C#.

Modo de Autentificación de Windows o Seguridad Integrada
Usa el protocolo de seguridad de Kerberos, proporciona la aplicación de directivas de contraseñas en cuanto a la validación de la complejidad de las contraseñas seguras, ofrece compatibilidad para el bloqueo de cuentas y admite la caducidad de las contraseñas. Usa una serie de mensajes cifrados para autenticar usuarios en SQL Server.
Ejemplo:
Data Source = ServidorSQL; Initial Catalog = BaseDatos; Integrated Security = True

Mode de Autentificacion de SQL Server – Conexión con credenciales explicitas
Ocupa un usuario y una contraseña, las cadenas de conexión de se pueden guardar ya sea en el archivo Web.config y en el catálogo COM+ Admin.
Ejemplo:
data source = ServidorSQL; initial catalog = BaseDatos; 
user id = Usuario; password = Contraseña

Desventajas:
Tener que proporcionar las credenciales de SQL Server cada vez que se conectan a la base de datos puede resultar molesto.
La autenticación de SQL Server no puede utilizar el protocolo de seguridad de Kerberos.
Los nombres y contraseñas de SQL Server se pasan a través de la red, lo que hace de este un método menos seguro.

Ventajas:
Permite a los usuarios conectarse desde dominios desconocidos o que no son de confianza
Permite que SQL Server admita entornos con sistemas operativos mixtos
Permite a SQL Server admitir las aplicaciones anteriores y las que proporcionan terceros y requieren la autenticación de SQL Server.

Autenticación de SQL Server por medio de SOAP : Es un modo de autenticación del pasado, que ya no es utilizado debido a las ineficiencias de seguridad que han sido encontradas

Referencias
http://msdn.microsoft.com/es-es/library/aa289855(v=vs.71).aspx
http://technet.microsoft.com/es-es/library/ms144284.aspx
http://msdn.microsoft.com/es-es/library/aa984237(v=vs.71).aspx

martes, 24 de septiembre de 2013

INVESTIGACION: Bloque Try / Catch SQL Server

Los errores de código en el SQL Server pueden tratarse de forma similar a lenguajes como C# o C++. Constan del bloque try y del bloque catch, donde el bloque catch controla la excepción que se puede producir en el bloque try. Deben de ir primero el bloque try, seguido inmediatamente del bloque catch.

El SQL Server presenta varios tipos de errores, que los mostramos a continuacin:
  • ERROR_NUMBER() devuelve el número de error.
  • ERROR_MESSAGE() devuelve el texto completo del mensaje de error. El texto incluye los valores suministrados para los parámetros sustituibles, como longitudes, nombres de objeto u horas.
  • ERROR_SEVERITY() devuelve la gravedad del error.
  • ERROR_STATE() devuelve el número de estado del error.
  • ERROR_LINE() devuelve el número de línea dentro de la rutina en que se produjo el error.
  • ERROR_PROCEDURE() devuelve el nombre del procedimiento almacenado o desencadenador en que se produjo el error.

    Algo que cabe mencionar son las dos situaciones donde el bloque try/catch no los puede controlar como lo son:
    - Errores de Compilación
    - Errores que se producen durante la recompilación de instrucciones

    Instrucción rollback : Revierte una transacción explícita o implícita hasta el inicio de la transacción o hasta un punto de retorno dentro de la transacción y de igual manera libera los recursos que mantiene la transacción. 

    Instrucción commit: Hace que todas las modificaciones efectuadas sobre los datos desde el inicio de la transacción sean parte permanente de la base de datos, libera los recursos mantenidos por la transacción

    En el siguiente ejemplo se muestra el machote que seguimos en cada uno de nuestros procedimientos, para hacer uso de un manejo efectivo de errores y excepciones.

    create procedure insertarHistoricoDocumento
    @Documento int,
    @Administrador int,
    @Descripcion varchar (50),
    @Contenido text
    as
    begin
    begin try
    begin transaction
    insert                               HistoricoModDocumento(FKDocumento,FKAdministrador,DescripcionCambio,Contenido)
    values(@Documento,@Administrador,@Descripcion,@Contenido)
    commit transaction
    end try
    begin catch
    select ERROR_NUMBER() as ErrorNumber;
    return -1;
    rollback transaction
    end catch
    end


    Para mas información se puede consultar los siguientes enlaces :
    http://technet.microsoft.com/es-es/library/ms179296(v=sql.105).aspx
    http://technet.microsoft.com/es-es/library/ms181299.aspx

    Cristian Araya
    David Vargas

    Horas Invertidas: 2 horas

martes, 17 de septiembre de 2013

Conceptos Aprendidos: Seguridad

Para realizar una aplicación y una base de datos con una seguridad estable, se recomiendan las siguientes cosas:
- Conexion a la base de datos desde otro lenguaje de programación: Se debe encriptar la cadena de conexión, para que estos no sean visibles desde el código y por tanto que nadie ajeno a los desarrolladores los pueda ver. En resumen estar en la capa de acceso a datos y no debe estar en la capa lógica.

-Usar try/catch en las operaciones de store procedure: Se recomienda encerrar las operaciones de un store procedure, en un try/catch para evitar errores.

-Verificar parámetros en los store procedure: Se debe verificar que los parámetros sean correctos a la hora de entrada, como por ejemplo que no sean nulos.

-Llamar store procedure desde otros lenguajes: Cuando se llama un store procedure desde otros lenguajes, se debe de hacer esta llamana desde un bloque try/catch para prevenir errores y liberar recursos. En nuestro caso el C# también permite hacerlo con la instrucción using.

-Parámetros privados: Hay ciertos parámetros que se recomiendan encriptar, como es el caso de las contraseñas, que requieren una seguridad mayor.

-Para encriptar parámetros se pueden usar algoritmos y tecnicas que ya han sido investigadas antes, como por ejemplo usar el Algoritmo de Hash Seguro (SHA). Sin embargo como sabemos toda encriptacion requiere mas espacio y memoria, por lo cual las operaciones se realizaran más lentas y tendran una complejidad mayor.

AVANCE: Comienzo aplicacion de escritorio

Se comienza a hacer la aplicación de escritorio, en este avance realizamos los metodos de manejo para los libros y creacion de administradores. Se realiza:
- Ventana Crear Administrador
- Ventana inicio de sesión
- Ventana Crear un documento
- Ventana Editar Documento
- Ventana Buscar Documento

Se muestran unas imágenes mostrando la aplicación al momento:






Hecho por:
Cristian Araya
David Vargas
Horas Laboradas: 8 horas

AVANCE: Prueba Conexion SQL Server y C#

Se realiza una pequeña aplicación en C# con la base de datos de prueba que realizamos de persona, para verificar la conexión a la base de datos. A continuación se muestran unas imágenes del código usado y de la aplicación realizada.

                                                               Aplicación Corriendo

Base de Datos utilizada


Código de Conexión Integrada a SQL Server en C#


Función en C#, que llama un store procedure echo en la base de datos


David Vargas
Cristian Araya
Horas Dedicadas: 6horas

sábado, 14 de septiembre de 2013

AVANCE: Diseño de Aplicación Escritorio

El día de hoy decidimos realizar en papel el diseño de la aplicación en escritorio, a continuación mostramos una foto de lo realizado. En resumen se determinan las diferentes ventanas y funciones que tendrá la aplicación de escritorio y de igual manera se establecen los Store Procedure principales que tenemos que crear para que la aplicación pueda correr de forma optima, estos son: 
  • autentificacion
  • crearDocumento
  • crearAdministrador
  • modificarDocumento
  • eliminarDocumento
  • buscarDocumento
  • buscarVenta
  • buscarHistorialVenta
  • buscarHistorialDocumento



Cristian Araya
David Vargas
Horas: 4 horas



AVANCE: Diagrama Bases de Datos V3.0

Se realizan cambios al diagrama antes mostrado y con este se comienza a trabajar en las diversas aplicaciones
Cristian Araya
David Vargas
Horas Dedicadas: 4 horas

viernes, 13 de septiembre de 2013

EXPERIENCIA: PHP y HTML

Conceptos PHP y HTML


Los días 9, 10, 11 y 12 de septiembre se dedicaron horas al proyecto en la sección de la aplicación de escritorio, por ejemplo se aprendieron conceptos como:

a) Elementos de HTML y la unión con el código de PHP
b) Como conectar desde PHP a la base de datos
c) Dar un mejor formato a los elementos de HTML con codigo CSS
d) Pasar variables de un documento.php a otro
e) en general el manejo de la logica de HTML, PHP y la base de datos en SQL Server 2012

<HTML LANG="ES">

<HEAD>
   <TITLE>Holis Mundo</TITLE>
</HEAD>

<BODY>
<form>
   <label for="matricula">Matricula:</label>
   <input type="text" id="matricula" name="matricula" value=""/> <br/>
   <label for="nombre">Nombre:</label>
   <input type="text" id="nombre" name="nombre" value=""/> <br/>
   <label for="materno">Materno:</label>
   <input type="text" id="materno" name="materno" value=""/>
</form>

<H1>Prueba de Hola Mundoo</H1>

<!-- Caja de texto -->
<input type="text" size="15" maxlength="30" value="Nombre" name="nombre">

<!-- Codigo PHP -->
<?php
echo "Codigo php.<br />";
// Connect to SQL Server and check for errors
//$serverName = "CHARLIE-PC\SQLEXPRESS"; //serverName\instanceName

// Puesto que no se han especificado UID ni PWD en el array  $connectionInfo,
// La conexión se intentará utilizando la autenticación Windows.
/*$connectionInfo = array( "Database"=>"BD-Proyecto1");
$conn = sqlsrv_connect( $serverName, $connectionInfo);

// EJECUCION DE LA CONSULTA
$tsql_callSP = "{call eliminaCliente( ?)}";    /* Nombre del procedure, cada ? es un parametro*/
$Id = 3;
$vacationHrs = 1;
$params = array( /* Array para agregar los parametros, si el procedure devuelve algo es un PARAM_OUT*/
                 array($Id, SQLSRV_PARAM_IN)
               );

/* Execute the query. */
$stmt3 = sqlsrv_query( $conn, $tsql_callSP, $params);   /*Ejecuta la vara*/
if( $stmt3 === false )
{
     echo "Error in executing statement 3.\n";
     die( print_r( sqlsrv_errors(), true));         /* Imprime el tipo de error */
}

/* Display the value of the output parameter $vacationHrs. */
sqlsrv_next_result($stmt3);                             /*Esto es por si el procedure devuelve algo se trabaja de esta manera*/
echo "Remaining vacation hours: ".$vacationHrs;

/*Free the statement and connection resources. */
sqlsrv_free_stmt( $stmt3);

sqlsrv_close( $conn);*/
?>

</BODY>
</HTML>

Paginas Consultadas:
http://answers.yahoo.com/question/index?qid=20110128160534AAEuOca
http://www.w3schools.com/html/
http://technet.microsoft.com/en-us/library/cc644932(v=sql.105).aspx (Muy importante)

David Vargas
Cristian Araya

Horas invertidas: 15

miércoles, 4 de septiembre de 2013

Error Conexion Apache

ERROR XAMPP


Durante dos días tuve en mi computadora el problema de conectar a Apache desde el programa que Cristian propuso que utilizáramos para hacer la aplicación web en PHP con el servidor Apache. Durante el intento de componerlo, Cristian me compartió archivos, librerías, etc algunos problemas se resolvian pero otros persistían.
El error era el siguiente:
Por lo tanto seguimos en otras tareas para no atrasarnos mas, volviendo al problema hoy desintalé el Xampp y descargue otra versión que según leí era mas compatible con Windows 7, que es el que tengo instalado en mi computadora, pero el problema siguió presentandose.

Solución: encontré el siguiente link: http://tutorialesyopiniones.blogspot.com/2013/01/corregir-error-al-iniciar-xampp-apache.html , siguiendo los pasos y modificando los archivos que ahí dice se logro la conexion con Apache!

Cristian Araya
David Vargas

Horas trabajadas: 8

AVANCE: Borrador Diagrama de Bases de Datos

El día 4 de septiembre decidimos pasar el diagrama de bases de datos a la herramienta de SQL Server.
En este diagrama pudimos establecer todos los tipos que vamos a usar en las diferentes tablas, de igual manera establecimos los primary key y las relaciones de foreign key. A continuación mostramos el diagrama realizado.



Se tienen varias dudas con el diagrama realizado, por lo cual se procede a enviar un correo al profesor antes de seguir con el siguiente paso, la creación de store procedure y la aplicación de escritorio.

Cristian Araya
David Vargas
Horas Dedicadas: 5horas

EXPERIENCIA: Uso de conceptos en SQL Server

A continuación presentamos un pequeño tutorial de las herramientas mas básicas y necesarias a la hora de utilizar una base de datos en SQL Server

Realizar atributos que sea de un valor auto incrementable
Especificación de Identidad
Se active la opción y se agrega que se vaya sumando 1 cada vez, útil para las primary key



Realizar atributos definidos
Especificación de columna calculada
Se activa la opción y se escribe la fórmula que queremos para el atributo


Definiendo Primary Key
Click derecho sobre cualquier atributo, se selecciona Primary Key


Relaciones de Foreign Key
Para estas relaciones, se utilizó la herramienta de diagrama que ofrece SQL Server ya que lo realiza de una forma muy sencilla, lo cual es arrastrando el atributo que tiene la FK a la tabla que queremos relacionar, lo soltamos en la tabla seleccionada y aparecerá el cuadro de configuración.

Cuando se este arrastrando van a aparecer lineas cortadas

Se configura la relación que establece la Foreign Key


Store Procedure
Para los store procedure utilizamos como una plantilla para definirlos todos, ya que esto mejora la lectura y el entendimiento de los mismo. Esto debido a las varias maneras de definir los procedimientos que existen, en esta plantilla se utilizan el begin y el end como paréntesis en otros lenguajes, y esto claramente ayuda a entender mejor cada procedimiento.

create procedure nombre
@parametros
as
begin
Instrucciones

end

Cristian Araya
David Vargas
Horas Dedicadas: 3horas

lunes, 2 de septiembre de 2013

Problemas

A la hora de conectar mediante el programa XAMPP, apache con php tuve muchas dificultades al parecer por la version de XAMPP que tenia descargada, desde el dia anterior pase intentando corregir los problemas con Cristian, a él si le funcionaba perfectamente pero a mi me estaba dando muchos problemas. Tenia errores, warnings de librerias .dll en especial la php_mssql.dll
Error de libreria
Pero antes daba el siguiente error: 
El cual se solucionó copiando los archivos de php que mi compañero Cristian tenia en su computadora que si le servian.

Pasamos a instalar la siguiente version de XAMPP del link que Cristian me pasó:

Horas dedicadas: 6

Cristian Araya
David Vargas

EXPERIENCIA: Configurando Microsoft SQL Server para trabajar con PHP, y algunos ejemplos

 Cuando ya tengamos nuestro servidor Apache con el PHP instalado, o bien el servidor XAMPP, se requiere instalar y configurar las librerías para poderlo conectar con MS SQL. En nuestro caso estamos haciendo uso de las siguientes versiones:

            - Apache 2.4 
            - PHP Version 5.4.7
            - Microsoft SQL Server 2012

Se debe ingresar a la página:
http://msdn.microsoft.com/en-us/sqlserver/ff657782.aspx
Y se debe de descargar el archivo Microsoft Drivers 3.0 for PHP for SQL Server




Y se instalan en el directorio ext de php, en nuestro caso es la dirección:

             c:/xampp/php/ext

Luego de esto hay que ir al archivo PHP.ini, el cual se ubica en la carpera principal de PHP en nuestro caso
             
             c:/xampp/php

En este archivo hay que encontrar el apartado de Dynamic Extensions, el cual se encuentra alrededor de la línea 960. En este apartado hay que agregar las siguientes líneas:


extension=php_pdo_sqlsrv_54_ts.dll

extension=php_sqlsrv_54_ts.dll

Y se debe activar, esto se refiere a quitarle el punto y coma a la siguiente línea


extension=php_mssql.dll

En la siguiente imagen se puede ver las tres líneas que debemos modificar



Se guardan los cambios y se reinicia el servidor Apache, y de esta manera tenemos instaladas las librerías para poder conectar PHP con Microsoft SQL Server.

Ahora veremos unos breves ejemplos de la conexión 

Para realizar la conexión seguimos el siguiente código que se puede encontrar en la documentación oficial de la librería:

<?php
$serverName = "Servidor";   // Nombre del servidor
$connectionInfo = array( "Database"=>"Nombre de la Base de Datos");
$conn = sqlsrv_connect( $serverName, $connectionInfo);
// Puesto que no se han especificado UID ni PWD en el array  $connectionInfo,
// La conexión se intentará utilizando la autenticación Windows. Se puede insertar el nombre y la contraseña, añadiéndolos separados de una coma, para ingresar con el otro modo de autentificación

if( $conn ) {
     echo "Conexión establecida.<br />";
}else{
     echo "Conexión no se pudo establecer.<br />";
     die( print_r( sqlsrv_errors(), true));
}


?>

El siguiente ejemplo que veremos es con la llamada de un store procedure:

$tsql_callSP = "{call eliminarPersona( ?)}";    // Nombre del procedure, cada ? es un                                                                                                     parámetro
$Id = 3;
$vacationHrs = 1;

/* Array para agregar los parámetros, si el procedure devuelve algo es un PARAM_OUT
$params = array(
                 array($Id, SQLSRV_PARAM_IN)
               );

$stmt3 = sqlsrv_query( $conn, $tsql_callSP, $params);   /*Ejecuta el procedimiento*/
if( $stmt3 === false )
{
     echo "Error in executing statement 3.\n";
     die( print_r( sqlsrv_errors(), true));         /* Imprime el tipo de error */
}

sqlsrv_next_result($stmt3);                             /*Esto es por si el procedure retorna algo se trabaja de esta manera*/
echo "Remaining vacation hours: ".$vacationHrs;

sqlsrv_free_stmt( $stmt3); // Se liberan recursos


sqlsrv_close( $conn);   // Se cierra la conexión 


Con estos dos pequeños ejemplos, sirven como base para realizar cualquier conexión y hacer la llamada a un store procedure, para mas información se puede acceder a la dirección:
http://technet.microsoft.com/en-us/library/cc644932(v=sql.105).aspx donde se encontrara también como realizar la llamada de una instruccion.

Cristian Araya
David Vargas

Horas Trabajadas : 4horas

EXPERIENCIA: Servidor Apache

A la hora de instalar el servidor Apache e integrarlo con PHP, tuvimos varios errores, como por el ejemplo el acceso denegado a la hora de cambiar la configuración del php.ini y del conf del Apache, intentamos solucionarlo de todas las maneras que indicaban en la web, sin embargo no pudimos lograrlo, para no atrasarnos más con el proyecto luego de llevar un bueno rato tratándolo de instalar correctamente, decidimos utilizar XAMPP, esto es un servidor independiente el cual contiene configuradas e instaladas herramientas como el Apache, PHP, MYSQL entre otras. Con esta herramienta pudimos obtener en menos de 5 minutos la debida configuración del servidor Apache con PHP. Un punto muy importante que tenemos que mencionar es que la configuración por defecto que posee el XAMPP tiene algunas deficiencias en cuanto a la seguridad, que poco a poco en cada versión la han ido mejorando, y de igual manera realizando unos ajustes se ha utilizado como servidor de sitios web. Si al final tenemos tiempo, intentaremos de nuevo instalar el servidor apache e integrarle PHP.

Para realizar la descarga de este servidor accedimos al siguiente enlace:

Luego de instalarlo hay que configurar e instalar las librerías para poder conectar PHP con MSSQL, esto lo hablaremos en la siguiente entrada, ya que se tenga el XAMPP o se haya instalado solamente el servidor Apache se debe de realizar de igual forma, por lo cual nos parece muy útil que haya un documento donde muestre la configuración de esta conexión y de igual forma que muestre unos ejemplos, asunto que costó mucho encontrar en la web y en libros, debido a que las herramientas que estamos usando son las más nuevas.



Cristian Araya
David Vargas

Horas dedicadas: 5horas