Foros del Web » Programando para Internet » PHP »

problema login php para web

Estas en el tema de problema login php para web en el foro de PHP en Foros del Web. Hola primero que todo. Decirles que soy un poco nuevo en esto de php, tengo el siguiente problema o mas bien duda tengo un formulario ...
  #1 (permalink)  
Antiguo 01/07/2011, 15:10
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
problema login php para web

Hola primero que todo.
Decirles que soy un poco nuevo en esto de php, tengo el siguiente problema o mas bien duda tengo un formulario de registro con una base de datos la cual me funciona correctamente. También tengo un formulario de login dentro de mi web el cual me funciona pero me envia a otra pagina prueba.php, la cual me dice que el usuario se logeo bien y despues otra pagina mas donde me dice bienvenido usuario.
Mi consulta es si se pueden hacer esos pasos dentro del mismo index.html, me explico dentro de mi web crear un formulario login que diga:

Usuario: |_____|
Contraseña:|_____|
entrar Registrarse

que al darle en entrar me diga en la misma pagina index.html (no me envie a login.php)

Bienvenido usuario
Logout

Dejo codigos que utilize para crear los formularios

login.php
Código PHP:
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<
br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<
br />
<
input type="submit" value="Ingresar" />
</
form

validar_usuario.php
Código PHP:
<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuarios')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function 
quitar($mensaje)
{
    
$nopermitidos = array("'",'\\','<','>',"\"");
    
$mensaje str_replace($nopermitidos""$mensaje);
    return 
$mensaje;
}
if(
trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
{
    
// Puedes utilizar la funcion para eliminar algun caracter en especifico
    //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
    //$password = $HTTP_POST_VARS["password"];
    // o puedes convertir los a su entidad HTML aplicable con htmlentities
    
$usuario strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
    
$password $_POST["password"];
    
$result mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
    if(
$row mysql_fetch_array($result)){
        if(
$row["password"] == $password){
            
$_SESSION["k_username"] = $row['usuario'];
            echo 
'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
            echo 
'<a href="index.php">Index</a></p>';
            
//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
            /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
            <SCRIPT LANGUAGE="javascript">
            location.href = "index.php";
            </SCRIPT>*/
        
}else{
            echo 
'Password incorrecto';
        }
    }else{
        echo 
'Usuario no existente en la base de datos';
    }
    
mysql_free_result($result);
}else{
    echo 
'Debe especificar un usuario y password';
}
mysql_close();
?>

registrar.php
Código PHP:
<?php
session_start
();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuarios')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function 
formRegistro(){
?>
<form action="registrar.php" method="post">
Usuario (max 20): 
  <input type="text" name="username" size="20" maxlength="20" /><br />
Password (max 10): 
<input type="password" name="password" size="10" maxlength="10" />
Confirma: <input type="password" name="password2" size="10" maxlength="10" /><br />
Email (max 40): 
<input type="text" name="email" size="20" maxlength="40" /><br />
<input type="submit" value="Registrar" />
</form>
<?php
}
// verificamos si se han enviado ya las variables necesarias.
if (isset($_POST["username"])) {
    
$username $_POST["username"];
    
$password $_POST["password"];
    
$password2 $_POST["password2"];
    
$email $_POST["email"];
    
// Hay campos en blanco
    
if($username==NULL|$password==NULL|$password2==NULL|$email==NULL) {
        echo 
"un campo está vacio.";
        
formRegistro();
    }else{
        
// ¿Coinciden las contraseñas?
        
if($password!=$password2) {
            echo 
"Las contraseñas no coinciden";
            
formRegistro();
        }else{
            
// Comprobamos si el nombre de usuario o la cuenta de correo ya existían
            
$checkuser mysql_query("SELECT usuario FROM usuarios WHERE usuario='$username'");
            
$username_exist mysql_num_rows($checkuser);
            
$checkemail mysql_query("SELECT email FROM usuarios WHERE email='$email'");
            
$email_exist mysql_num_rows($checkemail);
            if (
$email_exist>0|$username_exist>0) {
                echo 
"El nombre de usuario o la cuenta de correo estan ya en uso";
                
formRegistro();
            }else{
                
$query 'INSERT INTO usuarios (usuario, password, email, fecha)
                VALUES (\''
.$username.'\',\''.$password.'\',\''.$email.'\',\''.date("Y-m-d").'\')';
                
mysql_query($query) or die(mysql_error());
                echo 
'El usuario '.$username.' ha sido registrado de manera satisfactoria.<br />';
                echo 
'Ahora puede entrar ingresando su usuario y su password <br />';
                
?>
                <FORM ACTION="validar_usuario.php" METHOD="post">
                  Usuario : <INPUT TYPE="text" NAME="usuario" SIZE=20 MAXLENGTH=20><br />
                  Password: <INPUT TYPE="password" NAME="password" SIZE=10 MAXLENGTH=10><br />
                  <INPUT TYPE="submit" VALUE="Ingresar">
                </FORM>
                <?php
            
}
        }
    }
}else{
    
formRegistro();
}
?>

logout.php
Código PHP:
<?php
session_start
();
// Borramos toda la sesion
session_destroy();
echo 
'Ha terminado la session <p><a href="index.php">index</a></p>';
?>
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>

Si me pudiecen ayudar a solucionar el problema estaria demasiado agradecido

Saludos
  #2 (permalink)  
Antiguo 01/07/2011, 15:21
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 1 mes
Puntos: 53
Respuesta: problema login php para web

si quieres que todo se haga en una sola pagina la pagina debe tener extension php segun creo

tendrias que hacer un index.php

que llevaria tu formulario :

y antes de tu formulario una condicion
Código PHP:
Ver original
  1. if (isset["enviar"])//nombre del submit
  2. {
  3. --validacion de usuario existente
  4. if(existe en base de datos)
  5.   {
  6.   usted esta logueado
  7.    }
  8. }
  9. else
  10.  {
  11. <form name="form_index" action="index.php">//redireccionar a ella misma
  12. usuario<input type="text" name="usuario">
  13. contraseñao<input type="text" name="contraseña">
  14. <input type="submit" name="enviar" value="ENVIAR">//un submit
  15. </form>
  16.  }
podrias empezar por ahi
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #3 (permalink)  
Antiguo 01/07/2011, 15:25
 
Fecha de Ingreso: agosto-2010
Ubicación: Tenerife
Mensajes: 893
Antigüedad: 13 años, 7 meses
Puntos: 202
Respuesta: problema login php para web

Como ya te dijeron hazlo en la misma página y asignas un name al boton que tenga el submir para comprobarlo con un isset al principio.

Como mejora podrías cambiar el action de tus formularios por <?php $_SERVER['PHP_SELF'] ?> Con lo cual no necesitas saber el nombre de la página donde se encuentra para que el formulario funcione. Muy usado cuando se hacen includes
__________________
Pensaba que internet era una gran biblioteca de sabiduría, hasta que comprendí que un libro no puede tener mil páginas llenas de faltas de ortografía... :(
  #4 (permalink)  
Antiguo 01/07/2011, 15:32
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: problema login php para web

Hola gracias por las respuestas , me surgio una duda.
Dentro de mi index.html tengo un login.php el cual me funciona a la perfeccion es el que esta el codigo de mas arriba. Lo que me sucede es que al apretar en entrar me envia a otra pagina .php en registrar esta bien que me envie a otra pagina, pero mi duda es si se puede poner un codigo en ese login php el cual me busque el validar_usuario.php pero no me lo muestre y me tire un Bienvenido usuario?

Saludos
  #5 (permalink)  
Antiguo 01/07/2011, 15:43
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: problema login php para web

Lo otro como me decia pirruman en su respuesta mas arriba. Crear un index.php con un formulario y antes del formulario un codigo que me redirecciona al mismo index.php. Mi pregunta es ... Si se redirecciona a index.php como se va a verificar si el login y el usuario existen si no se envian los datos a un verifica.php?

Saludos
  #6 (permalink)  
Antiguo 01/07/2011, 15:44
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 1 mes
Puntos: 53
Respuesta: problema login php para web

haces por decir un archivo verificar.php
donde agregas:
verificar.php
Cita:
if(isset(enviar))//-----nombre de tu submit del login
{
validar_usuario.php
Cita:
<?php
session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuarios')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
{
// Puedes utilizar la funcion para eliminar algun caracter en especifico
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
//$password = $HTTP_POST_VARS["password"];
// o puedes convertir los a su entidad HTML aplicable con htmlentities
$usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
$password = $_POST["password"];
$result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result)){
if($row["password"] == $password){
$_SESSION["k_username"] = $row['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
echo '<a href="index.php">Index</a></p>';
//Elimina el siguiente comentario si quieres que re-dirigir automáticamente a index.php
/*Ingreso exitoso, ahora sera dirigido a la pagina principal.
<SCRIPT LANGUAGE="javascript">
location.href = "index.php";
</SCRIPT>*/
}else{
echo 'Password incorrecto';
}
}else{
echo 'Usuario no existente en la base de datos';
}
mysql_free_result($result);
}
else
{
echo 'Debe especificar un usuario y password';
}
mysql_close();
?>
}
else
{
login.php
Cita:
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" />//le pones nombre ejemplo (name=enviar)
</form>
[
}
solo lo incluyes en index.html
include(verificar.php)
y tienes tu login y verificacion en la misma pagina
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #7 (permalink)  
Antiguo 01/07/2011, 15:46
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: problema login php para web

Gracias por tu respues pirruman lo pondre en practica y aviso como me fue.

saludos
  #8 (permalink)  
Antiguo 01/07/2011, 16:33
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: problema login php para web

Hola nuevamente Pirruman
te cuento que probe tu codigo al ingresar con un usuario y contraseña me envia a verificar.php y me dice esto

if(isset(enviar)) { validar_usuario.php [QUOTEHas sido logueado correctamente administrador

Index
} else { login.php Cita:
Usuario:
Password:
}/QUOTE]

bueno si se puede solucionar ese problema ,seria genial. Ahora te cuento que me envie a verificar.php da lo mismo, ya que ahi pongo un mensaje con "volver al inicio" y que me ingrese al index.html. La pregunta ahora es como lo puedo hacer para que cuando vuelva al index.html me diga bienvenido usuario y un boton de logout. Se podria hacer mediando un formulario algo, esto es para que el usuario sepa que esta legeado y pueda ver enlaces q otros no pueden .

Saludos
  #9 (permalink)  
Antiguo 01/07/2011, 16:56
Avatar de PIRRUMAN  
Fecha de Ingreso: febrero-2006
Ubicación: Monterrey, Nuevo León
Mensajes: 633
Antigüedad: 18 años, 1 mes
Puntos: 53
Respuesta: problema login php para web

en dado caso podrias prbar con esto : es sencillo pero ayuda
y en la liga que dice cerrar sesion podriar llamar a una funcion que lo haga
Cita:
lo copiaste directo de aqui .....
bueno copia esto
<?
if (isset($_FILES['enviar']))
{
//validar_usuario.php
//Cita:

session_start();
//datos para establecer la conexion con la base de mysql.
mysql_connect('localhost','root','root')or die ('Ha fallado la conexión: '.mysql_error());
mysql_select_db('usuarios')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
function quitar($mensaje)
{
$nopermitidos = array("'",'\\','<','>',"\"");
$mensaje = str_replace($nopermitidos, "", $mensaje);
return $mensaje;
}
if(trim($_POST["usuario"]) != "" && trim($_POST["password"]) != "")
{
// Puedes utilizar la funcion para eliminar algun caracter en especifico
//$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
//$password = $HTTP_POST_VARS["password"];
// o puedes convertir los a su entidad HTML aplicable con htmlentities
$usuario = strtolower(htmlentities($_POST["usuario"], ENT_QUOTES));
$password = $_POST["password"];
$result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
if($row = mysql_fetch_array($result))
{
if($row["password"] == $password)
{
$_SESSION["k_username"] = $row['usuario'];
echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
$salir=1;
}
else
{
echo 'Password incorrecto';
}
}
else
{
echo 'Usuario no existente en la base de datos';
?>
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" name="enviar"/>
</form>
<?

}
mysql_free_result($result);
}
else
{
echo 'Debe especificar un usuario y password';
?>
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" name="enviar"/>
</form>
<?

}
mysql_close();
}
else
{
?>
<form action="validar_usuario.php" method="post">
Usuario:<input type="text" name="usuario" size="20" maxlength="20" />
<br />
Password:<input type="password" name="password" size="10" maxlength="10" />
<br />
<input type="submit" value="Ingresar" name="enviar"/>
</form>
<?
}

if($salir=="1")
{
?><a href="#">Cerrar Sesion</a><?
}

?>
__________________
“Prefiero ser un tonto momentaneo que un eterno ignorante”
“¡El éxito es resultado de los aciertos,los aciertos resultado de la experiencia y la experiencia resultado de los errores!”
  #10 (permalink)  
Antiguo 01/07/2011, 17:16
 
Fecha de Ingreso: julio-2011
Mensajes: 9
Antigüedad: 12 años, 8 meses
Puntos: 1
Respuesta: problema login php para web

MMM nada pirruman sigo sin exito revisa mi web para que chekees lo que te digo.

www.servcom.cl

Saludos

Etiquetas: html, login, registro
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.
Tema Cerrado

SíEste tema le ha gustado a 2 personas




La zona horaria es GMT -6. Ahora son las 17:30.