Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Programación Avanzada 1
Instituto IACC
21 Septiembre 2020
1.- De acuerdo con los conocimientos previos al uso de sesiones en la programación
Las sesiones han sido un punto muy importante en lo que es el acceso a datos de tipo reservado o
también, no tan reservado, siempre se debe mantener una registro de acceso externo a cierta
En ciertas páginas web, por ejemplo, necesitamos realizar modificaciones tanto a información
“autorizado” la cual almacenará el navegador utilizado por el usuario a medida que vaya
ingresando al sitio en cuestión, para que así quede almacenado remotamente el registro de acceso
Estos ingresos siempre son individuales para que así no quede toda la información de sesión
Lo que requiere el inicio de sesión autorizada es para que el usuario autorizado pueda realizar la
En alguna página web, es necesario el uso de sesiones para que así podamos ingresar a la sección
de compras de algún producto y con una Membresía quedemos registrados para poder hacer una
ASIGNACIÓN: asignarle sus atributos (usuario administrador, usuario medio con ciertos
TIEMPO DE ACCESO: es importante dar un permiso dentro de ciertas horas para que el
usuario pueda mantener su sesión activa mientras el sistema se lo permita, esto es importante
para que el tiempo de acceso inactivo no quede abierto y así cerrar automáticamente.
Los errores más comunes en sesiones puede ser dependiendo del punto de vista.
En el caso de usuarios que acceden a ciertas páginas web con sesiones es que su clave no sea la
que corresponda o su nombre usuario no sea el que haya sido registrado, simplemente deber
Por el lado del programador las fallas son diversas, problemas de sintaxis ya sea una mala
concatenación, salidas de pantallas sin un término, cierre de paréntesis, cierre de línea de código,
Otro error que no depende de usuario ni programador, son los tiempos de espera de acceso a un
servidor donde deseamos ingresar, ya sea vía interna o externa, esto se debe a tráfico de datos
donde los tiempos son mucho mayores de lo esperado, cuando esto sucede, la conexión se
INDEX.PHP
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Bases de Datos en PHP</title>
</head>
<body align=”center”>
<p align=center><h2>Se crea la conexión a base de datos declarando variables</h2></p>
<?php
$serv = "localhost";
$user = "root";
$pass = "";
$bd = "biblioteca";$usua="usuarios";$books="Libros";
$conection = new MySQLi($serv,$user,$pass);
if ($conection->connect_error)
{
die("Error: Por favor, volver a comprobar Servidor".$conection->connect_error);
}
$sql = "Create DataBase $bd";
$sql = "Create Table $books (ID INT auto_increment, primary key (ID), ISDN bigint(15)
not null, Titulo varchar(20) not null, Autor varchar(30) not null, Editorial varchar(25) not
null, Anio int(4) not null, Genero varchar(25) not null, Precio int(6) not null)";
$sql.=",(2047808596748,'Carpintería','Patricio Ortega','Doméstika',2019,'Libros
Instructivos',15000)";
$sql.=",(9789871857616,'Computación','MP Ediciones','MP
Ediciones',2012,'Computación Básica',14000)";
?>
</body>
</html>
En el inicio de INDEX.PHP
Se hace la conexión con base de datos “biblioteca” la cual se definen con 2 tablas, una de
usuarios y una de libros, la tabla usuarios consta de 2 campos y la tabla libros contiene 7 campos,
la cual hay 6 artículos definidos, y configurado con un usuario y una contraseña en los 2 campos.
Una vez abierto e insertado datos se pasa a sección de CONEXIÓN.
<html>
<body align="center">
<?php
$host = "localhost";
$usuario = "root";
$clave = "";
$bd = "biblioteca";
$conexion = mysqli_connect($host,$usuario,$clave,$bd);
if ($conexion)
{
echo "La base de datos ha sido conectada correctamente";
}
else
{
echo "No se pudo conectar a la base de datos";
}
echo "<br><br><br><a href=login.php>Entrar a Login</a>";
?>
</body>
</html>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Sesión Login</title>
</head>
<body>
<center>
<form action="loguear.php" method="post">
<input type="text" name="usuario">
<br>
<input type="password" name="clave">
<br>
<button type="submit">Entrar</button>
</form>
</center>
</body>
</html>
Simple formulario de acceso a sesión con nombre de usuario y clave previamente inscrita en
LOGEAR.PHP
<?php
require 'conexion.php';
session_start();
$usuario = $_POST['usuario'];
$clave = $_POST['clave'];
$q = "SELECT COUNT(*) AS contar FROM usuarios WHERE usuario = '$usuario' and clave =
'$clave'";
$consulta = mysqli_query($conexion,$q);
$array = mysqli_fetch_array($consulta);
if ($array['contar']>0)
{
$_SESSION['username'] = $usuario;
$_SESSION['clave'] = $clave;
header ("location:principal.php");
}
else
{
echo "Los datos son incorrectos";
}
Se puede apreciar que se puede comparar variables de sesión, si resulta verdadera accede, de lo
contrario arrojará error y dará la opción de volver a acceder. La conexión a base se enlaza con
biblioteca
<html>
<head>
<meta charset="utf-8"/>
<title>Registro de Libros</title>
</head>
<body>
<br/><br/>
<form method="post" action="LibroBD.php">
<table border='2' align='center'>
<caption>Biblioteca</caption>
<tr>
<td>ISDN:</td>
<td> <input type="text" name="isdn" size="15" /> </td>
</tr>
<tr><td>Titulo:</td>
<td> <input type="text" name="titulo" size="50" /> </td>
</tr>
<tr>
<td>Autores:</td><td> <input type="text" name="autores" size="50" /> </td>
</tr>
<tr>
<td>Editorial:</td>
<td> <input type="text" name="editorial" size="50" /> </td>
</tr>
<tr>
<td>Año:</td>
<td> <input type="number" name="anio" size="5" /> </td>
</tr>
<tr>
<td>Genero:</td><td> <input type="text" name="genero" size="30" /> </td>
</tr>
<tr>
<td>Precio:</td><td> <input type="text" name="precio" size="10" /> </td>
</tr>
<tr>
<td colspan='2' align='center'>
<input type="submit" name="Ingresar" value="Ingresar">
<input type="submit" name="carrito" value="Carrito de Compras">
<input type="reset" name="limpiar" value="Cancelar" />
</td>
</tr>
</table>
</form>
</body>
</html>
Un formulario de llenado en caso de querer agregar algún artículo, de otro modo, se puede
<?php
$host = "localhost";
$usuario = "root";
$clave = "";
$bd = "biblioteca";
$conexion = mysqli_connect($host,$usuario,$clave,$bd);
if ($conexion)
{
echo "BASE DE DATOS CONECTADA";
}
else
{
echo "No se pudo conectar a la base de datos";
}
$isdn=$_POST['isdn'];
$titulo=$_POST['titulo'];
$autores=$_POST['autores'];
$editorial=$_POST['editorial'];
$anio=$_POST['anio'];
$genero=$_POST['genero'];
$precio=$_POST['precio'];
if(isset($_POST['Ingresar']))
{
$ingresar=$_POST['Ingresar'];
}
else
{
$ingresar='';
}
if(isset($_POST['carrito']))
{
$carrito=$_POST['carrito'];
}
else
{
$carrito='';
}
if($isdn!='' && $titulo!='' && $autores!='' && $editorial!='' && $anio!='' && $genero!
='' && $precio!='')
{
$usuario="root";
$clave='';
$bd="biblioteca";
$host="localhost";
$result=NULL;
}
}
else
{
header ("location:carrito.php");
}
echo "<br/><a href='principal.php'>Haga clic aqui para regresar<a>";
?>
Código la cual se puede ingresar los datos del FORM a la base de datos con código SQL.
CARRITO.PHP
<?php
$host = "localhost";
$usuario = "root";
$clave = "";
$bd = "biblioteca";
$conexion = mysqli_connect($host,$usuario,$clave,$bd);
?>
<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Carrito de Compras</title>
</head>
<body><br>
<div align="center">
<h3>Vista de Libros Disponibles</h3>
</thead>
<?php
$sql = "SELECT * FROM libros";
$resultado = mysqli_query($conexion,$sql);
while ($show=mysqli_fetch_array($resultado))
{
?>
<tbody>
<tr style="width:600px;">
<td style="width:100px;"><?php echo $show['ISDN'] ?
></td>
<td style="width : 300px;">
<?php echo $show['Titulo'] ?>
</td>
<td style="width : 300px;">
<?php echo $show['Autor'] ?>
</td>
<td style="width : 300px;">
<?php echo $show['Editorial'] ?>
</td>
<td style="width : 300px;">
<?php echo $show['Anio'] ?>
</td>
<td style="width : 300px;">
<?php echo $show['Genero'] ?>
</td>
<td style="width : 300px;">
<?php echo '$'.$show['Precio'] ?>
</td>
<td style="width : 300px;">
<form action="carrito.php" method="post" >
<input type="hidden" name="txtLibro" value="<?php echo
$show['Titulo'] ?>">
<input type="number" name="cantidad" value="1"
style="width:50px;"><br>
<input type="hidden" name="txtValor" value="<?php echo
$show['Precio'] ?>">
<input type="submit" name="agregar"value="Agregar"
value="btnAdd">
</form>
</td>
</tr>
<tbody>
<?php
}
?>
</table>
</div>
<?php
echo "<br><br>";
if (isset($_POST["agregar"]))
{
$Producto = $_POST['txtLibro'];
$a = $_POST['cantidad'];
$b = $_POST['txtValor'];
$total = $a*$b;
echo "<br><br>";
echo "El total del Producto $Producto es igual a $ $total pesos";
}
else
{
echo "No se ha realizado ninguna compra";
}
SALIR.PHP
<?php
session_start();
session_destroy();
header ("location:login.php");
exit();
La sección salir, abre y destruye sesión, devolviendo a LOGIN.PHP para volver a acceder.
Fig.- 11 – Retorno de Salir a LOGEIN.PHP
Bibliografía
https://docs.microsoft.com/es-es/sql/relational-databases/security/authentication-
access/create-a-database-user?view=sql-server-ver15