Foros del Web » Programando para Internet » PHP »

Como harian.....

Estas en el tema de Como harian..... en el foro de PHP en Foros del Web. buenas..... tengo una pequeña duda..... que aunque creo y pensaran asi es bastante tonta.... cuando crean una conexion con la bbdd cuanto tiempo dura? me ...
  #1 (permalink)  
Antiguo 23/04/2005, 12:41
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 1 mes
Puntos: 0
Como harian.....

buenas..... tengo una pequeña duda..... que aunque creo y pensaran asi es bastante tonta....

cuando crean una conexion con la bbdd cuanto tiempo dura?

me explico...... un usuario se valida en una pagina....... se crea una conexion con una bbdd hace una query para ver si el usuario existe o no...
bien si existe, lo valida
pero y ahora?
se cierra la conexion o sigue abierta?

posteriormente habran mas querys.... pero no se como afrontar eso.
abro conexion cada vez que haga una query¿?

Saludos
  #2 (permalink)  
Antiguo 23/04/2005, 19:48
 
Fecha de Ingreso: diciembre-2004
Ubicación: Iquique, Chile
Mensajes: 150
Antigüedad: 19 años, 4 meses
Puntos: 0
Holas

Cuando te conectas, el sistema te reconoce para la siguiente etapa, pero nada más.

Siquieres una autentificación y mantener al usuario validado, debes utilizar cookies y las inicio de sesiones, para entrar en el resto de las páginas.

Cuando el usuario se aburra se sale cerrando la sesión, si quiere volver debe entrar el usuario y password.

index.php

Código PHP:
<html>
<head>
<title>formulario de autentificación</title>
<style>
.err_1 {font-weight:bold;color:ffffff;} .err_2 {font-weight:bold;color:red;}
</style>
</head>
<body>
<center>
    <form name=users action=control.php method=POST>
        <table border=0 cellspacing=0 cellpadding=0>
            <tr>
                <!-- falta registro -->
                <td colspan=2 bgcolor=red>
                    <span class=err_1>Datos Incorrectos</span>
                </td>
            </tr>
            <tr>
                <td>
                    <? 
                        
if($_GET['errorus'] == "err_us")
                        {
?>
                            <span class=err_2>User :</span>
                        <?}
                        else
                        {
?>
                            User :
                        <?}?>
                </td>
                <td>
                    <input type=text name=usuario size=8 maxlength=20>
                </td>
            </tr>
            <tr>
                <td>
                    <?
                        
if($_GET['errorpw'] == "err_pw")
                        {
?>
                            <span class=err_2>Password :</span>
                        <?}
                        else
                        {
?>
                            Password :
                        <?}?>
                </td>
                <td><input type=password name=claves size=8 maxlength=20></td>
            </tr>
            <tr><td height=25></td></tr>
            <tr>
                <td>
                    <input type=submit value=Entrar>
                </td>
            </tr>
        </table>
    </form>
</center>
</body>
</html>
control.php

Código PHP:
<?
    
#variables de usuario y password
    
$user trim($_POST['usuario']);
    
$clave trim($_POST['claves']);
    
#variables de base de datos
    
$base "usuario";
    
$tabla "acceso";
    
#establecer conección
    
$conexion mysql_connect("localhost","","") or die (mysql_error());
    
mysql_select_db($base,$conexion);
    
# Consultas SQL
    
$ssql "SELECT claves FROM $tabla WHERE usuario='$user'";
    
#Comprobar variables completas
    
if($user != "" && $clave)
    {
        
$resultado mysql_query($ssql,$conexion);
        if(
$rs mysql_fetch_array($resultado))
        {
            
# verificar accesos
            
if ($clave == $rs[claves])
            {
                
// iniciar sesiones
                
session_start();
                
$_SESSION['permiso'] = "si";
                
// colocar cookie
                    
setcookie("usuario",$user,time()+7776000);
                    
setcookie("paso",$clave,time()+7776000);
                
?> 
                    Ingreso exitoso, ahora sera dirigido a la pagina principal.
                    <br>
                    Espere un momento ... 
                    <SCRIPT LANGUAGE="javascript"> 
                    location.href = "aplicacion.php"; 
                    </SCRIPT> 
                <? 
            
}
            else
            {
                
header("Location: index_1.php?errorpw=err_pw&errorus=no");
            }
        }
        else
        {
            
header("Location: index_1.php?errorus=err_us&errorpw=no");
        }
            
mysql_free_result($resultado);
    }
    else
    {
        
header("Location: index_1.php?errorus=err_us&errorpw=err_pw");
    }
    
mysql_close($conexion);
?>
Ahora colocamos el código de la seguridad, para comprobar el inicio de sesiones de forma correcta:

seguridad.php

Código PHP:
<?
    
//Inicio sesión
    
session_start();
    
//comprobar autentificación
    
if ($_SESSION['permiso'] != "si")
    {
        
// ir a ingreso usuario
        
header("Location: index.php");
        
// salir
        
exit();
    }
?>
Luego las páginas que continuan:

aplicacion.php

Código PHP:
<?
include ("seguridad.php");
$base "usuario";
$tabla "acceso";
$cook_user $HTTP_COOKIE_VARS['usuario'];
?>
<html>
<head>
<title>Aplicación segura</title>

</head>
<body>
<h3>Página segura</h3>
<br>
<?
    
echo "Usuario actual : $cook_user";
?>
<br>
<a href=aplicacion_2.php>Continuar</a>
<?include("lista.txt");?>
</body>
</html>
aplicacion_2.php

Código PHP:
<?
include ("seguridad.php");
$user $HTTP_COOKIE_VARS['usuario'];
?>
<html>
<head>
<title>Aplicación segura</title>

</head>
<body>
<? echo "Usuario actual : $user"?>
<h3>Página segura</h3>
<br>
Continuación y termino de la sesión
<br><br>
<a href=listado.php>Enlistar Usuarios</a>
<br><br>
<a href=salir.php>Salir</a>
</body>
</html>
listado.php
Código PHP:
<?
include ("seguridad.php");
#datos usuario de la cookie
$user $HTTP_COOKIE_VARS['usuario'];
#cargar variables
$base "usuario";
$tabla "acceso";
#conección a base
$conexion mysql_connect("localhost","root","");
# asignar base de datos
mysql_select_db($base,$conexion);
#selección de datos
$ssql "SELECT * FROM $tabla";
$resultados mysql_query($ssql,$conexion);
# ver usuario actual
echo "Usuario actual : $user";
#cabezera
?>
<br>
<table border=0 cellspacing=0 cellpadding=0>
    <tr>
        <td>Usuario</td><td>Password</td>
    </tr>
<?
while ($row mysql_fetch_array($resultados))
{
    echo 
"<tr><td>".$row['usuario']."</td>";
    echo 
"<td>".$row['claves']."</td></tr>";
}
mysql_free_result($resultados);
mysql_close($conexion);
?>
</table>
<br><br>
<a href=salir.php>Salir del Sistema</a>
Por último, el código destinado al termino de la sesión:

salir.php

Código PHP:
<?
// terminar la sesión actual
session_start();
session_destroy();
// destruir cookies
    
setcookie('usuario','x',time()-3600);
    
setcookie('paso','x',time()-3600);
?>
<html>
<head>
<title>Salida del Sistema</title>

</head>
<body>
<h3>Esta fuera del sistema</h3>
</body>
Nos vemos.
  #3 (permalink)  
Antiguo 24/04/2005, 03:04
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 19 años, 8 meses
Puntos: 102
Cita:
Iniciado por cyborg
cuando crean una conexion con la bbdd cuanto tiempo dura?
Contestando concretamente a tu pregunta... si usas mysql_connect() la conexón se cierra al terminar tu script. Podrías usar mysql_close() al final de este pero la verdad no es necesario. Cito de php.net
Cita:
Nota: Normalmente no es necesario ya que la aperturas no-persistentes son cerradas automaticamente al final de la ejecución del script.
Aclarar que con mysql_pconnect() haces una conexión persistente... esto es, que al contrario de mysql_connet() ésta conexión sí quedará abierta.

Comentario al código de Nostromo... en una mirada "por encimita" creo es demasiado complicado.. puede simplificarse, además que es preferible evitar el suso de cookies.. y más si esta no es permanente, para tal caso lo que quieres hacer se puede hacer perfectamente con la Basde de Datos.

Saludos!
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #4 (permalink)  
Antiguo 24/04/2005, 04:13
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 1 mes
Puntos: 0
wow gracias a las 2, y gracias por el código, como ya he dicho alguna vez, estoy empezando en esto y mas de un dolor de cabeza llevo
el movimiento dicen que se aprende andando, y de momento solo estoy mirando, son muchas dudas que posiblemente desaparezcan cuando uno empiece a programar.
Entonces mejor con cookies o sin cookies?

con mysql_pconnect() la conexion dura hasta que se hace un close, o tiene un tiempo de vida limitado?
si se cerrase el navegador la conexion seguiria abierta?

saludos
  #5 (permalink)  
Antiguo 24/04/2005, 05:12
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 1 mes
Puntos: 0
por cierto...... estoy un poco perdido.... bueno mucho....

me han pasado el zen studio...... que tengo que instalar?
el cliente? el servidor? los 2?

del DBG 2.11.32 que tengo que bajarme?
este DBG 2.11.32 dbglistner y este DBG 2.11.32 dbg modules ¿?

y del php5 solo este? PHP 5.0.4 zip package ¿?
  #6 (permalink)  
Antiguo 25/04/2005, 07:18
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Cita:
Iniciado por cyborg
por cierto...... estoy un poco perdido.... bueno mucho....

me han pasado el zen studio...... que tengo que instalar?
el cliente? el servidor? los 2?

del DBG 2.11.32 que tengo que bajarme?
este DBG 2.11.32 dbglistner y este DBG 2.11.32 dbg modules ¿?

y del php5 solo este? PHP 5.0.4 zip package ¿?
Ya realizastes tu pregunta en otro mensaje tuyo .. por favor continua insistiendo en tus mensajes iniciales .. no lies ..

Un saludo,
  #7 (permalink)  
Antiguo 25/04/2005, 10:29
 
Fecha de Ingreso: febrero-2004
Ubicación: España. Madrid
Mensajes: 454
Antigüedad: 20 años, 1 mes
Puntos: 0
mi perdones
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 11:07.