Foros del Web » Programando para Internet » PHP »

login que funcione

Estas en el tema de login que funcione en el foro de PHP en Foros del Web. hola a todos, ando un poco perdido, estoy haciendo una web de prueba y me gustaría que cuando le diesemos al boton de login comprobase ...
  #1 (permalink)  
Antiguo 13/03/2010, 06:39
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
login que funcione

hola a todos, ando un poco perdido, estoy haciendo una web de prueba y me gustaría que cuando le diesemos al boton de login comprobase si ese usuario existe en la base de datos y sino pues que te diga que es incorrecto y no te deje acceder, por el contrario si es correcto que te cargue la pagina menu.php
me podeis ayudar,muchas gracias, el codigo es este:

<?php
session_start();
?>
<html>
<head>
<title>RKO 2.0 DISCOS</title>
<link rel="stylesheet" type="text/css" href="style.css"/>
<script>
function envio()
{
error=0;
if(document.getElementById("usuario").value=="")
{
alert("Campo usuario vacío");
error=1;
}
if(document.getElementById("pas").value=="")
{
alert("Campo contraseña vacio");
error=1;
}
if(error==0)
{

document.getElementById("formulario").submit();
}
}
</script>
</head>

<body>
<div id="container">
<div id="header">
<div id="logo">
<a href="index.php">RKO 2.0 DISCOS</a>
</div>
<div id="menu">
<a href="index.php">Home</a>&nbsp; &nbsp; &nbsp;<a href="menu.php">Tienda</a> &nbsp; &nbsp; &nbsp; <a href="registroa.php">Registrarse</a> &nbsp; &nbsp; &nbsp; <a href="finsesion.php">Log Out</a>
</div>
</div>

<div id="main">
<div id="left">
<div class="block">
<h2>Bienvenidos</h2>
Bienvenidos a la mejor tienda online de CDs de música
<br>¡¡REGISTRATE!! ¿a que esperas?</br>
<div class="clear"></div>
</div>
<div class="clear"></div>
</div>

<div id="right">
<div class="block">

<form action='menu.php' name="form1" id="form1" method='POST'>
<h2>Usuario:</h2> <input type='text' name='usuario' id='usuario' value=><br><br>
<h2>Contraseña: </h2><input type='password' name='pas' id='pas' value=><br>

<input type='button' name='login' value='OK' onClick=envio()>
</form>
<?php
if(!isset($_SESSION[usu])){
include 'conectar.php';
$sql="SELECT * FROM CLIENTES WHERE USUARIO='$_POST[usu]'";
$result=mysql_db_query("tienda",$sql);
$campo=mysql_fetch_array($result);
if(($_POST["usu"]==$campo[USUARIO])&&($_POST["pas"]==$campo[PASSWORD])){
$_SESSION[usu]=$_POST["usu"];
$_SESSION[pas]=$_POST["pas"];
}else{
echo "Usuario y/o contraseña incorrectos<br>";
}
if(!isset($_SESSION[usu]))}
?>

</br>
</br>
<a href='finsesion.php'>Cerrar sesión</a><br>
<a href='showcarrito.php'>Mostrar carrito</a>
<br>
<br>
"Debe iniciar sesión para poder acceder a nuestros productos"<br>

</div>
</div>

<div class="clear"></div>
</div>
<div id="footer">
&copy; Copyright 2010 Jesus & Dani &nbsp;<span class="separator"></span> &nbsp;
</div>
</div>
</html>
  #2 (permalink)  
Antiguo 13/03/2010, 07:39
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: login que funcione

1. ¿Porqué validas dos veces si existe $_SSESSION['usu'] ? (A propósito, fíjate el enclapsulamiento)
2. Ninguno de los dos está cerrado. ¿Te falta código o se te quedó?
3. Además de esto ¿Q es lo que te falla en el script? En la validación del primer isset, si el login es correcto pués redirecciona a la página indicada, es lo q te falta a simple vista
  #3 (permalink)  
Antiguo 13/03/2010, 07:50
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: login que funcione

hola,gracias, me podrias corregir el codigo sino es mucha molestia para que me haga una idea de como va esto y poder aprender para hacerlo yo.saludos
  #4 (permalink)  
Antiguo 13/03/2010, 07:59
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: login que funcione

Bueno, no es para acostumbrarse pero aquí va. OJO: debes revisar el problema del encapsulamiento de los datos $_POST de las consultas. Si buscas en este mismo foro y en las FAQs ya el tema está tratado.
Código PHP:
Ver original
  1. <?php
  2. ?>
  3. <html>
  4. <head>
  5. <title>RKO 2.0 DISCOS</title>
  6. <link rel="stylesheet" type="text/css" href="style.css"/>
  7. <script>
  8. function envio()
  9. {
  10. error=0;
  11. if(document.getElementById("usuario").value=="")
  12. {
  13. alert("Campo usuario vacío");
  14. error=1;
  15. }
  16. if(document.getElementById("pas").value=="")
  17. {
  18. alert("Campo contraseña vacio");
  19. error=1;
  20. }
  21. if(error==0)
  22. {
  23.  
  24. document.getElementById("formulario").submit();
  25. }
  26. }
  27. </script>
  28. </head>
  29.  
  30. <body>
  31. <div id="container">
  32. <div id="header">
  33. <div id="logo">
  34. <a href="index.php">RKO 2.0 DISCOS</a>
  35. </div>
  36. <div id="menu">
  37. <a href="index.php">Home</a>&nbsp; &nbsp; &nbsp;<a href="menu.php">Tienda</a> &nbsp; &nbsp; &nbsp; <a href="registroa.php">Registrarse</a> &nbsp; &nbsp; &nbsp; <a href="finsesion.php">Log Out</a>
  38. </div>
  39. </div>
  40.  
  41. <div id="main">
  42. <div id="left">
  43. <div class="block">
  44. <h2>Bienvenidos</h2>
  45. Bienvenidos a la mejor tienda online de CDs de música
  46. <br>¡¡REGISTRATE!! ¿a que esperas?</br>
  47. <div class="clear"></div>
  48. </div>
  49. <div class="clear"></div>
  50. </div>
  51.  
  52. <div id="right">
  53. <div class="block">
  54.  
  55. <form action='menu.php' name="form1" id="form1" method='POST'>
  56. <h2>Usuario:</h2> <input type='text' name='usuario' id='usuario' value=><br><br>
  57. <h2>Contraseña: </h2><input type='password' name='pas' id='pas' value=><br>
  58.  
  59. <input type='button' name='login' value='OK' onClick=envio()>
  60. </form>
  61. <?php
  62. if(!isset($_SESSION[usu])){
  63. include 'conectar.php';
  64. $sql="SELECT * FROM CLIENTES WHERE USUARIO='$_POST[usu]'";
  65. $result=mysql_db_query("tienda",$sql);
  66. $campo=mysql_fetch_array($result);
  67. if(($_POST["usu"]==$campo[USUARIO])&&($_POST["pas"]==$campo[PASSWORD])){
  68. $_SESSION[usu]=$_POST["usu"];
  69. $_SESSION[pas]=$_POST["pas"];
  70. header("Location: users.php"); //ESTA PÁGINA ES LA RESTRINGIDA Q TIENES
  71. }else{
  72. echo "Usuario y/o contraseña incorrectos<br>";
  73. }
  74. }
  75. ?>

Users.php
Código PHP:
Ver original
  1. <?php
  2. //Luego en users.php
  3. if(!isset($_SESSION[usu])){
  4.     header("Location: index.php"); //ESTA ES LA PÁGINA DE LOGIN
  5. } else {
  6. ?>
  7.  
  8. </br>
  9. </br>
  10. <a href='finsesion.php'>Cerrar sesión</a><br>
  11. <a href='showcarrito.php'>Mostrar carrito</a>
  12. <br>
  13. <br>
  14.  
  15. </div>
  16. </div>
  17.  
  18. <div class="clear"></div>
  19. </div>
  20. <div id="footer">
  21. &copy; Copyright 2010 Jesus & Dani &nbsp;<span class="separator"></span> &nbsp;
  22. </div>
  23. </div>
  24. </html>
  25. <?}
  #5 (permalink)  
Antiguo 13/03/2010, 08:01
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: login que funcione

vale,muchas gracias , voy a analizar los codigos para aprender de esto
  #6 (permalink)  
Antiguo 13/03/2010, 08:13
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: login que funcione

me sale esto:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\AppServ\www\tiendacd\index.php:1) in C:\AppServ\www\tiendacd\index.php on line 2

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\AppServ\www\tiendacd\index.php:1) in C:\AppServ\www\tiendacd\index.php on line 2

a que se debe??
  #7 (permalink)  
Antiguo 13/03/2010, 08:16
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: login que funcione

Borra cualquier espacio que tengas antes de session_start(). No debe haber ninguna salida de texto
  #8 (permalink)  
Antiguo 13/03/2010, 08:52
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: login que funcione

aun revisando el codigo,me dice esto:

Warning: mysql_fetch_array(): supplied argument is not a valid MySQL result resource in C:\AppServ\www\tiendacd\index.php on line 67

Warning: Cannot modify header information - headers already sent by (output started at C:\AppServ\www\tiendacd\index.php:8) in C:\AppServ\www\tiendacd\index.php on line 71
  #9 (permalink)  
Antiguo 13/03/2010, 08:57
Avatar de eulloa  
Fecha de Ingreso: octubre-2007
Ubicación: Donde caiga la noche, si mi hijo me deja
Mensajes: 691
Antigüedad: 16 años, 6 meses
Puntos: 5
Respuesta: login que funcione

Deberías leer aquí, sobre el uso correcto de las comillas, en el primero de los casos de los errores.
http://www.forosdelweb.com/f18/como-...s-bien-588701/
El otro error ha sido más mío q tuyo. Deberías pensar en separar el code HTMl del PHP para este caso. Pasa q cualquier salida al navegador antes de header dará este error
  #10 (permalink)  
Antiguo 13/03/2010, 08:59
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: login que funcione

he corregido el de la linea 67, no era tiendacd sino tiendadiscos,voy a ver si puedo con el de la 71
  #11 (permalink)  
Antiguo 13/03/2010, 09:16
 
Fecha de Ingreso: marzo-2010
Mensajes: 79
Antigüedad: 14 años, 1 mes
Puntos: 0
Respuesta: login que funcione

en teoria ya no tiene errores y cuando te dejas un campo vacio te lo dice pero aun asi sigue entrando a la siguiente pagina sea cual sea los users o passwords que pongas, ¿porque pasa esto?? muchas gracias

Etiquetas: login
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 16:06.