Foros del Web » Programando para Internet » PHP »

Quiero asegurar area de admin

Estas en el tema de Quiero asegurar area de admin en el foro de PHP en Foros del Web. Hola señores Luego de varios dias de romperme la cabeza para aprender como hacer consultas y agregar nuevas lineas a MySQL (soy nuevo en esto), ...
  #1 (permalink)  
Antiguo 20/09/2009, 09:25
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 9 meses
Puntos: 7
Quiero asegurar area de admin

Hola señores

Luego de varios dias de romperme la cabeza para aprender como hacer consultas y agregar nuevas lineas a MySQL (soy nuevo en esto), finalmente logre crear y hacer funcionar un panel de control para administrar un site que tengo en proceso.

El site en cuestion es un proyecto personal y tiene una seccion de comentarios, lo que me obliga a tener alguna herramienta para administrar los mismos.

Por razones de seguridad al directorio del panel le denominare con un nombre poco comun y usare un robot.txt para evitar que los buscadores lo indexen. A su vez, los tres archivos PHP que componen el panel usan caracteres combinados como nombre.

Ahora, tengo el problema que luego de autenticar un usuario la pagina se redirecciona al alchivo que enlista todos los comentarios para su administracion. El nombre de este archivo, aunque usa caracteres raros, es un nombre fijo y por tanto facil de guardar en el historial del navegador.

De la forma que tengo actualmente ese panel, me veria obligado a tener que borrar manualmente el url del historial si quiero evitar intrusos, por lo que la seguridad es nula por naturaleza.

Como puedo hacer para que no se guarde en el historial el url y/o en su lugar se guarde un url falso-enmascarado con PHP ???. Es eso posible sin tener que instalar nada en el servidor ???.
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 20/09/2009 a las 09:34
  #2 (permalink)  
Antiguo 20/09/2009, 09:45
Avatar de acoevil  
Fecha de Ingreso: julio-2008
Ubicación: localhost/colombia/sevillaValle.php
Mensajes: 1.123
Antigüedad: 16 años, 3 meses
Puntos: 32
Respuesta: Quiero asegurar area de admin

No entiendo muy bien... y porque motivo se redirecciona hacia ese archivo ? acaso cuando autenticas un usuario en tu sistema lo haces con bases de datos o un archivo de texto plano ?...
  #3 (permalink)  
Antiguo 20/09/2009, 10:11
Avatar de hvpareja  
Fecha de Ingreso: marzo-2007
Ubicación: En Vélez Málaga (Málaga)
Mensajes: 213
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Quiero asegurar area de admin

Por lo que leo no estás usando variables de sesión... ¿Cómo tienes hecha la autenticación?

En el principio de cada script que sea usado por el administrador tienes que comprobar que el usuario está logueado, por ejemplo:

Código PHP:
session_start();

if(!isset(
$_SESSION['login'])){
 exit(
"Acceso restringido");

__________________
El mejor maestro es el eterno aprendiz.
http://hvpareja.wordpress.com/
  #4 (permalink)  
Antiguo 20/09/2009, 10:41
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Quiero asegurar area de admin

Pues si, los usuarios los lee de una base de datos para hacer la autenticacion. Aqui el codigo completo con el form:

Código PHP:

<?php

session_start 
(); 

if (
$_POST['checkuser'] == 1):
    
    
$usr $_POST['usr'];
    
$pas $_POST['pas'];

    
mysql_connect ('localhost''miusuario''laclave') or die ($MenjError 'No se puede acceder a la base de datos: ' mysql_error());
    
mysql_select_db ('basededatos');
     
    
$query mysql_query ('SELECT * FROM administradores');
     
    while (
$row mysql_fetch_array($query))
    {
          
        if (
$row['user'] == $usr && $row['pass'] == $pas)
        {
            
            
$_SESSION["logueado"] = 'ok';
            
            echo 
'<meta http-equiv="Refresh" content="3;oplmnaqyhjk_listado_wdcfgter.php">';
            
$Msg '<br/><br/>Correcto <b>' $row['user'] . '</b>, iniciando sesi&oacute;n. <a href="oplmnaqyhjk_listado_wdcfgter.php">Ingresar</a>';
            
            break;
        
        } else {
            
$Msg '<br/><br/>Lo sentimos, su usuario o clave son incorrectos.';
        }
        
    }
    
    
mysql_close();
    
endif;

?>


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" lang="es" xml:lang="es">

<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

<head>

<title>Administrar Comentarios</title>
<meta name="robots" content="noindex, nofollow">

<style type="text/css">
<!--

html, body {
    height: 100%;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 14px;
    line-height: 18px;
    text-align: left;
}

input[type="text"], input[type="password"] {
    font-family: Arial, Helvetica, sans-serif;
    font-size: 18px;
    padding: 4px;
    text-align: center;
    width: 200px;
}

-->
</style>
    
</head>
<body>


<div align="center" style="margin-top:50px;">
<form action="<?=$_SERVER['PHP_SELF']?>" method="POST">

<input type="hidden" name="checkuser" value="1" />

Usuario
<br/><input type="text" name="usr" value="" onfocus="this.value='';" />
<br/><br/>

Clave
<br/><input type="password" name="pas" value="" onfocus="this.value='';" />
<br/><br/>

<input type="submit" value="Enviar" />

</form>

<?=$Msg?>
</div>


</body>
</html>
Por cierto, @hvpareja, he tratado de usar "session_start();" como puedes ver en el codigo, pero me trae el siguiente error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /thefilepath/index.php:2) in /thefilepath/index.php on line 20

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /thefilepath/index.php:2) in /thefilepath/index.php on line 20

La linea 20 es precisamente "session_start();", por lo que es claro que no esta funcionando.
__________________
JuniHH
- Mi blog
- Mi portafolio

Última edición por junihh; 20/09/2009 a las 11:07
  #5 (permalink)  
Antiguo 20/09/2009, 10:43
Avatar de hvpareja  
Fecha de Ingreso: marzo-2007
Ubicación: En Vélez Málaga (Málaga)
Mensajes: 213
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Quiero asegurar area de admin

tienes que poner el session_start() AL PRINCIPIO DEL TODO.
__________________
El mejor maestro es el eterno aprendiz.
http://hvpareja.wordpress.com/
  #6 (permalink)  
Antiguo 20/09/2009, 11:02
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Quiero asegurar area de admin

@hvpareja muchas gracias por la correccion, pero me da un error similar ahora que lo puse en:

Código PHP:
<?php

session_start 
();

if (
$_POST['checkuser'] == 1):
    
    
$usr $_POST['usr'];
    
$pas $_POST['pas'];
El error lo muestra desde el momento mismo de entrar a la pagina de autenticar.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #7 (permalink)  
Antiguo 20/09/2009, 11:05
Avatar de hvpareja  
Fecha de Ingreso: marzo-2007
Ubicación: En Vélez Málaga (Málaga)
Mensajes: 213
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Quiero asegurar area de admin

¿Estás llamando al archivo via include()?

Es posible que ya hayas usado session_start() o que hayas mostrado algo con echo() o print() o similar...
__________________
El mejor maestro es el eterno aprendiz.
http://hvpareja.wordpress.com/
  #8 (permalink)  
Antiguo 20/09/2009, 11:12
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Quiero asegurar area de admin

@hvpareja: No estoy usando nada de lo que dices. Edite el codigo del post #4 con tu sugerencia y podras ver que no tengo nada mas que lo que ves alli.

Todo el trabajo de autenticacion se encuentra en el mismo archivo. Seria preferible quizas hacer cada cosa en archivos separados ???, estuve leyendo este ejemplo y ese detalle me puso a sopesarlo.
__________________
JuniHH
- Mi blog
- Mi portafolio
  #9 (permalink)  
Antiguo 20/09/2009, 11:21
Avatar de hvpareja  
Fecha de Ingreso: marzo-2007
Ubicación: En Vélez Málaga (Málaga)
Mensajes: 213
Antigüedad: 17 años, 8 meses
Puntos: 4
Respuesta: Quiero asegurar area de admin

Bueno, ese ejemplo que mandas es muy didáctico. No tienes por que hacerlo exactamente igual.

Para un complejo gestor de contenido pues yo te diría que usaras archivos separados con el fin de que tu código sea reutilizable, es decir, que no tengas que reescribirlo cada vez que quieras realizar la acción correspondiente.

Si ya lo tienes así, y no piensas que tu gestor vaya a crecer mucho, no pierdas el tiempo en cambiarlo, podemos arreglar este, aunque me está costando, no entiendo por qué te da el error en la linea 2...
__________________
El mejor maestro es el eterno aprendiz.
http://hvpareja.wordpress.com/
  #10 (permalink)  
Antiguo 20/09/2009, 12:42
Avatar de xalupeao  
Fecha de Ingreso: mayo-2008
Ubicación: Santiago, Chile
Mensajes: 749
Antigüedad: 16 años, 6 meses
Puntos: 12
Respuesta: Quiero asegurar area de admin

usa esto despues del <?

ob_start();

par que no tengas problemas con el header();

----- lo otro porque tanto eso de no quieres que se guarde la ruta, si al final si uno no tiene el usuario y contraseña no podria entrar :S

..... o los archivos no necesitan de un session ??
  #11 (permalink)  
Antiguo 20/09/2009, 13:51
Avatar de junihh  
Fecha de Ingreso: febrero-2004
Ubicación: República Dominicana
Mensajes: 997
Antigüedad: 20 años, 9 meses
Puntos: 7
Respuesta: Quiero asegurar area de admin

@hvpareja, de todos modos separe cada archivo como el ejemplo que te pase. Ahora la autenticacion marcha bien y aunque recibi un error bastante extraño, este ultimo fue culpa de dejar dos saltos de linea antes de <?php, luego de eso se soluciono.

De todos modos retomo parte de la pregunta inicial: Es posible enmascarar el url ???.

Claro, ya puedo confiar en que si el usuario ve la pagina de enlistar los comentarios, esta se redireccione a la pagina de login, pero de todos modos me gustaria que no mostrara url reales.
__________________
JuniHH
- Mi blog
- Mi portafolio
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 14:10.