Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > PHP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 19-11-2004
alachaise alachaise is offline
Miembro
 
Registrado: ago 2004
Posts: 37
Poder: 0
alachaise Va por buen camino
Reconocimiento Y Autentificacion Usuario

como hago un sistema que me reconozca un usuario y si esta registrado me entre a una pagina determina y si no esta registrado que se registre y si me navega como usuario no registrado no tenga acceso a algunas paginas de mi sitio me podria mandar un ejemplo que funcione a la direccion de correo pm.venezuela@infomed.sld.cu o alachaise@uccm.sld.cu se los voy agradecer saludos alexander
Responder Con Cita
  #2  
Antiguo 20-11-2004
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Para eso debes usar sesiones, pides el "usuario" y la "clave" y compruebas que exista en tu base de datos, si existe creas una sesión y creas una variable de sesion donde puedes indicar que esta registrado. Para limitar el acceso a cualquier página solo tienes que comprobar que exista esa variable.
Para más seguridad, una vez comprobado que existe el usuario guarda en la sesión los datos de acceso (usuario y clave) y cuando quiera acceder a una página restringida solo tienes que comprobar si esta registrado con los datos de la sessión. ... bueno no se si me he esplicado bien pero espero que te sirva.

Eso de mandar respuestas a correos privados lo veo incompatible con un foro, aqui estamos para intentar ayudar a todos, y si te contestan por un correo privado impedimos que el resto de la gente pueda resolver dudas parecidas.

Pues ya sabes mira el manual de PHP y busca la sección de sesiones y al ataque.
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #3  
Antiguo 25-11-2004
kael kael is offline
Registrado
 
Registrado: oct 2004
Posts: 4
Poder: 0
kael Va por buen camino
Aqui tienes un codigo

Este es el codigo que he hecho y modificado , a mi me anda perfecto .... claro no es el que uso pero de seguro te va a servir.
Código PHP:
    Primero que nada :
    
    
session_start(); // Con esto inicializamos la session
    
    
if($_POST['enviar'])  { //Verificamos si se envio el formulario
    
$nick trim($_POST['nick']); //Sacamos los espacios
    
$pass trim($_POST['pass']); 
    
    if((
$nick=='') || ($pass=='')) { //Si los campos estan vacios ...
     
echo "Debes de rellenar todos los campos!"
    } else { 
//seguimos con el script
    
$query mysql_query("SELECT * WHERE campodelnick='$nick' AND campodelpass='$pass'"); // Sacamos el usuario y el password
    
$datos mysql_fetch_array($query); 
 if((
$nick == $datos[campodelnick]) && ($pass == $datos[campodelpass])) { // Si los datos que pusieron son iguales a los de la db ...
    
$_SESSION['nick'] == $nick;
    
$_SESSION['pass'] == $pass;
    
/* Ahi creamos las sesiones nick y pass si quieres crear otra con otro campo solo pones
    $_SESSION'['nombredelasesion'] == $datos['nombredelcampoenladb'];
    */
    
header("Location : paginaalaquesequieraredirijir.php");
    } else {
    echo 
"Login Incorrecto!";
    } } } else {
    
   if((isset(
$_SESSION['nick'])) || (isset($_SESSION['pass'])) {
    echo 
"Bienvenido ".$_SESSION['nick']." !";
   
/* o sino puedes redirijir a otra pagina por ejemplo :
   header("Location : cp.php");
   */
   
} else {
    
    <
form method='post' action='".$_SERVER['PHP_SELF']."'// Inicio del Formulario
    
Nikc : <input type='text' name='nick'><br// Input donde el usuario va a indicar su nick
    
Password : <input type='password' name='pass'><br// Aqui el password del usuario
    
<input type='submit' name='enviar' value='Ingresar'>
    </
form//Cerramos el formulario
     
}
    } 
Espero que te sirva , si ves que te da algu error me avisas

Última edición por kael fecha: 26-11-2004 a las 03:40:52.
Responder Con Cita
  #4  
Antiguo 25-11-2004
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Dos retoques:
1.
Código PHP:
  $query mysql_query("SELECT * WHERE campodelnick='$nick' AND campodelpass='$pass'"); // Sacamos el usuario y el password
   
$datos mysql_fetch_array($query);
   if((
$nick == $datos[campodelnick]) && ($pass == $datos[campodelpass])) { // Si los datos que pusieron son iguales a los de la db ...
      
... 
yo lo dejaría asín
Código PHP:
  $query mysql_query("SELECT * WHERE campodelnick='$nick' AND campodelpass='$pass'"); // Sacamos el usuario y el password
   
if(mysql_num_rows($query)) { 
      ... 
Si realizas una consulta con un "nick" y un "pass" y obtienes un resultado esta claro que va a cumplir la condicion de que son iguales a los buscados ya que lo obligas en la clausula "WHERE".

2.
Código PHP:
header("Location : paginaalaquesequieraredirijir.php"); 
Yo siempre termino un "Location" con un "exit"
Código PHP:
header("Location : paginaalaquesequieraredirijir.php");
exit(); 
Si no lo pones así, es posible que se ejecute código no deseado justamente despues del "Location".
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
  #5  
Antiguo 26-11-2004
Mick Mick is offline
Miembro
 
Registrado: may 2003
Posts: 405
Poder: 21
Mick Va por buen camino
Cita:
Empezado por kayetano
Hola
Si realizas una consulta con un "nick" y un "pass" y obtienes un resultado esta
claro que va a cumplir la condicion de que son iguales a los buscados ya que lo
obligas en la clausula "WHERE".
Tal como esta el codigo, si se eliminan la comprobacion de nick y password posterior y no estan activadas las magic_quotes en la configuracion de php, tendriamos un agujero de seguridad tipico por injeccion de sql, cualquiera podria entrar sin saber el password, bastaria conocer cualquier nombre de usuario para entrar.

Saludos
Responder Con Cita
  #6  
Antiguo 29-11-2004
[kayetano] kayetano is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Elche
Posts: 644
Poder: 21
kayetano Va por buen camino
Hola

Hombre, no hay que ser alarmistas, si miramos al principio del código de nuestro amigo kael vemos lo siguiente:
Código PHP:
    if( $_POST['enviar'] )  { //Verificamos si se envio el formulario
       
$nick trim($_POST['nick']); //Sacamos los espacios
       
$pass trim($_POST['pass']); 
Con esto ya está obligando a posibles hackers a simular una llamada 'post' a nuestra página, ademas de quitando los espacios con lo que muy posiblemente se vuelva inservible la porción de código sql que se intente añadir.
Se podría retocar un poquito y quedaría mucho mejor asin:
Código PHP:
    if( $_POST['enviar'] )  { 
       
$nick AddSlashestrimstrip_tags$_POST['nick'] ) ) ); 
       
$pass AddSlashestrimstrip_tags$_POST['pass'] ) ) ); 
Elimino las posibles marcas HTML y PHP, elimino espacios y por ultimo marco con barras los caracteres que lo necesiten.

Ahora te propongo yo una cosa, amplia tu respuesta que es más alarmista que de utilidad y explica ¿que es un "agujero de seguridad tipico por injeccion de sql"?, formas de solucionar este problema y ¿donde ves ese agujero en este código?.

Sería interesante que habrieras un nuevo hilo para este tema.

Salu2
__________________
Salu2
KAYETANO

Cómo hacer preguntas de manera inteligente
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 19:22:14.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi