Anuncios

Bienvenidos sean a este post, hoy veremos como trabajar con mysql desde PHP.

Anuncios
Anuncios

Para mi gusto yo soy de utilizar a mysqli para conectarnos a la base de datos dado que trabajamos con mysql, antes se utilizaba directamente a mysql pero a partir de la version 7 cambio a mysqli, las razones las desconozco pero es uno de las funciones mas practicas para trabajar con este tipo de base de datos, hay otros modulos y/o clases pero yo lo explicare con este, no se preocupen porque lo instalamos al comienzo del curso, si hicieron lo comentado en este post, para comenzar con todo esto vamos a conectarnos a nuestra base de datos y para ello vamos a volver a la pagina que creamos en este post, si no lo tienen este es el codigo actual:

forms.php

<?php

if (isset($_REQUEST["user"])) { 
	$usuario=$_REQUEST["user"]; 
} else { 
	$usuario=""; 
}
if (isset($_REQUEST["nombre"])) {
	$nombre = $_REQUEST["nombre"];
} else {
	$nombre = "";
}
if (isset($_REQUEST["apellido"])) {
	$apellido = $_REQUEST["apellido"];
} else {
	$apellido = "";
}

if ($nombre!="" && $apellido!="" && $usuario!="")
{
	$salida = "si";
} else {
	$salida = "";
}

?>

<html>

<head>
<title>Formulario de usuarios</title>
</head>

<body>

<?php if ($salida!="si") { ?>
<form name="form1" method="post" action="">
Ingresa el usuario: <input type="text" name="user" value=""><br>
Ingresa el nombre: <input type="text" name="nombre" value=""><br>
Ingresa el apellido: <input type="text" name="apellido" value=""><br>
<br>
<button type="submit">Subir</button>&nbsp;&nbsp;&nbsp;
<button type="reset">Cancelar</button>
</form>
<?php } else { ?>
Usuario: <?php echo $usuario; ?><br>
Nombre: <?php echo $nombre; ?><br>
Apellido: <?php echo $apellido; ?><br>
<br>
<button type="button" onclick="location.href='forms.php'">Volver</button>
<?php } ?>

</body>

</html>
Anuncios

Esto ya esta explicado en el post indicado anteriormente, nuestra primera modificacion sera en el bloque de PHP donde agregaremos la capacidad de conexion a la base de datos, para ello agregaremos la siguientes lineas despues del bloque de condicionales que verifica los datos recibidos:

$HOSTNAME = "localhost";
$USER = "<el usuario que crearon>";
$PASSWORD = "<la password que asignaron>";

$con = mysqli_connect($HOSTNAME, $USER, $PASSWORD, "curso") or exit;
Anuncios
Anuncios

Primero vamos a crear tres variables para indicar el servidor, en este caso usamos a localhost porque es en el mismo equipo, luego en la segunda variable le definimos nuestro usuario de conexion y la ultima almacena la clave o password del usuario para conectarse, por ultimo creamos una variable que almacena la conexion y para ello usamos a mysqli_connect donde le pasaremos los tres parametros que definimos anteriormente seguido de la base y por ultimo una opcion de exit en caso de falla, veamos como quedo nuestro bloque actualmente:

<?php

if (isset($_REQUEST["user"])) { 
        $usuario=$_REQUEST["user"]; 
} else { 
        $usuario=""; 
}
if (isset($_REQUEST["nombre"])) {
        $nombre = $_REQUEST["nombre"];
} else {
        $nombre = "";
}
if (isset($_REQUEST["apellido"])) {
        $apellido = $_REQUEST["apellido"];
} else {
        $apellido = "";
}

$HOSTNAME = "localhost";
$USER = "<usuario>";
$PASSWORD = "<password>";

$con = mysqli_connect($HOSTNAME, $USER, $PASSWORD, "curso") or exit;

if ($nombre!="" && $apellido!="" && $usuario!="")
{
        $salida = "si";
} else {
        $salida = "";
}

?>
Anuncios

Esto solamente nos conectara, en caso de tener exito nos devolvera la pagina como siempre pero en caso de falla nos dejara la pagina en blanco pero esto es peligroso porque todos tendran acceso a la base desde cualquier lugar y no solamente desde la pagina, para evitar esto PHP nos permite implementar una opcion muy interesante como es el include, para ello debemos modificar nuestro archivo php.ini.

Anuncios

En el caso de debian esta en la siguiente ubicacion:

/etc/php/7.3/apache2/php.ini
Anuncios

la version de php puede variar con respecto a otras instalaciones y esta puede ser distinta en otras distribuciones de Linux, para el caso de windows esta en:

C:\xampp\php\php.ini
Anuncios
Anuncios

Esto aplica si hicieron la instalacion a traves de XAMPP de lo contrario puede variar la ubicacion, como en este curso explicamos para hacerlo de esta forma seguiremos en esta linea, en ambos casos deben deben buscar la linea include_path y descomentarla o lo mismo que decir quitar el punto y coma (;) en el comienzo de la linea, observen cual es la ubicacion que posee, y esa sera la ubicacion donde trabajaremos pero si desean cambiarla por otra simplemente modifiquen el archivo y reinicien el servidor para que aplique la nueva modificacion, les recomiendo trabajar con el lugar predeterminado.

Anuncios
Nota: 
en el archivo tenemos la opcion de UNIX y windows pero XAMPP trabaja tambien con Unix, en mi caso aparecio destildada pero recuerden trabajar con esta ubicacion pero si utilizan el PHP del paquete original utilicen la opcion de Windows.
Anuncios

Con nuestra ubicacion encontrada podemos pasar a crear un nuevo archivo que llamaremos tutorial.inc donde le agregaremos el siguiente codigo:

Anuncios
Nota: 
En caso de Linux pueden necesitar permisos de sudo o root para crearlo.

tutorial.inc

<?php
        function base_connect($base)
        {
                $con=@mysqli_connect("localhost",
                                "<usuario>",
                                "<contraseña>",
                                $base) or exit;
                return($con);
        }
?>
Anuncios
Anuncios

En este caso crearemos un codigo de PHP con una funcion llamada base_connect donde recibira un argumento que sera la base a conectarnos, dentro crearemos nuevamente una variable donde guardaremos a mysqli_connect pero esta vez le ponemos un arroba (@) adelante para que el codigo lo interprete correctamente cuando lo carguemos, en este caso le pasaremos los datos directamente como son el host (localhost), luego el usuario que usaran para conectarse seguido de su contraseña o password, por ultimo donde pasabamos la base ahora le informaremos la base pasada en el argumento, por ultimo tenemos el exit anterior en caso de falla pero en lugar de hacer otra tarea devolvemos el resultado almacenado en con, ya veremos porque, con esto comentado tenemos nuestro archivo creado, nuestro siguiente paso sera volver al archivo forms.php y modificaremos el bloque de PHP del comienzo donde elimnaremos toda la secuencia de conexion y la reemplazaremos por la siguiente:

include("tutorial.inc");
$con = base_connect("curso");
Anuncios

Esto carga el archivo que incluimos en nuestro include_path, esto nos permite tener acceso a la funcion del archivo, lo siguiente es crear una variable donde almacenaremos el objeto creado por la funcion base_connect y observen que le pasamos la base en cuestion, veamos como quedo nuestro bloque ahora:

<?php

if (isset($_REQUEST["user"])) { 
        $usuario=$_REQUEST["user"]; 
} else { 
        $usuario=""; 
}
if (isset($_REQUEST["nombre"])) {
        $nombre = $_REQUEST["nombre"];
} else {
        $nombre = "";
}
if (isset($_REQUEST["apellido"])) {
        $apellido = $_REQUEST["apellido"];
} else {
        $apellido = "";
}

include("tutorial.inc");
$con = base_connect("curso");

if ($nombre!="" && $apellido!="" && $usuario!="")
{
        $salida = "si";
} else {
        $salida = "";
}

?>
Anuncios

Cambio notablemente con respecto al original dado que ahora no mostramos ningun dato que pueda representar una vulnerabilidad para nuestras conexiones, por otro lado tambien nos permite tener una funcion mas practica para reconectarnos a otra base y siempre la conexion disponible, por el momento no nos sirve pero en el proximo post veremos el primer uso de la conexion a la base de datos.

Anuncios

En resumen, hoy hemos visto como conectarnos a una base de datos por medio de PHP, la primera fue una conexion directa que puede generar vulnerabilidades, despues vimos como habilitar el include_path para poder agregar un archivo que nos permita hacer la conexion sin necesidad de estar mostrando los datos de conexion, espero les haya sido util sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios

Donación

Es para mantenimento del sitio, gracias!

$1.50