Foros del Web » Programando para Internet » PHP »

Autentificar Usuarios

Estas en el tema de Autentificar Usuarios en el foro de PHP en Foros del Web. Hola a todos. Tengo un formulario en el cual pido el Login y Password a los usuarios el problema es que siempre que pongo el ...
  #1 (permalink)  
Antiguo 31/03/2004, 18:16
Avatar de Cuezaltzin  
Fecha de Ingreso: diciembre-2003
Ubicación: Frente al Monitor
Mensajes: 252
Antigüedad: 20 años, 4 meses
Puntos: 0
Exclamación Autentificar Usuarios

Hola a todos. Tengo un formulario en el cual pido el Login y Password a los usuarios el problema es que siempre que pongo el Login y Password correctos por primera vez me manda el error de Usuario no registrado. Me deja entrar hasta la segunda vez que le doy el Login y Password. Me puede decir que esta mal. Aqui esta mi codigo:

///////Formulario.php

<form method="POST" action="Check.php">

<input type="text" name="Login" size="20"></p>
<p><input type="text" name="Password" size="20"></p>
<p><input type="submit" value="Enviar" name="B1"><input type="reset" value="Restablecer" name="B2"></p>

</form>

////////check.php

<?

$user = $_POST['Login'];
$pass = $_POST['Password'];

function Conectarse()
{
if (!($link=mysql_connect("localhost","", "")))
{
echo "Error conectando a la base de datos.";
exit();
}
if (!mysql_select_db("mibase",$link))
{
echo "Error seleccionando la base de datos.";
exit();
}
return $link;
}


$link=Conectarse();

$result=mysql_query("SELECT Login, Password FROM Usuarios WHERE Login='$user' AND Password='$pass'",$link);

if (!$result) {
echo("<p>Error: " . mysql_error() . "</p>");
exit();
}

$rowCheck = mysql_num_rows($result);

if($rowCheck > 0){

$row= mysql_fetch_array($result);

session_start();

$_SESSION['Login']=$row['Login'];

header( "Location: Administrador.php" );

}

else
{

header( "Location: Negado.php" );
}

?>

////////Comprobar.php

<?

session_start();

if (!isset($_SESSION['Login'])){

die ("Usuario no registrado");

}

?>

Y en todas mis paginas tengo <? include ("Comprobar.php") ?>

Que es lo que esta mal.
__________________
Hasta la victoria Siempre.
  #2 (permalink)  
Antiguo 31/03/2004, 18:42
 
Fecha de Ingreso: marzo-2004
Mensajes: 7
Antigüedad: 20 años
Puntos: 0
:D chequea a ver si te funciona mejor

Código PHP:
<form method="POST" action="Check.php">

<input type="text" name="Login" size="20"></p>
<p><input type="text" name="Password" size="20"></p>
<p><input type="submit" value="Enviar"><input type="reset" value="Restablecer"></p>

</form>

////////check.php

<?php //usa <?php, <? tiene problemas de compatibilidad

$user $_POST['Login'];
$pass $_POST['Password'];

function 
Conectarse() 

$link mysql_connect('localhost') or die('Error conectando a la base de datos.');
mysql_select_db("mibase",$link) or die('Error seleccionando la base de datos.');
return 
$link


$link Conectarse();

$result mysql_query("SELECT Login, Password FROM Usuarios WHERE Login='$user' AND Password='$pass'",$link);

if (!
$result) {
echo(
"<p>Error: " mysql_error() . "</p>");
exit();
}

if(
mysql_num_rows($result) == 1){ //solamente puede haber un resultado!
$Login mysql_result($result,0,'Login'); //mejor usa mysql_result cuando tu resultado sea de un solo row
$Password mysql_result($result,0,'Password');
session_start();
session_register(); //hay algunos servers que requieren register :)
$_SESSION['Login']=$Login;
$_SESSION['Password']=$Password;
header("Location: Administrador.php");
} else {
header("Location: Negado.php");
}
?>

////////Comprobar.php

<?php
session_start
();
if (!isset(
$_SESSION['Login'])){
die (
"Usuario no registrado");
}
?>
no recomiendo el uso de funciones en este caso, ya que solamente usaras este codigo en esta pagina...

Última edición por MC_Cameri; 31/03/2004 a las 18:44
  #3 (permalink)  
Antiguo 23/04/2004, 12:30
Avatar de Cuezaltzin  
Fecha de Ingreso: diciembre-2003
Ubicación: Frente al Monitor
Mensajes: 252
Antigüedad: 20 años, 4 meses
Puntos: 0
Hola a todos.

Sigo con el mismo problema, por que siempre tengo que escribir dos veces el codigo de acceso para que me deje entrar.

Alguien me puede decirl cual es la falla.
__________________
Hasta la victoria Siempre.
  #4 (permalink)  
Antiguo 23/04/2004, 15:58
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 3 meses
Puntos: 129
Habrá que ver que configuración de sesiones usas.

Revisa si propagas el SID en cookies:
session.use_cookies = 1

y si dispones de un navegador que acepte cookies.

Por qué ... en tu código no propagas el SID manualmente, PHP tampco lo hará aunque uses session.use_trans_sid = 1 en tu php.ini por qué usas redireccionamiento tipo header() donde PHP no entra a reescribir el SID en el link a redirecionar.

más info y detalles de configuración:
www.php.net/session

Las cookies sólo están disponibles en la siguiente petición al servidor (ojo con eso) lo mismo que ahí estaran disponibles tus variables en $_SESSION en la próxima recaga o redirecionamiento que hagas . .pero todo depende de si se pudo crear es cookie (si es que propagas el SID en cookies y si usas un navegador que las acepte).

-----

Cita:
session_register(); //hay algunos servers que requieren register :)
depende de la versión de PHP .. y nunca hay que mezclar registro de variabels de sesión por esa función y por los arrays superglobales $_SESSION ..

Un saludo,
__________________
Por motivos personales ya no puedo estar con Uds. Fue grato haber compartido todos estos años. Igualmente los seguiré leyendo.
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 06:17.