Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Login

Estas en el tema de Login en el foro de PHP en Foros del Web. Hola, tengo un problema al intentar acceder al hacer login, se supone que al entrar a la pagina principal hay un formulario que envía los ...
  #1 (permalink)  
Antiguo 15/02/2014, 09:00
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Login

Hola, tengo un problema al intentar acceder al hacer login, se supone que al entrar a la pagina principal hay un formulario que envía los datos a otro archivo llamado login.php, el cuál comprueba el email y contraseña introducidos, si son correctos me crearía una variable de session y me mandaría a la página principal, y esta a su vez al haber una variable de sesión me mandaría a la pagina llamada formulario_pedido.php, el problema es que si me sale el formulario, pero aun que le de al submit, me sigo quedando en la página principal, con los campos en blanco y sin ningún tipo de notificación que se supone que en login.php si los datos introducidos no son correctos me notificaría para mas tarde redirigirme a la pagina principal, aquí os mando el código de la pagina principal:
Código PHP:
<?php
    session_start
();
    if(isset(
$_SESSION['cliente']))
    {
        
header('location:formulario.pedido.php');
    }
    else
    {
?>
<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <form method="post" action="login.php">
        Email:<br>
        <input tye="text" name="email"><br>
        Constraseña:<br>
        <input type="password" name="psw"><br>
        <input type="submit" value="acceder"><br>
        <a href="recuperar_password.php">Olvido la contraseña?</a><br>
        <a href="formulario_registro.php">Registrese</a>
    </form>
</body>
</html>
<?php 
    
}//fin else si hay sesion
?>
Y aqui os mando el codigo de login.php:
Código PHP:
<?php
    session_start
();
    if(isset(
$_SESSION['cliente']))
    {
        
header('location:formulario_pedido.php');
    }
    else
    {
        include(
"conection.php");
        
connect();
        
extract($_POST);
        
$consulta=mysql_query("SELECT * FROM clientes WHERE email='$email' AND psw='$psw'")or die("No se pudo comprobar el usuario");
        if(
mysql_num_rows($consulta)>0)
        {
            
$_SESSION['cliente']=$nombre;
            
header('location:index.php');
        }
        else
        {
            echo 
"El usuario o contraseña introducidos no son correctos.";
            
header("Refresh: 5; index.php");
        }
    }
?>
Espero haberme explicado correctamente, para cualquier duda aquí estaré, gracias por todo, un saludo
  #2 (permalink)  
Antiguo 15/02/2014, 14:50
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 5 meses
Puntos: 32
Respuesta: Login

Prueba con esto:

Código PHP:
$consulta=mysql_query("SELECT * FROM clientes WHERE email='".$_POST['email']."' AND psw='".$_POST['email']."'")or die("No se pudo comprobar el usuario"); 
  #3 (permalink)  
Antiguo 15/02/2014, 14:58
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 12 años, 5 meses
Puntos: 977
Respuesta: Login

¿En dónde estableces un valor para la variable $nombre?, te pregunto esto porque veo que es el valor que asignas a la variable de sesión.

gogupe, con la función extract, está obteniendo los valores de $_POST["email"] y $_POST["psw"].
__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand
  #4 (permalink)  
Antiguo 15/02/2014, 15:53
Avatar de gogupe  
Fecha de Ingreso: octubre-2006
Ubicación: Mallorca
Mensajes: 897
Antigüedad: 17 años, 5 meses
Puntos: 32
Respuesta: Login

Mira algo nuevo para mi, no conocía la funcion extract... gracias.
  #5 (permalink)  
Antiguo 15/02/2014, 16:27
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Login

organizarte mejor te vendria muy bien:

Crear un index.php como plantilla y llamar mediante "includes" los script php que necesites

ahora revisa que creo que deberías cambiar el método post por get...

otra cosa ponle ID a casa uno de tus campos... creo que aunque uses Extrac para identificar email necesitas ponerle ID al DOM regla elemental..
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #6 (permalink)  
Antiguo 16/02/2014, 16:51
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

Muchas gracias Alexis, ahí estaba la solución, respecto a lo de arcanisgk122, no he entendido bien la razón por la que me he de cambiar de post a get, siempre he entendido que post es mucho más seguro, solo que get es más rápido o lifgero, pero en mi caso eso no importa, lo de ponerle id al dom...solamante me sería útil en caso de tener que utilizar javascript para poder llamar a los objetos por la id, no?
  #7 (permalink)  
Antiguo 16/02/2014, 21:40
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Login

solo te digo que eso que haces asi son malas practicas...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #8 (permalink)  
Antiguo 17/02/2014, 03:01
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

De cuerdo, se agradece el consejo, pero si puedes argumentar porque me temo que no servirá de mucho
  #9 (permalink)  
Antiguo 17/02/2014, 11:36
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Login

MVC ese es todo... investiga y trabaja en base a eso, te ahorrara mucho despues
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #10 (permalink)  
Antiguo 17/02/2014, 16:49
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

Se agradece el consejo, pero la verdad que si deje los framworks fue porque no me acostumbraba a este sistema, pero aún así sigo sin comprender porque recomiendas get en vez de post
  #11 (permalink)  
Antiguo 17/02/2014, 21:04
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Login

los get son viables cuando usas todo el codigo en una sola pagina... post es cuando pasas de una pagina a otra...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #12 (permalink)  
Antiguo 18/02/2014, 09:07
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

E includes se consideraría que estoy trabajando en la misma página o en diferentes páginas?
  #13 (permalink)  
Antiguo 18/02/2014, 14:31
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Login

includes para que serpares el codigo html del php ... te lo digo pro que es mas facil controlar las funciones php desde un arvol de solo funciones php que estar trabajando y modificando ddocumento a documento cada archivo mesclado con html... simplemente son practicas que hay que mejorar... terminaras programan como si fuera MVC...
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #14 (permalink)  
Antiguo 18/02/2014, 16:23
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

Pero si entonces yo tengo un formulario, como he de llamar a una función de un include?simplemente como en cualquier otra parte del código?Y si en ese caso lo hago así y utilizo el método get las variables se pasarían por la url?
  #15 (permalink)  
Antiguo 18/02/2014, 18:11
Avatar de arcanisgk122  
Fecha de Ingreso: junio-2010
Mensajes: 755
Antigüedad: 13 años, 10 meses
Puntos: 28
Respuesta: Login

ok mira te explico yo tengo do archivos:

index.php
funciones.php

en index.php tengo todo el html seccionado. que pasa al incio agrego el include funciones.php como adentro hay funciones estas no se activan a menos de que se les llamen... desde el código html por ejemplo:

como sabrás la sesiones se inicia al inicio de una pagina php antes de cualquier cosa. entonces yo en mi index.php tengo esto:

Código PHP:
Ver original
  1. <?php
  2.     include('core/funciones.php');
  3.     sesion();
  4. ?>
  5. <!doctype html>
  6. <html lang="es">
  7. <?php include('core/head.php'); ?>
  8. <body>
  9. bla bla bla

y luego mi html5 bien maquetadito

en funciones.php vengo con esto:


Código PHP:
Ver original
  1. function sesion(){/*inicia una sesion*/
  2.     session_start();
  3.     session_name('my sesion');
  4. }
  5. // y otro poco de funciones

Cuando una funcion requiere una mejora me voy directamente al código php en funciones.php y si quiero cambiar mi diseño me voy directamente a mi index.php y edito el html y el css3... manteniendo la capa de modelo y visualisacion fuera de las funciones php... no es tan perfecto pero es lo que me refiero a buenas practicas... estudia algo de MVC y te facilitara la vida
__________________
Cooler Master Gladiator 600 - AMD PHENOM II X4 955 @ 3.5GHZ
GA-MA78GM-US2H - Super Talent 800 2GB x 2 Dual, (Unganged)
PSU Cooler Master eXtreme Power Plus 500W - Saphire R7-260OC-2GB
  #16 (permalink)  
Antiguo 19/02/2014, 04:00
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

Gracias por el consejo, hasta ahi si que habia llegado, pero mi pregunta es si tengo un formulario y en el accion pongo una funcion que pasa?
  #17 (permalink)  
Antiguo 19/02/2014, 05:54
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Login

Cita:
Iniciado por arcanisgk122 Ver Mensaje
los get son viables cuando usas todo el codigo en una sola pagina... post es cuando pasas de una pagina a otra...
Lamento no estar de acuerdo con eso, yo creo que:

GET: Cuando no requieres de un formulario o pretendes propagar variables por URL para efectos prácticos como buscador, paginador, etc.

Esto permite que las páginas sean indexadas en motores de búsqueda o que el usuario pueda regresar (usando favoritos o algún otro método) sin tener que llenar nuevamente un formulario.

POST: Cualquier acción que pueda comprometer datos si se envían por URL (Login, Registro de usuarios, etc.), envío de muchos campos (recuerda que GET tiene cierto límite en caracteres), subir archivos o algún otro que se me escapa por ahora.

Incluso un registro para listas de correos, donde sólo necesites correo electrónico, es más conveniente que sea por POST, así evitas que los motores de búsqueda indexen páginas que no debieran porque simplemente aparecería un mensaje de error al no llenar el campo requerido.
__________________
- León, Guanajuato
- GV-Foto
  #18 (permalink)  
Antiguo 19/02/2014, 08:51
 
Fecha de Ingreso: octubre-2013
Mensajes: 62
Antigüedad: 10 años, 6 meses
Puntos: 0
Respuesta: Login

Muchas gracias Triby, la verdad que me has aclarado todas las dudas
  #19 (permalink)  
Antiguo 20/02/2014, 13:00
 
Fecha de Ingreso: mayo-2009
Mensajes: 200
Antigüedad: 14 años, 11 meses
Puntos: 7
Respuesta: Login

Triby


Código PHP:
Ver original
  1. <!doctype html>
  2. <html>
  3. <head>
  4. <meta charset="utf-8">
  5. <title>Documento sin título</title>
  6. </head>
  7. <body>
  8. <?PHP
  9. //ahora mismo estoy trabajando en este codigo:
  10. //no se si esto se hace con isset() o con empty() o con null(), leer todo el post antes de comentar
  11. //evitar errores de undefined...
  12. if(isset($_GET['visita'])){//saber si la variable se fue esta declarada por post, recivida y si contiene un valor de 1,2,3 superio o valores negativos
  13.     $visita=$_GET['visita'];
  14.     if($visita==1){
  15.         echo "mostrar contenido pagina web para usuario registrado";
  16.          //mostraría contenido de la pagina para usuario
  17.     }else{
  18.          if($visita==2){
  19.              echo "mostrar Mostrar el formulario de registro";
  20.             //mostraría el formulario de registro al usuario
  21.             //el formulario de registro debe devolver un mensaje de que el registro fue correcto; y
  22.             //pasado 15 segundo o que el cliente de click en ir a la pagina,
  23.             //el formulario de registro debe cambiar automáticamente el valor de $_POST[visita]=1;
  24.          }else{
  25.              if($visita>=3 or $visita<0){//por si meten valores negativos o mayores he = a 3
  26.                  echo "mostrar pagina para usuarios no registrados";
  27.                  //mostrara un mensaje de que no esta registrado ni loggeado y no cuenta con privilegios de usuario
  28.                  //mostraría contenido de la pagina para usuario Sin privilegios
  29.                  //debe existir un boton de Registro y Login para cambiar el valor de $_POST[visita] y re-dirigirlo al formulario.
  30.              }
  31.          }
  32.     }
  33. }else{
  34.  echo "Formulario de loggin";
  35. //si no se recibe nada por POST o el valor es 0
  36. //Se muestra el formulario de login
  37. //puede pasar 3 cosas:
  38. //1. si hace loggin cambia el valor inexistente cambiara a $_POST[visita]=1; mostraria la pagina web como usuario
  39. //2. si hace Click en registrarce  el valor inexistente cambiara a $_POST[visita]=2; y lo envia al formulario de registro
  40. //3. si hace click en  Entrar como Quest, mostraría la pagina como usuari de visita sin privilegios, $_POST[visita]=3;
  41. // el problema es este como cambiar esos valores... enviar mediante un boton esos valores
  42. }
  43. //Actualmente lo estoy probandolo, ya que quiero convertir esto en una funcion: vistanueva();  y ejecutar el codigo, es lo que se me complica
  44. ?>
  45. </body>
  46. </html>

simplemente cada ves que uso post me da problemas... me salen errores de undefined... obto por los get como en el codigo antes descrito... puedes ayudarme en esto??

http://www.forosdelweb.com/f18/event...ockie-1091806/

Etiquetas: login, sql
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:27.