Foros del Web » Programando para Internet » PHP »

validar usuario y contraseña

Estas en el tema de validar usuario y contraseña en el foro de PHP en Foros del Web. Hola tengo en una tabla un nombre y una contraseña y quiero ke visualizar otra tabla si son correctos el nombre y la contraseña Mi ...
  #1 (permalink)  
Antiguo 20/01/2005, 07:04
 
Fecha de Ingreso: diciembre-2004
Mensajes: 371
Antigüedad: 19 años, 3 meses
Puntos: 0
validar usuario y contraseña

Hola tengo en una tabla un nombre y una contraseña y quiero ke visualizar otra tabla si son correctos el nombre y la contraseña

Mi codigo:

///////////////////---visualizar.html---////////////////////////////////////////
<html>
<head>
<title></title>
</head>
<body>
<FORM METHOD="POST" ACTION="Visualizar.php">
<table cellpadding="0" cellspacing="0">
<tr>
<td>
<font size="2px"> Nombre:</font><input type="text" name="nombre" value="" class="textbox">
&nbsp;&nbsp;&nbsp;<font size="2px">Contraseña:</font><input type="text" name="contraseña" value="" class="textbox"><br><br>
<br><br><INPUT TYPE="submit" NAME="accion" VALUE="ENVIAR" class="boton">
</td>
</tr>
</table>
</form>
</body>
</html>


//////////////////////////////////////////////////////////////////////////////////



////////////////////////---visualizar.php--///////////////////////////////////



<html>
<head>
<title></title>
</head>
<body>
<?php
/*----------- validar usuario ----------------*/
/* Conexion, seleccion de base de datos */


$enlace = mysql_connect("datos...")
or die("No pudo conectarse : " . mysql_error());
/*echo "Conexi&oacute;n exitosa";*/
mysql_select_db("basedatos") or die("No pudo seleccionarse la BD.");
/* Realizar una consulta SQL */
$consulta = "SELECT * FROM acceso";
$resultado = mysql_query($consulta) or die("La consulta fall&oacute;: " . mysql_error());

/*------ pasar el valor del campo nombre a la variable ------*/

$datos = "SELECT usuario";

/* comprobar el textbox con la base de datos*/

if ($_POST['nombre'] == $datos)
{
cierro conex....
abro de nuevo la base de datos con otra tabla
Visualizo la tabla...
}
else
{
acceso denegado
}

?>
</body>
</html>


¿Que tengo mal,,me da ke sera sobre estas lineas:

/*------ pasar el valor del campo nombre a la variable ------*/

$datos = "SELECT usuario";

/* comprobar el textbox con la base de datos*/

if ($_POST['nombre'] == $datos)


Un saludo.

Última edición por yaviz; 20/01/2005 a las 07:06
  #2 (permalink)  
Antiguo 20/01/2005, 07:13
 
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 334
Antigüedad: 20 años, 9 meses
Puntos: 0
Lo has puesto asi?

$datos = "SELECT usuario";

Esto no es una sentencia SQL correcta, pues le tienes que decir de donde lo tiene que cojer, es decir:

$datos = "SELECT usuario from nombre_tabla";

Otra cosa, si llamas a una pagina desde un formulario, llamala por su nombre, tal cual, no lo pongas en mayúsculas si esta en minúsculas:

<FORM METHOD="POST" ACTION="Visualizar.php">

por

<FORM METHOD="POST" ACTION="visualizar.php">

puede que no te de problemas pero es aconsejable que sigas un patron a la hora de programar
__________________
http://reunga.com
Desarrollo de aplicaciones informáticas
  #3 (permalink)  
Antiguo 20/01/2005, 07:26
 
Fecha de Ingreso: diciembre-2004
Mensajes: 371
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola, me sigue saliendo acceso denegado o sea ke no se cumple la condicion
puse esto como me dijiste:

$datos = "SELECT usuario from acceso";


con esto cojo el valor1 "unico valor" del campo usuario??
  #4 (permalink)  
Antiguo 20/01/2005, 08:53
 
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 334
Antigüedad: 20 años, 9 meses
Puntos: 0
con eso coges todos los valores con el nombre "usuario" que tienes en la tabla.

Vamos a ver, te recomiendo un par de cosas:

1º.- No pongas en los <input name="..."> ninguna letra que no sea del alfabeto ingles, como puede ser la "ñ" pues este simbolo no lo reconoce el ordenador y puede haber conlictos.
2º.-De donde sale "$datos"? Es una cadena de texto?
En el caso de ser una cadena de texto no debes comparar asi como tu haces:

if ($_POST['nombre'] == $datos)

sino:

if (strcmp($_POST['nombre'],$datos)==0)

No se porque mas puede dar error.
Revisa todos los nombres de la base de datos para que te funcionen correctamente y pon especial atencion para que te funcionen correctamente.
__________________
http://reunga.com
Desarrollo de aplicaciones informáticas
  #5 (permalink)  
Antiguo 20/01/2005, 10:41
 
Fecha de Ingreso: diciembre-2004
Mensajes: 371
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola gracias por molestarte en contestar.

&datos es una variable donde kiero guardar el valor ke hay en el campo nombre de la tabla acceso


no me da error ,simplemente siempre me hace el else.

Te pongo todo el codigo tali como lo tengo para ke lo veas mejor:



<html>
<head>
<title></title>
</head>
<body>
<?php
$link = mysql_connect("localhost", "usuario", "contraseña");
mysql_select_db("basedatos", $link);

/* usuario = campo $ acceso = tabla*/

$datos = "SELECT usuario from acceso";

/*nombre = campo de texto*/

if (strcmp($_POST['nombre'],$datos)==0) /*si se cumple la condicion cierro la base de datos y la vuelvo a abrir con otra tabla para mostrarla*/
{
/* Liberar conjunto de resultados */
mysql_free_result($resultado);
/* Cerrar la conexion */
mysql_close($enlace);
/*-------------Abrir tabla acceso----------------------------*/

/* Conexion, seleccion de base de datos */
$link = mysql_connect("localhost", "usuario", "contraseña");
or die("No pudo conectarse : " . mysql_error());
/*echo "Conexi&oacute;n exitosa";*/
mysql_select_db("basedatos") or die("No pudo seleccionarse la BD.");
/* Realizar una consulta SQL */
$consulta = "SELECT * FROM tabla2";
$resultado = mysql_query($consulta) or die("La consulta fall&oacute;: " . mysql_error());
/* Impresion de resultados en HTML */
echo "<center>";
echo "<table BORDER=1 CELLSPACING=1 CELLPADDING=1>\n";
echo "<TR><TD>&nbsp;INDICE</TD><TD>&nbsp;NOMBRE</TD><TD>&nbsp;COMENTARIO</TD></TR>\n";
while ($linea = mysql_fetch_array($resultado, MYSQL_ASSOC))
{
echo "\t<tr>\n";
foreach ($linea as $valor_col) {
echo "\t\t<td>$valor_col</td>\n";
}
echo "\t</tr>\n";
}
echo "</table>\n";
echo "</center>";
/* Liberar conjunto de resultados */
mysql_free_result($resultado);

/* Cerrar la conexion */
mysql_close($enlace);
}

else
{
echo "Acceso denegado...";
}
?>
</body>
</html>


Lo ke kiero haser es coger el valor de la caja de texto nombre ke le pasa la pagina anterior con un POST y compararlo con el campo nombre de la base de datos "basedatos" si son iguales ke muestre la tabla "tabla2" y sin no lo son ke de un mensaje acceso denegado.

la tabla acceso seria asi:


INSERT INTO `borrar` ( `nombre` , `password` )
VALUES (
'javi', MD5( 'contra' )
);



Weno pos lo ke pasa eske siempre me hase el caso else.
Espero haberlo explicado bien, y gracias por todo.
  #6 (permalink)  
Antiguo 21/01/2005, 10:16
 
Fecha de Ingreso: diciembre-2004
Mensajes: 371
Antigüedad: 19 años, 3 meses
Puntos: 0
prove con esto :

$datos = "SELECT usuario from acceso";
if(ereg("$datos",$_POST['nombre']))

y me sigue hasiendo el caso else

prove a ver el valor ke tenia la variable $datos y me salio esto:SELECT usuario from acceso

lo esta pillando como un string, creo y no pilla el valor de la base de datos del campo nombre.

Ayudita!!!!
  #7 (permalink)  
Antiguo 21/01/2005, 10:20
 
Fecha de Ingreso: junio-2003
Ubicación: Valencia
Mensajes: 334
Antigüedad: 20 años, 9 meses
Puntos: 0
Mira haber si cambiando esto:

$datos = "SELECT usuario from acceso";
if(ereg("$datos",$_POST['nombre']))

por esto:

$datos = "SELECT usuario from acceso";
if(eregi("$datos",$_POST['nombre']))

Te falta una i en "eregi"
__________________
http://reunga.com
Desarrollo de aplicaciones informáticas
  #8 (permalink)  
Antiguo 21/01/2005, 11:10
 
Fecha de Ingreso: diciembre-2004
Mensajes: 371
Antigüedad: 19 años, 3 meses
Puntos: 0
no,,tampoco,,de todas maneras ereg tambien esta bien,, Me dijeron ke incluye las mayusculas.
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 09:10.