Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 28-02-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cool Sesiones

Hola

Tengo 3 paginas web .

La primera index.html :

<form action="comprobar.php" method="post">
Usuario : <input type="Text" name="nombre"><br>
Clave : <input type="Password" name="clave"><br>
<input type="Submit" value="Enviar">
</form>

la segunda comprobar.php :
Código PHP:
session_start();
$query = mysql_query($consulta,$connect);
    $rdo = mysql_num_rows($query);
    if ($rdo == 0){
    print('Error de identificación');
    print(' <META HTTP-EQUIV="REFRESH" CONTENT="5;URL=index.html"> ');
    }else {
    $_SESSION['nombre'] = $_POST['nombre'];
        ?>
        <META HTTP-EQUIV="REFRESH" CONTENT="0;URL=pefil.php">
        <?php
    
}
    
mysql_close($connect)
y la tercera perfil.php

Código PHP:
session_cache_expire(120);
sesion_start();
if (
$_SESSION['nombre'] == ''){
 print(
'<META HTTP-EQUIV="REFRESH" CONTENT="0;URL=index.html">');
 }

    print 
$_SESSION['nombre']; 
En la primera página pone el nombre de usuario y contraseña , y va a la página comprobar.php , si el nombre de usuario y contraseña no esta en la base de datos , pues regresa a index.html , si esta bien , va a perfil.php.

Si accede directamente a perfil.php , al ser $_SESSION['nombre'] = '' , pues regresa al principio .

El caso es que , no sé donde hay que poner varias cosas , por ejemplo , si pasa un tiempo (2 minutos por ejemplo) sin hacer nada y le da a actualizar al navegador (ya en la página index.php) , pues quiero que se acabe la sesión y vuelva al principio.

También quiero saber si el código simple que he puesto esta bien o no .

Otra cosa , como puedo saber las veces que un usuario ha iniciado sesión y guardarlo en algún campo de mysql .

Un saludo
Responder Con Cita
  #2  
Antiguo 28-02-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Cita:
Empezado por David
si pasa un tiempo (2 minutos por ejemplo) sin hacer nada y le da a actualizar al navegador (ya en la página index.php), pues quiero que se acabe la sesión y vuelva al principio.
Ni idea, supongo que si caduca la sessión se generará un error de página y se podrá indicar en el servidor APACHE que cuando suceda ese numero de error muestre una página concreta. Esto igual lo podrías hacer con cookies, busca en el foro porque este tema se trató hace poco tiempo.
Por otro lado, veo mas lógico que cambies el orden de estas dos funciones:
Código PHP:
sesion_start(); 
session_cache_expire(120); 
No estoy muy seguro si sirve para algo pero parece más lógico primero iniciar la sesión y luego modificar alguno de sus valores de configuración.

Cita:
Empezado por David
También quiero saber si el código simple que he puesto esta bien o no .
Hombre, mal lo que se dice mal yo no lo veo, lo que si que veo es un uso un poco raro de las etiquetas META cuando en PHP existen otras alternativas:
Código PHP:
   session_start();
   
$query mysql_query($consulta,$connect);
   
$rdo mysql_num_rows($query);
    if (
$rdo == 0){
       
header"Location: index.php?error=x" );
       exit();
    }else {
       
$_SESSION['nombre'] = $_POST['nombre'];
       
header"Location perfil.php" );
       exit();
    } 
Cita:
Empezado por David
Otra cosa , como puedo saber las veces que un usuario ha iniciado sesión y guardarlo en algún campo de mysql .
Simple, pones un campo en el prefil del usuario y lo utilizas como contador, cada vez que el usuario inicie una sesion solo debes hacer:
Código SQL [-]
UPDATE usuarios SET inicio_sesion = inicio_sesion + 1 WHERE id = x
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #3  
Antiguo 28-02-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Si pongo header en lugar de las etiquetas <meta>

me sale este error :

Warning: Cannot modify header information – headers already sent by... on line 22

Otra cosa si al insertar mal el nombre o password , le reenvio a index.html . Hay alguna forma , que le salga un "mensaje de nombre de usuario incorrecto" en index.html cuando viene de vuelta de la página verificar.php , por que no corresponde el usuario .

Última edición por David fecha: 28-02-2007 a las 20:08:13.
Responder Con Cita
  #4  
Antiguo 28-02-2007
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 22
kayetano Va por buen camino
Hola

Cita:
Empezado por David
Warning: Cannot modify header information – headers already sent by... on line 22
Las cabeceras (headers) son lo primero que se deben enviar, es decir no debes mandar nada de HTML (ni siquiera un espacio) antes que las cabeceras.

Cita:
Empezado por David
Otra cosa si al insertar mal el nombre o password , le reenvio a index.html . Hay alguna forma , que le salga código incorrecto en index.html cuando viene de vuelta de la página verificar.php , por que no corresponde el usuario .
Pues como te he puesto en el ejemplo anterior:
Código PHP:
    if ($rdo == 0){
       
header"Location: index.php?error=x" );
       exit(); 
} ... 
pasando un parametro a index.php puedes identificar el error, lo puedes indicar simplemente con un número y luego en el código de index.php compruebas si existe la variable $error y dependiendo de su valor muestras un mensaje u otro.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #5  
Antiguo 28-02-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
Cita:
Empezado por kayetano
Código PHP:
    if ($rdo == 0){
       
header"Location: index.php?error=x" );
       exit(); 
} ... 
Esta es la parte que no me sale . pongo por ejemplo

location.php?error=1

en la pagina index.php

pongo algo así :
Código PHP:
if (isset($error)){
print(
'nombre de usuario incorrecto..');
}

// también he probado con

if ($error ==1){
print(
'nombre de usuario incorrecto..');

la pregunta es si el parametro que se pasa después de ? , es una variable ??
Responder Con Cita
  #6  
Antiguo 28-02-2007
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Acuérdate del Register Globals que te comentó dec. Tanto si enviamos datos con un formulario como si los enviamos en la línea de direcciones, los valores ya no son accesibles directamente en PHP en forma de variables. En el caso de un formulario (si usa el método POST), debes usar el arreglo $_POST, y en el caso de la línea de direcciones debes usar $_GET.

// Saludos
Responder Con Cita
  #7  
Antiguo 01-03-2007
[David] David is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Málaga
Posts: 417
Poder: 21
David Va por buen camino
ya me sale .

Sabeis de algún buen manual para php5 ? por que los que tengo son de php4 y parece que esta muy cambiado el tema de las sesiones y de las variables .

por ahí he visto en inglés , no sé si sabeis de alguno bueno en español
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
TWebBrowser, cookies y sesiones Marcus Internet 2 14-09-2005 11:30:39
intraweb: control de sesiones source_code Internet 1 09-04-2005 20:54:12
Asunto de cookies y sesiones gatsu PHP 3 26-04-2004 18:55:24
Sesiones en PHP... Tanix PHP 2 11-08-2003 15:02:50
Sesiones y variablaes Fr@n PHP 16 28-05-2003 09:59:03


La franja horaria es GMT +2. Ahora son las 07:22:08.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi