Comunidad de diseño web y desarrollo en internet online

Bloqueo loguin con php y sql

Citar            
MensajeEscrito el 09 Jun 2011 10:31 pm
Hola

Deseo crear un sitio web en base a usuarios.

para ello cree una tabla con campos en mi base de datos:

Código MySQL :

1.CREATE TABLE `usuarios` (
2.  `id` INT(11) NOT NULL AUTO_INCREMENT,
3.  `usuario` VARCHAR(20) NOT NULL,
4.  `password` VARCHAR(10) NOT NULL,
5.  `descripcion` TEXT character SET utf8 collate utf8_spanish_ci,
6.  `email` VARCHAR(45) character SET utf8 collate utf8_spanish_ci DEFAULT NULL,
7.  `fecha` DATE NOT NULL,
8.  PRIMARY KEY  (`id`)
9.) 


tengo varios archivos, primero tengo un index:

Código PHP :

1.<?php session_start();
2. 
3.echo 'Bienvenido, ';
4. 
5.if (isset($_SESSION['k_username'])) {
6.    echo '<b>'.$_SESSION['k_username'].'</b>.';
7.    echo '<p><a href="logout.php">Logout</a></p>';
8.}else{
9.    echo '<p><a href="login.php">Login</a></p>
10.     <p><a href="registrar.php">Registrar</a></p>';
11.}
12.?> 


luego un login

Código PHP :

1.<form action="validar_usuario.php" method="post">2.Usuario:<input type="text" name="usuario" size="20" maxlength="20" />3.<br />4.Password:<input type="password" name="password" size="10" maxlength="10" />5.<br />6.<input type="submit" value="Ingresar" />7.</form> 


luego un validar usuario

Código PHP :

1.<?php session_start(); 
2. 
3.//datos para establecer la conexion con la base de mysql.
4.mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
5.mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
6. 
7.function quitar($mensaje)
8.{
9.    $nopermitidos = array("'",'\\','<','>',"\"");
10.    $mensaje = str_replace($nopermitidos, "", $mensaje);
11.    return $mensaje;
12.}      
13. 
14.if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
15.{
16.    // Puedes utilizar la funcion para eliminar algun caracter en especifico
17.    //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
18.    //$password = $HTTP_POST_VARS["password"];
19.    
20.    // o puedes convertir los a su entidad HTML aplicable con htmlentities
21.    $usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));    
22.    $password = $HTTP_POST_VARS["password"];
23.     
24. 
25.    $result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
26.    if($row = mysql_fetch_array($result)){
27.        if($row["password"] == $password){
28. 
29.            $_SESSION["k_username"] = $row['usuario'];
30.            
31.            echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
32.            echo '<a href="index.php">Index</a></p>';
33.            
34.            //Elimina el siguiente comentario si quieres que re-dirigir autom&aacute;ticamente a index.php
35.            
36.            /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
37.            <SCRIPT LANGUAGE="javascript">
38.            location.href = "index.php";
39.            </SCRIPT>*/
40. 
41.        }else{
42.            echo 'Password incorrecto';
43.        }
44.    }else{
45.        echo 'Usuario no existente en la base de datos';
46.    }
47.    mysql_free_result($result);
48.}else{
49.    echo 'Debe especificar un usuario y password';
50.}
51.mysql_close();
52.?> 


aparte otra para dar de alta al usuario y un logout

Todo funciona bien, se dan de alta los usuarios. el problema viene cuando quiero bloquear ciertas paginas para que solo tengan acceso los usuarios.

Tengo entendido que solo necesito una funcion que debo colocar al principio de la pagina, en la cual busca en la base de datos el usuario y pasword que estan en la cokkie (no se si este codigo que copie lo genere) y si lo encuentra abre la pagina, si no, me regresa a la pagina deregistro. Suena sencillo pero ya estuve buscando y no eh tenido exito.

Encontre un codigo que suena logico, pero no me funciona

Código PHP :

<?     
session_start();     
if(!isset($_SESSION['s_username']))header("location: entrar.html");      
?> 


alguna idea?

Por dex_ter88

20 de clabLevel



 

msie8
Citar            
MensajeEscrito el 14 Jun 2011 05:25 pm

dex_ter88 escribió:

Hola

Deseo crear un sitio web en base a usuarios.

para ello cree una tabla con campos en mi base de datos:

Código MySQL :

1.CREATE TABLE `usuarios` (
2.  `id` INT(11) NOT NULL AUTO_INCREMENT,
3.  `usuario` VARCHAR(20) NOT NULL,
4.  `password` VARCHAR(10) NOT NULL,
5.  `descripcion` TEXT character SET utf8 collate utf8_spanish_ci,
6.  `email` VARCHAR(45) character SET utf8 collate utf8_spanish_ci DEFAULT NULL,
7.  `fecha` DATE NOT NULL,
8.  PRIMARY KEY  (`id`)
9.) 


tengo varios archivos, primero tengo un index:

Código PHP :

1.<?php session_start();
2. 
3.echo 'Bienvenido, ';
4. 
5.if (isset($_SESSION['k_username'])) {
6.    echo '<b>'.$_SESSION['k_username'].'</b>.';
7.    echo '<p><a href="logout.php">Logout</a></p>';
8.}else{
9.    echo '<p><a href="login.php">Login</a></p>
10.     <p><a href="registrar.php">Registrar</a></p>';
11.}
12.?> 


luego un login

Código PHP :

1.<form action="validar_usuario.php" method="post">2.Usuario:<input type="text" name="usuario" size="20" maxlength="20" />3.<br />4.Password:<input type="password" name="password" size="10" maxlength="10" />5.<br />6.<input type="submit" value="Ingresar" />7.</form> 


luego un validar usuario

Código PHP :

1.<?php session_start(); 
2. 
3.//datos para establecer la conexion con la base de mysql.
4.mysql_connect('localhost','usuario','password')or die ('Ha fallado la conexi&oacute;n: '.mysql_error());
5.mysql_select_db('mi_base')or die ('Error al seleccionar la Base de Datos: '.mysql_error());
6. 
7.function quitar($mensaje)
8.{
9.    $nopermitidos = array("'",'\\','<','>',"\"");
10.    $mensaje = str_replace($nopermitidos, "", $mensaje);
11.    return $mensaje;
12.}      
13. 
14.if(trim($HTTP_POST_VARS["usuario"]) != "" && trim($HTTP_POST_VARS["password"]) != "")
15.{
16.    // Puedes utilizar la funcion para eliminar algun caracter en especifico
17.    //$usuario = strtolower(quitar($HTTP_POST_VARS["usuario"]));
18.    //$password = $HTTP_POST_VARS["password"];
19.    
20.    // o puedes convertir los a su entidad HTML aplicable con htmlentities
21.    $usuario = strtolower(htmlentities($HTTP_POST_VARS["usuario"], ENT_QUOTES));    
22.    $password = $HTTP_POST_VARS["password"];
23.     
24. 
25.    $result = mysql_query('SELECT password, usuario FROM usuarios WHERE usuario=\''.$usuario.'\'');
26.    if($row = mysql_fetch_array($result)){
27.        if($row["password"] == $password){
28. 
29.            $_SESSION["k_username"] = $row['usuario'];
30.            
31.            echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>';
32.            echo '<a href="index.php">Index</a></p>';
33.            
34.            //Elimina el siguiente comentario si quieres que re-dirigir autom&aacute;ticamente a index.php
35.            
36.            /*Ingreso exitoso, ahora sera dirigido a la pagina principal.
37.            <SCRIPT LANGUAGE="javascript">
38.            location.href = "index.php";
39.            </SCRIPT>*/
40. 
41.        }else{
42.            echo 'Password incorrecto';
43.        }
44.    }else{
45.        echo 'Usuario no existente en la base de datos';
46.    }
47.    mysql_free_result($result);
48.}else{
49.    echo 'Debe especificar un usuario y password';
50.}
51.mysql_close();
52.?> 


aparte otra para dar de alta al usuario y un logout

Todo funciona bien, se dan de alta los usuarios. el problema viene cuando quiero bloquear ciertas paginas para que solo tengan acceso los usuarios.

Tengo entendido que solo necesito una funcion que debo colocar al principio de la pagina, en la cual busca en la base de datos el usuario y pasword que estan en la cokkie (no se si este codigo que copie lo genere) y si lo encuentra abre la pagina, si no, me regresa a la pagina deregistro. Suena sencillo pero ya estuve buscando y no eh tenido exito.

Encontre un codigo que suena logico, pero no me funciona

Código PHP :

<?     
session_start();     
if(!isset($_SESSION['s_username']))header("location: entrar.html");      
?> 


alguna idea?
El "session_start();" es facil de usar y muy util, trabaja con variables globales, yo lo he usado muchas veces pero no recuerdo muy bien como se usa, dejame buscar algo del codigo que he hecho y te ayudo.
Por lo que recuerdo funciona de la sgte manera:
Login correcto ->se crea una variable de sesion ( session_start ) y esta var la lees en todas las paginas, si existe te deja continuar, sino te redirecciona al login o te manda un aviso de no logueado.

Saludos

Por nethost_cl

36 de clabLevel



Genero:Masculino  

CHILE

chrome
Citar            
MensajeEscrito el 15 Jun 2011 01:46 am
De echo asi le hise, si te das cuenta, al principio de mi fucion dice sesión star. Y el código que coloque al principio de mi pagina a bloquear inicia buscando la session, pero no me da.

Por dex_ter88

20 de clabLevel



 

safari
Citar            
MensajeEscrito el 15 Jun 2011 04:15 am
Estimado

Primero revisa esto

Código PHP :

if($row["password"] == $password){ 
28.  
29.            $_SESSION["k_username"] = $row['usuario']; 
30.             
31.            echo 'Has sido logueado correctamente '.$_SESSION['k_username'].' <p>'; 
32.            echo '<a href="index.php">Index</a></p>';


y

Código PHP :

<?      
session_start();      
if(!isset($_SESSION['s_username']))header("location: entrar.html");       
?>


ojo que en una linea tienes "k_username" y en la otra "s_username"

Por otra parte intenta hacer algo asi

Código PHP :

<?      
session_start();      
if(isset($_SESSION['s_username']))
{
   mostrar contenido;
}
else
{
   mostrar login;
}
?>


Trata de no usar el header : location pues muchas veces no funciona.

Ojala te sirva.

Por nethost_cl

36 de clabLevel



Genero:Masculino  

CHILE

chrome
Citar            
MensajeEscrito el 15 Jun 2011 03:04 pm
Wow... Unicamente cambie la s por "k" y funciono sin problemas. creeme que lleve una semana buscando variantes, cambiando cosas y lo unico que lograba era empeorarlo mas... (esque este es mi primer proyecto de este tipo, hasta la semana pasada no sabia mucho de sql ni php)
La otra variante ya no la intente, porque no se donde pegar el contenido html.

No puedo creerlo que el unico problema de ese codigo era una letra.

Mil gracias.

Por dex_ter88

20 de clabLevel



 

msie8

 

Cristalab BabyBlue v4 + V4 © 2011 Cristalab
Powered by ClabEngines v4, HTML5, love and ponies.