Foros del Web » Programando para Internet » PHP »

utilizar solo contraseña para entrar en una pagina

Estas en el tema de utilizar solo contraseña para entrar en una pagina en el foro de PHP en Foros del Web. Buenas compañeros; Tengo una tabla llamada clientes, en la cual un campo se llama matrícula. Pues bien, en la página tengo k poner una matrícula ...
  #1 (permalink)  
Antiguo 05/09/2005, 04:30
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 13 años
Puntos: 3
utilizar solo contraseña para entrar en una pagina

Buenas compañeros;

Tengo una tabla llamada clientes, en la cual un campo se llama matrícula. Pues bien, en la página tengo k poner una matrícula para poder acceder a ver el resto de los datos del cliente, según la matrícula. Mi pregunta es, como puedo hacer por medio de sessiones, que el usuario meta en un input la matrícula, y si es cliente y la matrícula coincide que pueda ver sus datos. y si no, pues error.

Alguien me puede echar una manita porfabor!!!! os estaría muy agradecida.

Gracias de antemano. un saludo para todos
  #2 (permalink)  
Antiguo 05/09/2005, 04:45
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Pones un input que se llame matricula, cuando le des al boton de submit ira a otra pagina que recuperara esa matricula introducida y hara una consulta para ver si existe en la base de datos. Si existe, crea una varible de sesion con esa matricula, y le muestra los datos correspondientes. Si no existe, muestra un mensaje de error.

Si necesitas que te ponga el codigo me lo dices.
  #3 (permalink)  
Antiguo 05/09/2005, 04:59
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 13 años
Puntos: 3
utilizar solo una contraseña para entrar en una pag

Muchas gracias por la rapidez, te lo agradezco deberas:

Pues bien, he seguido tu consejo y he echo algo tal que así:
Akí es donde se escribe la matrícula, y a su vez con los mensajes de error:
Código PHP:
 <td width="238">
            <?php if($_GET["error"]=="3"){?>
            <span class="texto_rojo_alerta">La matricula no es correcta</span>
            <? }elseif($_GET["error"]=="2"){?>
            <span class="texto_rojo_alerta">La sesión ha caducado</span>
            <? }elseif($_GET["error"]=="1"){ ?>
            <span class="texto_rojo_alerta">La sesión no esta creada</span>
            <? ?>
            </td>
y el input es:
Código HTML:
<td valign="top">
		   <input name="matricula" type="text" class="gris_normal" id="matricula"></td> 

Esta es la página que recoje la variable matrícula, página que a su vez, debe mostrarme los datos del cliente.... :
Código PHP:
<?php
// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
header("location:index.php?error=1");
exit;
}
//chekeamos si la session está creada
if(!isset($_SESSION['id_cliente'])){
session_destroy();
header("location:index.php?error=2");
}
// usamos la sesion de nombre definido.
session_name(matricula);
// Iniciamos el uso de sesiones
session_start();

$sql="select ID_CLIENTE 
        from CLIENTES
        where MATRICULA='"
.$_POST["matricula"]."'
        order  by ID_CLIENTE
        limit 0,1"
;
        
$contador=mysql_num_rows($sql,$link)or die(mysql_error());

if(
$contador==0){
header("location:index.php?error=3");
}
$result=mysql_query($sql,$link)or die(mysql_error());
$row=mysql_fetch_array($result);
$_SESSION['id_cliente']=$id_cliente;

include(
"../conexion/conexion.php");
$link=Conectarse();
?>
Pero no me funciona, no entiendo porqué.si pongo la matrícula correcta me da estos errores:

Warning: session_destroy(): Trying to destroy uninitialized session in /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php on line 10

Warning: Cannot modify header information - headers already sent by (output started at /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php:10) in /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php on line 11

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php:10) in /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php on line 16

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php:10) in /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php on line 16

Warning: Wrong parameter count for mysql_num_rows() in /home/httpd/vhosts/aclass.es/subdomains/midas/httpdocs/clientes/cliente.php on line 24

y si pongo una falsa me da el primer error, k la contraseña no es válida...

Que te parece??? te agradecería que me dejaras ver tu cod para comparar y ver, o si me ayudas a encontrar el problema deste te estaría eternamente agradecida...

Un saludo enorme, y gracias de antemano.
  #4 (permalink)  
Antiguo 05/09/2005, 05:48
 
Fecha de Ingreso: agosto-2005
Mensajes: 101
Antigüedad: 12 años, 3 meses
Puntos: 0
Vamos por partes:
- No puedes hacer session_destroy() si todavia no has creado ninguna variable de sesion.
- session_start ponlo al principio de la pagina, antes de cualquier header
- Y por ultimo, no se como sera en mysql (yo no lo uso) pero a lo mejor tienes que hacer antes mysql_query para ejecutar la query y luego sacar el numero de filas
  #5 (permalink)  
Antiguo 05/09/2005, 06:01
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
... de acuerdo, solo algunos detalles:

- no es necesario crear "una variable de sesión", pero sí inicializarla (juego de palabras?)... no puedes destruir algo que no existe.

- ... no es tanto que no se pueda usar session_start() antes de header(); sí se puede... pero ninguna de estas dos funciones las puedes usar si ya antes haz enviado a imprimir algo (lease la documentación oficial).

- mysql_num_rows() devuelve los resultados de una consulta, antes tienes que hacer dicha consulta como dice chiriro... pero para poder hacer la consulta antes haz de conectarte. Sugeriría visitar las FAQ ó ver algún script de una consulta cualquiera. Las funciones que debes ocupar (en ese órden) son:
- mysql_connect()
- mysql_select_db()
- mysql_query()

... y agregar que después de un header() debe llevar un exit; manejas eso solo en el primero.

Un saludo.
__________________
٩(͡๏̯͡๏)۶
» Cómo hacer preguntas de manera inteligente «

"100 años después, la revolución no es con armas, es intelectual y digital"
  #6 (permalink)  
Antiguo 05/09/2005, 06:08
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 13 años
Puntos: 3
puf k rollo no me acabo de enterar...

buenas compañeros

Pues tengo la cabeza echa un lio...

He cambiado el orden a mi script y añadido los exit; despues de los header... ahora solo me da un error:

Warning: Wrong parameter count for mysql_num_rows() in z:\trabajos comun\internet\midas\clientes\cliente.php on line 13

Y el script:
Código PHP:
<?php
// usamos la sesion de nombre definido.
session_name(matricula);
// Iniciamos el uso de sesiones
session_start();  //

$sql="select ID_CLIENTE 
        from clientes
        where MATRICULA='"
.$_POST["matricula"]."'
        order by ID_CLIENTE
        limit 0,1"
;
        
$contador=mysql_num_rows($sql,$link)or die(mysql_error()); //

if($contador==0){
header("location:index.php?error=3");
exit;
}
$result=mysql_query($sql,$link)or die(mysql_error());
$row=mysql_fetch_array($result);
$_SESSION['id_cliente']=$id_cliente;

include(
"../conexion/conexion.php");
$link=Conectarse();

// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
header("location:index.php?error=1");
exit;
}

//chekeamos si la session está creada
if(!isset($_SESSION['id_cliente'])){
session_destroy(); 
header("location:index.php?error=2"); 
exit;
}

?>
Hago la consulta primer y luego compruebo que no esté vacio la consulta si no error, ... o como debo de escribir la consulta ? Ya hemirado las faqs pero con respecto a esto de las sessiones me cuesta un poco mas... y no me acabo de enterar. Siento mi torpeza. Muchas gracias de antemano por vuestra ayuda!!
  #7 (permalink)  
Antiguo 05/09/2005, 06:36
Avatar de jam1138
/** @package Moderador */
 
Fecha de Ingreso: julio-2004
Ubicación: sèveR led onieR lE
Mensajes: 9.368
Antigüedad: 13 años, 4 meses
Puntos: 101
El que tengas la sentencia escrita no quiere decir que la ejecutes, para ello necesitas de mysql_query()... pero antes necesitas conectarte (cosa que no veo que hagas).

Ve la documentación oficial (cuyo enlace dejé), hay un ejemplo más que claro de lo que tienes que hacer:

Ejemplo 1. Ejemplo mysql_num_rows
Código PHP:
<?php

$link 
mysql_connect("localhost""mysql_user""mysql_password");
mysql_select_db("database"$link);

$result mysql_query("SELECT * FROM table1"$link);
$num_rows mysql_num_rows($result);

echo 
"$num_rows Rows\n";

?>
Consulta el uso de las funciones que desconoscas...

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

"100 años después, la revolución no es con armas, es intelectual y digital"
  #8 (permalink)  
Antiguo 05/09/2005, 10:42
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 13 años
Puntos: 3
poner solo contraseña para entrar en una pag

Buenas foreros!

Lo he intentado, he leido lo que me pusisteis del manual, y no comprendo lo de sacar las filas y todo eso.Si que me conecto a la base de datos, cuando llamo a la funcion conectarse y el include.Nadie tiene un ejemplo u otro script por el estilo que sirva para lo mismo que pretendo yo? porfaborrrr!!! lo pido porfabor...

Pos un saludo y siento ser tan brasas, pero estoy un poco somnolienta y no me acabo de enterar del tema... toy un poco torpe
  #9 (permalink)  
Antiguo 05/09/2005, 19:54
Avatar de Bytevamp  
Fecha de Ingreso: junio-2005
Ubicación: /var/www/
Mensajes: 789
Antigüedad: 12 años, 6 meses
Puntos: 7
A ver mira en http://www.desarrolloweb.com/manuales/37/, donde te explican como hacer un sistema de autentificacion paso por paso.
__________________
"zankius veri mach" a todos los que me habeis ayudado.
carteles para inmobiliarias || alquiler de coches
  #10 (permalink)  
Antiguo 06/09/2005, 03:45
Avatar de susaninhax  
Fecha de Ingreso: noviembre-2004
Mensajes: 358
Antigüedad: 13 años
Puntos: 3
Muchhas graciasss!!!

Ya está solucionado, al final el código me ha quedado así para el que le pueda servir:
Código PHP:
<?php
include("../conexion/conexion.php");
$link=Conectarse();

// usamos la sesion de nombre definido.
session_name(matricula);
// Iniciamos el uso de sesiones
session_start();  //

$sql="select ID_CLIENTE
        from clientes
        where MATRICULA='"
.$_POST["matricula"]."'
        "
;
        
$result=mysql_query($sql,$link)or die(mysql_error());

$contador=mysql_num_rows($result);// el problema está akí. No puede haber un mysql_num_rows antes de mysql_query, pero como lo pongo?¿.

if($contador==0){
header("location:index.php?error=3");
exit;
}
$row=mysql_fetch_array($result);
$id_cliente=$row['ID_CLIENTE'];

$_SESSION['id_cliente']=$id_cliente;

// chequear si se llama directo al script.
if ($_SERVER['HTTP_REFERER'] == ""){
header("location:index.php?error=1");
exit;
}

//chekeamos si la session está creada
if(!$_SESSION['id_cliente']){
session_destroy(); 
header("location:index.php?error=2"); 
exit;
}
?>
Ya me funciona correctamente, muchas gracias por la ayuda
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 05:25.