Foro de elhacker.net

Programación => PHP => Mensaje iniciado por: Yeshua en 2 Octubre 2008, 02:21 am



Título: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Yeshua en 2 Octubre 2008, 02:21 am
Crear  área restringida con php en nuestra web.

Hola, ¿Cómo están? Aquí les dejo una forma sencilla de crear un area de nuestra web restringida con usuario y password hacia una página personal de nuestro usuario. Este tuto lo hago despues de pasar lo mio para llegar a este fin, a si que espero que les sirva.

Antes de nada debo decir que para realizar una web en php es necesario tener algún interprete de éste para poder ejecutarlo.

Materiales a utilizar:
- bloc de notas
- interprete de php (en mi caso AppServ  con php5)

Archivos a utilizar:
-página de ingreso: (en nuestro ejemplo se llamará ingreso.php) ingreso.php
-página de control: (donde se verifica si el user y password están restringidos) control.php
-página privada: (area restringida personal para nuestro usuario) user1.php// user2.php// user3.php


 Para seguridad ingresaremos un par de códigos en las páginas que a continuación explicaré y tomaremos algunas precauciones más.


Es hora de comenzar, guardaremos este formulario de inscripción en un bloc de notas o lo insertaremos  en la página de inicio que nosotros queramos, ojo, siempre con la extensión .php (en este caso ingreso.php):

Código
  1. <html>
  2. <head>
  3. <title>Acceso Restringido</title>
  4. </head>
  5. <body>
  6. <h1>Autentifíquese</h1>
  7. <form action="control.php" method="POST">
  8. <table align="center" width="225" cellspacing="2" cellpadding="2" border="0">
  9. <tr>
  10. <td colspan="2" align="center"
  11. <?if ($_GET["errorusuario"]=="si"){?>
  12. bgcolor=red><span style="color:ffffff"><b>Datos incorrectos</b></span>
  13. <?}else{?>
  14. bgcolor=#cccccc>Introduce tu clave de acceso
  15. <?}?></td>
  16. </tr>
  17. <tr>
  18. <td align="right">USER:</td>
  19. <td><input type="Text" name="usuario" size="8" maxlength="50"></td>
  20. </tr>
  21. <tr>
  22. <td align="right">PASSWD:</td>
  23. <td><input type="password" name="contraseña" size="8" maxlength="50"></td>
  24. </tr>
  25. <tr>
  26. <td colspan="2" align="center"><input type="Submit" value="ENTRAR"></td>
  27. </tr>
  28. </table>
  29. </form>
  30. </body>
  31. </html>
  32.  

Bien, ahora abrimos otro bloc de notas e insertaremos el siguiente código para validar los usuarios que estén registrados y mandarlos a su página privada.

Código
  1. <?
  2. //vemos si el usuario y contraseña es váildo
  3. if ($_POST["usuario"]=="user1" && $_POST["contraseña"]=="xxxx"){
  4.    //usuario y contraseña válidos
  5.    //defino una sesion y guardo datos
  6.    session_start();
  7.    $_SESSION["autentificado"]= "SI";
  8.    header ("Location: user1.php");
  9. }else {
  10.    //si no existe le mando otra vez a la portada
  11.    header("Location: ingreso.php?errorusuario=si");
  12.  
  13. if ($_POST["usuario"]=="user2" && $_POST["contraseña"]=="asdfg"){
  14.    //usuario y contraseña válidos
  15.    //defino una sesion y guardo datos
  16.    session_start();
  17.    $_SESSION["autentificado"]= "SI";
  18.    header ("Location: user2.php");
  19.  
  20. }else {
  21.    //si no existe le mando otra vez a la portada
  22.    header("Location: ingreso.php?errorusuario=si");
  23.  
  24. if ($_POST["usuario"]=="user3" && $_POST["contraseña"]=="pepe69"){
  25.    //usuario y contraseña válidos
  26.    //defino una sesion y guardo datos
  27.    session_start();
  28.    $_SESSION["autentificado"]= "SI";
  29.    header ("Location: user3.php");
  30.  
  31. }else {
  32.    //si no existe le mando otra vez a la portada
  33.    header("Location: ingreso.php?errorusuario=si");
  34. }
  35. }
  36. }
  37. ?>
  38.  

Pues bien, ya estamos finalizando. Abrimos otro bloc de notas, o bien seleccionamos la web que tengamos creada de nuestro  user1.php //  user2.php  //  user3.php e inserteremos el siguiente código:

Código
  1. <?php
  2. if(!($_SERVER["HTTP_REFERER"]==" ingreso.php")){
  3. echo "No puedes entrar, debes registrarte";
  4. exit();
  5. }
  6. ?>
  7. <html >
  8. <head>
  9. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  10. <title>USER1</title>
  11. </head>
  12. <body>
  13. Estas autentificado, este es tu espacio personal.
  14. <a href="salida.php" target="_top">Salir de forma segura</a>  
  15. </body>
  16. </html>
  17.  

<?php
if(!($_SERVER["HTTP_REFERER"]=="ingreso.php" )){
echo "No puedes entrar, debes registrarte";
exit();
}
?>

 El código éste, el que se situa al inicio del todo de la web sirve para que nadie pueda acceder a la zona restringida sin poner en la pagina ingreso.php los datos.


Asegurense de no dejar espacio entre el  código de php y el <html>
Fijense en esta etiqueta: <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
Esto evita que la web sea registrada por los motores de búsqueda de tipo google.  Aumentando algo más la seguridad.
Con este propósito, y con el fin de que no puedan acceder a el sitio donde tengamos ubicadas las páginas privadas (o mejor dicho que se les complique más) es introducir un archivo index.html  en blanco en la carpeta que queramos ocultar.

Esto fue todo, creo que esto tiene suficiente seguridad (a no ser que vayamos a albergar cuentas de crédito o cosas así, jaja) como para poder proteger  un área (si estoy equivocado por favor díganmelo, no soy un experto pero creo que esto para mis necesidades me sobra). Claro que es mucho mejor con bases de datos, este será mi próximo objetivo.

Saludos y díganme si les gustó, si tiene algún error, si no les funciona(a mi me va perfecto), etc.

--permito su publicación otro sitio siempre que se cite la fuente o autor.

PD: Este tuto ha sido elaborado completamente por mi, los codigos los he cogido de algunas web´s que no cito porque ni recuerdo cuantas miré para hacer lo que era mi proposito, por lo que en gran medida tube que ingeniarmelas para sin saber casi nada de php adaptarlo a mi caso. No creo que esto viole nada contra la propiedad o derechos de autor, si es así. diganmelo.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Hadess_inf en 2 Octubre 2008, 03:08 am
Hola que tal. Resulta que hace poco que empece a ver esto de la seguridad en PHP, no soy un experto pero en fin. QUisiera preguntarte algo, con respecto a esto:

Por que creas esta variable si no veo que la uses en el bloque de codigo siguiente:

Código
  1. $_SESSION["autentificado"]= "SI";

Especificamente que es lo que hace esa linea de codigo.

Código
  1. if(!($_SERVER["HTTP_REFERER"]=="ingreso.php" )){

Gracias por tu tiempo y tu futura respuesta.
xD


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Yeshua en 2 Octubre 2008, 03:29 am
Hola, yo he de decir que tampoco soy un experto y que estoy empezando con esto, para sacarlo fue casi mediante el modo de prueba y error jeje.

respecto a esto
Código
  1. $_SESSION["autentificado"]= "SI";

Tienes razón, no es necesaria, lo he probado y por supuesto, se puede prescindir de ella.

El otro código:
Código
  1. if(!($_SERVER["HTTP_REFERER"]=="ingreso.php" )){

Hace que sea necesario y obligatorio acceder desde ingreso.php a user1.php, sino es así aparece en la pagina lo que tenemos establecido, algo asi como, para acceder debe registrarse. Y si le das a ver código fuente, no aparecerá código, claro. Tan solo esta frase.

Saludos y no os preocupeis por cansinearme que así aprendemos todos:p


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: NaSaRiD15 en 2 Octubre 2008, 03:56 am
Una pregunta, yo tmb estoy novato y me interesa esto, asi que bueno vamos a ver, la duda es esta :

if ($_POST["usuario"]=="user3" && $_POST["contraseña"]=="pepe69"){     //usuario y contraseña válidos     //defino una sesion y guardo datos     session_start();     $_SESSION["autentificado"]= "SI";     header ("Location: user3.php");  }else {     //si no existe le mando otra vez a la portada     header("Location: ingreso.php?errorusuario=si");

Para cada usuario que creas se necesita esto?, no tenes base de datos? donde registras a los nuevos usuarios?.. o lo haces asi, mediante script, cada usuario que queres agregar, lo haces de este modo?..

Saludos y gracias, si es asi, creo que una base de datos le daria mucha mas flexibilidad.

Gracias por todo.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Hadess_inf en 2 Octubre 2008, 04:09 am
Hola ya que estamos hablando del tema. SUpongo que NaSaRiD15 menciono ese ejemplo puesto que solo fue eso "...un ejemplo..." Claro esta que el login se hace con el acceso a una base de datos y todo eso. Volviendo al tema, me parece interesante el script, puesto que como tú mencionas, hace necesario que para acceder a una pagina restringida tengas que pasar por una pagina oculta (php) con codigo capaz de reconocer si es el usuario correcto y/o tiene los permisos necesarios para esto.

Dime este codigo tiene alguna contraparte ¡?


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: NaSaRiD15 en 2 Octubre 2008, 04:15 am
Buenas hadess_inf , en realidad creo que el no utiliza base de datos, al menos en ninguna parte del codigo vi que se conectara a la misma, crea los usuarios en el script mismo, me parece, en realidad no se bien, pero estoy casi convencido que si.

Espero alguien pueda responderme esto rapido porque me genero la duda, gracias por todo.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Hadess_inf en 2 Octubre 2008, 04:28 am
Bueno pues si, no se vio lo que mencionas puesto que yo creo que solo fue algo didactico, para establecer la conexion se haria en 2 paginas. Por ejemplo:

Pagina uno: index.html
Código
  1. <form name='f1' method='post' action='verifica.php'>
  2. usuario: <input type='text' name='t1' size='10'>
  3. clave : <input type='password' name='t2' size='10'>
  4. <input type='submit' value='ingreso'>
  5. </form>
  6. </body>
  7. </html>

CLaro que antes has de haber creado conexion.php con la conexion (valga la redundancia)
Pagina dos: verifica.php
Código
  1. <?
  2. include_once "conexion.php";
  3. $usu = $_post['t1'];
  4. $cla = $_post['t2'];
  5. //aqui codigo para evitar el SQL INYECTION o como se escriba xD
  6. $sql = "select * from usuario where idusuario='$usu' and clave='$cla'";
  7. $res = mysql_query($sql);
  8. if(mysql_num_rows($res)==1)
  9. {
  10. $_session['ingreso']=true;
  11. header("location:micuenta.php");
  12. }
  13. else
  14. {header("location:index.html");}
  15. ?>

Seria algo asi creo: xD
Ahora segun el ejemplo para poder acceder a una pagina restringida seria algo asi:

Código
  1. if(!($_SERVER["HTTP_REFERER"]=="verifica.php" )){

Pero ahora que lo pienso bien esto tendria algunas complicaciones. Porque siempre tendria que pasar por verifica para poder acceder a esa cuenta, ahora quizas se pueda cambiar el verifica.php por un valida.php, esta nueva pagina valida.php podria validar si el usuario esta activo o no.

valida.php
Código
  1. <?
  2. if(isset($_session['ingreso']))
  3. {
  4. header("location:micuenta.php");
  5. }
  6. ?>

Que alquien me corriga si me equivoco en algo.
Saludos.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: NaSaRiD15 en 2 Octubre 2008, 04:31 am
Yo se que es a modo de enseñar, solo queria decir que el crear los usuarios en el mismo script no es an flexible ni bueno como crearlos en una base de datos mysql, por ejemplo. simplemente eso.

Saludos y gracias por tu code, ahora lo miro bien y cualquier cosa te digo.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: WHK en 2 Octubre 2008, 06:16 am
Hice un pequeño script bién básico para ver si es esto lo que necesitas.
Te puedes registrar y cuando ingresas con tu user y pass tienes un contenido personalizado.

Demo: http://lab.jccharry.com/seguridad_web_doc/web.php

Código
  1. <?php
  2. /*
  3. Codeado por WHK para NaSaRiD15
  4. */
  5.  
  6. /* Configuraciones del php --------------------------------- */
  7. error_reporting(0); // Evita fuga de información
  8. set_magic_quotes_runtime(0); // Evita las adiciones de slashses que aplica apache en las Request URI
  9. /* ---------------------------------------------------------- */
  10.  
  11. /* Datos de la base de datos -------------------------------- */
  12. $servidor_bd = '127.0.0.1';
  13. $basededatos = 'nasarid';
  14. $usuario_bd  = 'nasarid';
  15. $pass_bd = 'pass';
  16. /* ---------------------------------------------------------- */
  17.  
  18. /* Conectamos a la base de datos ---------------------------- */
  19. if(!$conectar_sql = mysql_pconnect($servidor_bd, $usuario_bd, $pass_bd)){
  20. $error_critico = "No se puede conectar a la base de datos";
  21. }else{
  22. if(!mysql_select_db($basededatos,$conectar_sql)){
  23.  $error_critico = "No existe la base de datos seleccionada";
  24. }
  25. }
  26. /* ---------------------------------------------------------- */
  27.  
  28. verifica_error_db($error_critico);
  29. $registro = verifica_registrar();
  30. verifica_login();
  31.  
  32. /* ---------------------------------------------------------- */
  33.  
  34. /* Página principal ----------------------------------------- */
  35. if(logueado()){
  36. if(!contenido_usuario_logueado()){
  37.  contenido_error();
  38. }
  39. exit(0);
  40. }else{
  41. contenido_general();
  42. exit(0);
  43. }
  44. /* ---------------------------------------------------------- */
  45.  
  46.  
  47. /* Funciones ================================================ */
  48. function verifica_login(){
  49. /* Verifica si fue enviado el formulario de logueo */
  50. if($_POST['user_login'] and $_POST['pass_login']){
  51.  setcookie('user_login', base64_encode($_POST['user_login']));
  52.  setcookie('pass_login', md5($_POST['pass_login']));
  53.  header("Estado: Redireccionando para su validacion...");
  54.  header("location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  55.  exit(0);
  56. }
  57. }
  58.  
  59. function verifica_error_db($error_critico){
  60. /* Verifica errores de conexión  */
  61. if($error_critico){
  62.  mysql_close(); // Cierra la conexión MySQL
  63.  echo "<html><b>Error: </b>$error_critico<br></html>"; // Escribe el error
  64.  exit(1); // Escapa del script
  65. }
  66. }
  67.  
  68. function logueado(){
  69. if($_COOKIE['user_login'] and $_COOKIE['pass_login']){
  70.  global $conectar_sql;
  71.  $sql = "
  72.   SELECT `pass` FROM `usuarios`
  73.   WHERE `user`
  74.   LIKE CONVERT(_utf8 '".mysql_real_escape_string($_COOKIE['user_login'])."' USING latin1)
  75.   COLLATE latin1_swedish_ci
  76.   LIMIT 1;
  77.  ";
  78.  if(!$peticion = mysql_query($sql,$conectar_sql)){
  79.   return false;
  80.  }else{
  81.   $columna = mysql_fetch_row($peticion);
  82.   mysql_free_result($peticion);
  83.   if(!$columna[0]){
  84.    return false;
  85.   }
  86.   if($_COOKIE['pass_login'] == $columna[0]){
  87.    return true;
  88.   }else{
  89.    return false;
  90.   }
  91.  }
  92. }else{
  93.  return false;
  94. }
  95. }
  96.  
  97. function contenido_usuario_logueado(){
  98. global $conectar_sql;
  99. $sql = "
  100.  SELECT `contenido` FROM `usuarios`
  101.  WHERE `user`
  102.  LIKE CONVERT(_utf8 '".mysql_real_escape_string($_COOKIE['user_login'])."' USING latin1)
  103.  COLLATE latin1_swedish_ci
  104.  LIMIT 1;
  105. ";
  106. if(!$peticion = mysql_query($sql,$conectar_sql)){
  107.  return false;
  108. }else{
  109.  $columna = mysql_fetch_row($peticion);
  110.  mysql_free_result($peticion);
  111.  echo $columna[0];
  112.  return true;
  113. }
  114. }
  115.  
  116. function contenido_general(){
  117. global $registro;
  118. echo '<h1>Creado por WHK para NaSaRiD15</h1><br>
  119. <h2>http://foro.elhacker.net/php/tutorial_crear_area_restringida_con_php_en_nuestra_web-t229893.0.html</h2>
  120.  <br><br>
  121.  <h3>Ingresar:</h3><br>
  122.  <form method="post">
  123.  <input type="text" name="user_login"> User<br>
  124.  <input type="passwd" name="pass_login"> Pass<br>
  125.  <input type="submit" value="Ingresar">
  126.  </form>
  127.  <br><br><h3>O registrarse:</h3><br>
  128.  <form method="post">
  129.  <input type="text" name="user_registrar"> User<br>
  130.  <input type="passwd" name="pass_registrar"> Pass<br>
  131.  <input type="submit" value="Registrarse">
  132.  </form><br><br>
  133.  '.$registro.'
  134. ';
  135. }
  136.  
  137. function contenido_error(){
  138. echo '
  139.  <b><i>Hubo un error al devolver su contenido personalizado.<br>
  140.  Elimine sus cookies y buelva a intentarlo.</i></b>
  141. ';
  142. }
  143.  
  144. function verifica_registrar(){
  145. if($_POST['user_registrar'] and $_POST['pass_registrar']){
  146.  global $conectar_sql;
  147.  $sql = "
  148.   SELECT `user`
  149.   FROM `usuarios`
  150.   WHERE `user`
  151.   LIKE CONVERT(_utf8 '".base64_encode($_POST['user_registrar'])."' USING latin1)
  152.   COLLATE latin1_swedish_ci
  153.   LIMIT 1;
  154.  ";
  155.  if(!$peticion = mysql_query($sql,$conectar_sql)){
  156.   return false;
  157.  }else{
  158.   $columna = mysql_fetch_row($peticion);
  159.   mysql_free_result($peticion);
  160.   if(base64_encode($_POST['user_registrar']) == $columna[0]){
  161.    return "El usuario ya existe";
  162.   }else{
  163.    $sql = "
  164.     INSERT INTO `usuarios` (`user`, `pass`, `contenido`)
  165.     VALUES ('".
  166.     base64_encode($_POST['user_registrar'])."', '".
  167.     md5($_POST['pass_registrar'])."', '<b>Bienvenido ".
  168.     mysql_real_escape_string(htmlspecialchars($_POST['user_registrar'], ENT_QUOTES)).
  169.     "!</b><br>Contenido a espera de ser editado.');
  170.    ";
  171.    if(mysql_query($sql,$conectar_sql)){
  172.     setcookie('user_login', base64_encode($_POST['user_registrar']));
  173.     setcookie('pass_login', md5($_POST['pass_registrar']));
  174.     header("Estado: Redireccionando para su validacion...");
  175.     header("location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
  176.     exit(0);
  177.    }else{
  178.     return false;
  179.    }
  180.   }
  181.  }
  182. }
  183. }
  184. /* =========================================================== */
  185. ?>

Base de datos en MySQL:
Código
  1. -- phpMyAdmin SQL Dump
  2. -- version 2.11.9.1
  3. -- http://www.phpmyadmin.net
  4. --
  5. -- Servidor: localhost
  6. -- Tiempo de generación: 01-10-2008 a las 22:21:43
  7. -- Versión del servidor: 5.0.45
  8. -- Versión de PHP: 5.2.6
  9.  
  10. SET SQL_MODE="NO_AUTO_VALUE_ON_ZERO";
  11.  
  12. --
  13. -- Base de datos: `nasarid`
  14. --
  15.  
  16. -- --------------------------------------------------------
  17.  
  18. --
  19. -- Estructura de tabla para la tabla `usuarios`
  20. --
  21.  
  22. CREATE TABLE IF NOT EXISTS `usuarios` (
  23.  `user` text NOT NULL,
  24.  `pass` text NOT NULL,
  25.  `contenido` text NOT NULL
  26. ) ENGINE=MyISAM DEFAULT CHARSET=latin1;
  27.  
  28. --
  29. -- Volcar la base de datos para la tabla `usuarios`
  30. --
  31.  
  32. INSERT INTO `usuarios` (`user`, `pass`, `contenido`) VALUES
  33. ('d3c=', 'ad57484016654da87125db86f4227ea3', '<b>Bienvenido ww!</b><br>Contenido a espera de ser editado.'),
  34. ('dHR0dHQ=', '3bad6af0fa4b8b330d162e19938ee981', '<b>Bienvenido ttttt!</b><br>Contenido a espera de ser editado.');
  35.  


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: NaSaRiD15 en 2 Octubre 2008, 06:41 am
Wow, excelente, muchas gracias por el trabajo esto es exactamente lo que estaba buscando!!!

Saludos whk, un gusto tenerlo por aqui!!!!!!!


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Yeshua en 2 Octubre 2008, 11:22 am
Hola que tal.
Una pregunta, yo tmb estoy novato y me interesa esto, asi que bueno vamos a ver, la duda es esta :

if ($_POST["usuario"]=="user3" && $_POST["contraseña"]=="pepe69"){     //usuario y contraseña válidos     //defino una sesion y guardo datos     session_start();     $_SESSION["autentificado"]= "SI";     header ("Location: user3.php");  }else {     //si no existe le mando otra vez a la portada     header("Location: ingreso.php?errorusuario=si");

Para cada usuario que creas se necesita esto?, no tenes base de datos? donde registras a los nuevos usuarios?.. o lo haces asi, mediante script, cada usuario que queres agregar, lo haces de este modo?..

Saludos y gracias, si es asi, creo que una base de datos le daria mucha mas flexibilidad.

Gracias por todo.

Si, es así, utilizo el control.php para verificar que está registrado, se que sería mejor una base de datos :p este es mi proximo reto, pero tan solo sería crearla y modificar la pagina control.php. seria poca cosa.

WHK y hadess_inf  gracias por vuestros aportes, muy buenos, pero a mi la verdad es que no me interesaba que la gente se pudiese inscribir, me interesa mas que yo se las de directamente (es una web algo modesta). Pero se que les serviran a la gente xq ai demanda sobre esto por la red.

Saludos


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 24 Febrero 2009, 21:55 pm
master he checado tu php y conexion con la base de datos esta super genial ahora mi pregunta es como desloggeo un usuario dentro del contenido de html simplemente le pongo un nuevo boton de que me saque de la base de datos y como seria eliminar desde otra liga el usuario y el passwod dicho usuario de la base de datos desde otro php o como se podria agragar al que tu utilizaste


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 27 Febrero 2009, 00:52 am
ok ya encontre la forma de sacar el registro de usuarios desde otra ventana usando el mismo script lo que no me queda claro es como hacer el log off y tambien la forma de eliminar los usuarios enlistandolos en una pagina especifica espero me puedan platicar algo de esto saludos ;-)


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 27 Febrero 2009, 02:50 am
 ;D ;D ;D ;D y aapude hacer lo del logoff nada mas es cuestion de leer el script del supermaster ahora lo unico que me queda duda es como crear una lista visible de la base de datos para eliminar a los usuarios y sus celdas loool si logro hacerlo yo solo se los posteare pero si alguien tiene idea de como, please posteelo  :laugh: :laugh:


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Dosjota en 27 Febrero 2009, 03:26 am
Hola, bueno, yo ya llevo un tiempo en esto de php.
y acabo de ver tu codigo [a la rapida] y creo que se puede hacer mas para evitar SQLi

para empezar esta bueno.
y podrias sacarle mas provecho a php5
[Ej: POO]

Saludos cuidate!
y suerte!


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: WHK en 27 Febrero 2009, 03:40 am
Citar
como hacer el log off
Código
  1. function desloguear(){
  2. @setcookie('pass_login', '');
  3. $_COOKIES['pass_login'] = '';
  4. }

Citar
y creo que se puede hacer mas para evitar SQLi
Puedes utizar mysql_real_escape_string
http://cl.php.net/function.mysql-real-escape-string
Sin la necesidad de procesar todo en forma cifrada.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 27 Febrero 2009, 03:47 am
Hola, bueno, yo ya llevo un tiempo en esto de php.
y acabo de ver tu codigo [a la rapida] y creo que se puede hacer mas para evitar SQLi

para empezar esta bueno.
y podrias sacarle mas provecho a php5
[Ej: POO]

Saludos cuidate!
y suerte!

Podrias citar alguna solucion a un listamiento de la base de datos para borrar usuarios te lo agradeceria infinitamente


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 27 Febrero 2009, 03:53 am
Citar
como hacer el log off
Código
  1. function desloguear(){
  2. @setcookie('pass_login', '');
  3. $_COOKIES['pass_login'] = '';
  4. }

Citar
y creo que se puede hacer mas para evitar SQLi
Puedes utizar mysql_real_escape_string
http://cl.php.net/function.mysql-real-escape-string
Sin la necesidad de procesar todo en forma cifrada.

Master quede anodado con tu respuesta solo una pregunta mas, bueno 2 abusando de la confianza en tu primer script utilice en lugar de la base de datos el linkeo tu utilizaste el 127.0.0.1 para el servidor_bd lo replace por localhost y aun asi me sigue funcionando esto no me creara conflictos si utilizo mi base de datos con otra funcion que llame a la misma base de datos??

la segunda es al llamar de nuevo a la base de datos para enlistarla y borrar usuarios ya que tengo lata al meterle el boton delete no se me ocurre como..


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Dosjota en 28 Febrero 2009, 02:08 am
Código
  1. $consulta=mysql_query("select * from $TABLA order by nombre asc");
  2. $total_datos = mysql_num_rows ($consulta);
  3. if($total_edificios==0){
  4. echo "No hay datos";
  5. }else{
  6. while($resultado=mysql_fetch_array($consulta))
  7. {
  8. echo "-". $resultado["nombre"] . "<a href='accion.php?accion=borrar&id=$resultado[nombre]'><img src='img/borrar.png' border='0'></a>";
  9. }
  10. }
  11.  
  12.  
  13. if ($_GET['accion']=="borrar"){
  14. $consulta=mysql_query("select * from $TABLA")or die(mysql_error());
  15. $total_registros = mysql_num_rows ($consulta);
  16. mysql_free_result($consulta);
  17.  
  18. if ($total_registros == 1){
  19. echo"debe exsistir por lo menos un dato en la base de datos.";
  20. }
  21.  
  22. $a_borrar= $_GET['nombre'];
  23. mysql_query("DELETE FROM $TABLA WHERE nombre='$a_borrar'") or die("no, se pudo borrar ")or die(mysql_error());
  24. header ("Location: listado.php");
  25. }
  26.  

seria algo asi....
 ;D

ojala sea de utilidad.


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 4 Marzo 2009, 20:39 pm
Citar
como hacer el log off
Código
  1. function desloguear(){
  2. @setcookie('pass_login', '');
  3. $_COOKIES['pass_login'] = '';
  4. }


Estimado me trabe aqui abusando de ti estoy haciendo el registro externo que no sea de acceso publico trate de hacerlo con el siguiente codigo pero me mando al caño tengo que declararlo en el codigo? en el que utilice para el acceso? como realizo el function en el acceso para que me acepte el posting al acceso o directamente declaro otro function de registro y el que devuelves de restro lo cambio por error login?

Como lo incluyo desde un html externo o bien realizo otro function?

Código:
 

Intente meterlo desde mi html externo de esta forma, pero no funciono:

  <form method="post" action="ingreso.php">
   <input type="submit" value="Ingresar">
  </form>
  <br><br><h3>O registrarse:</h3><br>
  <form method="post">
  <input type="text" name="user_registrar"> User<br>
  <input type="passwd" name="pass_registrar"> Pass<br>

  <input type="submit" value="Registrarse">
  </form><br>


Estuve pensando y solo quedaba meterlo en el ingreso.php pero es declarar otro function y si es así tendria que modificar el metodo de registro por que como estan el login y register juntos como puedo accesarlos en otra hoja restringiendo que el usuario no se pueda registrar, dejanlo la unica opcion que yo lo de en alta


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 4 Marzo 2009, 20:53 pm
Código
  1. $consulta=mysql_query("select * from $TABLA order by nombre asc");
  2. $total_datos = mysql_num_rows ($consulta);
  3. if($total_edificios==0){
  4. echo "No hay datos";
  5. }else{
  6. while($resultado=mysql_fetch_array($consulta))
  7. {
  8. echo "-". $resultado["nombre"] . "<a href='accion.php?accion=borrar&id=$resultado[nombre]'><img src='img/borrar.png' border='0'></a>";
  9. }
  10. }
  11.  
  12.  
  13. if ($_GET['accion']=="borrar"){
  14. $consulta=mysql_query("select * from $TABLA")or die(mysql_error());
  15. $total_registros = mysql_num_rows ($consulta);
  16. mysql_free_result($consulta);
  17.  
  18. if ($total_registros == 1){
  19. echo"debe exsistir por lo menos un dato en la base de datos.";
  20. }
  21.  
  22. $a_borrar= $_GET['nombre'];
  23. mysql_query("DELETE FROM $TABLA WHERE nombre='$a_borrar'") or die("no, se pudo borrar ")or die(mysql_error());
  24. header ("Location: listado.php");
  25. }
  26.  

seria algo así....
 ;D

ojala sea de utilidad.

Gracias mira asi quedo mi lestado:
Código:
<?php

$servidor = "tuservidor";
$usuario = "nombreusuario";
$clave = "tuclavedeusuario";
$basedatos = "nombrebasedatos";

$conexion=mysql_connect ($servidor, $usuario, $clave) or die ('problema conectando porque :' . mysql_error());
mysql_select_db ($basedatos,$conexion);
$cadena ="SELECT * FROM tutabla";
$tabla = mysql_query($cadena, $conexion) or die ("problema con cadena de conexion<br><b>" . mysql_error()."</b>");
$registros encontrados = mysql_num_rows($tabla);
echo "Encontrados: ".$registros encontrados."<br>;
while ($registro = mysql_fetch_array($tabla)){
echo $registro['campos_de_tabla'];
}
?>


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: stavrosdrv en 3 Abril 2009, 06:43 am

Citar
    $sql = "
     INSERT INTO `usuarios` (`user`, `pass`, `contenido`)
     VALUES ('".
     base64_encode($_POST['user_registrar'])."', '".
     md5($_POST['pass_registrar'])."', '<b>Bienvenido ".
     mysql_real_escape_string(htmlspecialchars($_POST['user_registrar'], ENT_QUOTES)).
     "!</b><br>Contenido a espera de ser editado.');
    ";
    if(mysql_query($sql,$conectar_sql)){
     setcookie('user_login', base64_encode($_POST['user_registrar']));
     setcookie('pass_login', md5($_POST['pass_registrar']));
     header("Estado: Redireccionando para su validacion...");
     header("location: http://".$_SERVER[HTTP_HOST].$_SERVER[PHP_SELF]);
     exit(0);
    }else{
     return false;
    }
   }
  }
 }
}
/* =========================================================== */
?>

Ok ya quedo pero donde meto el contenido o lo redirecciono con un java?


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Churrin515 en 9 Julio 2009, 23:21 pm
Yeshua, creo que tienes un error, tu estas poniendo:
Código
  1. <?php
  2. if(!($_SERVER['HTTP_REFERER']==" ingreso.php")){
  3. echo "No puedes entrar, debes registrarte";
  4. exit();
  5. ?>
  6. <html>
  7. <head>
  8. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  9. <title>USER1</title>
  10. </head>
  11. <body>
  12. Estas autentificado, este es tu espacio personal.
  13. </body>
  14. </html>
  15.  
Pero descubri que en realidad se debia poner:
Código
  1. <?php
  2. if(!($_SERVER['HTTP_REFERER'] == "http://localhost/Validar/ingreso.php")){
  3. echo "No puedes entrar, debes registrarte";
  4. } else {
  5. ?>
  6. <html>
  7. <head>
  8. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  9. <title>USER1</title>
  10. </head>
  11. <body>
  12. Estas autentificado, este es tu espacio personal.
  13. </body>
  14. </html>
  15. <?php } ?>
En fin, me funciono bien...


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Og. en 10 Julio 2009, 00:14 am
Pero descubri que en realidad se debia poner:
Código
  1. <?php
  2. if(!($_SERVER['HTTP_REFERER'] != "http://localhost/Validar/ingreso.php")){
  3. echo "No puedes entrar, debes registrarte";
  4. } else {
  5. ?>
  6. <html>
  7. <head>
  8. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  9. <title>USER1</title>
  10. </head>
  11. <body>
  12. Estas autentificado, este es tu espacio personal.
  13. </body>
  14. </html>
  15. <?php } ?>
En fin, me funciono bien...

dudo que eso funcione, por que lo que hace es :
encaso de que no vengas de http://localhost/Validar/ingreso.php el html quedaria asi:
Código
  1. No puedes entrar, debes registrarte<html>
  2. <head>
  3. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  4. <title>USER1</title>
  5. </head>
  6. <body>
  7. Estas autentificado, este es tu espacio personal.
  8. </body>
  9. </html>
  10.  
en caso de que vengas de  http://localhost/Validar/ingreso.php el html quedaria asi:
Código
  1. <html>
  2. <head>
  3. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  4. <title>USER1</title>
  5. </head>
  6. <body>
  7. Estas autentificado, este es tu espacio personal.
  8. </body>
  9. </html>
  10.  

saludos!

pd: es una teoria :P


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: Dosjota en 10 Julio 2009, 07:21 am
 :silbar:
Pero descubri que en realidad se debia poner:
Código
  1. <?php
  2. if(!($_SERVER['HTTP_REFERER'] != "http://localhost/Validar/ingreso.php")){
  3. echo "No puedes entrar, debes registrarte";
  4. } else {
  5. ?>
  6. <html>
  7. <head>
  8. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  9. <title>USER1</title>
  10. </head>
  11. <body>
  12. Estas autentificado, este es tu espacio personal.
  13. </body>
  14. </html>
  15. <?php } ?>
En fin, me funciono bien...

dudo que eso funcione, por que lo que hace es :
encaso de que no vengas de http://localhost/Validar/ingreso.php el html quedaria asi:
Código
  1. No puedes entrar, debes registrarte<html>
  2. <head>
  3. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  4. <title>USER1</title>
  5. </head>
  6. <body>
  7. Estas autentificado, este es tu espacio personal.
  8. </body>
  9. </html>
  10.  
en caso de que vengas de  http://localhost/Validar/ingreso.php el html quedaria asi:
Código
  1. <html>
  2. <head>
  3. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  4. <title>USER1</title>
  5. </head>
  6. <body>
  7. Estas autentificado, este es tu espacio personal.
  8. </body>
  9. </html>
  10.  

saludos!

pd: es una teoria :P

"http://localhost/Validar/ingreso.php"
solo coloca:
"ingreso.php"
lo otro del mensaje, si es solo un mensaje, muestralo y redirecciona a "INGRESAR.PHP" ...

 ;D


Título: Re: Tutorial: Crear area restringida con php en nuestra web
Publicado por: & eDu & en 10 Julio 2009, 10:43 am
Código
  1. <?php
  2. if(!($_SERVER["HTTP_REFERER"]==" ingreso.php")){
  3. echo "No puedes entrar, debes registrarte";
  4. exit();
  5. }
  6. ?>
  7. <html >
  8. <head>
  9. <META NAME = "ROBOTS" CONTENT = "NOARCHIVE">
  10. <title>USER1</title>
  11. </head>
  12. <body>
  13. Estas autentificado, este es tu espacio personal.
  14. <a href="salida.php" target="_top">Salir de forma segura</a>  
  15. </body>
  16. </html>
  17.  
Ahi puede entrar todo el mundo, no hace falta estar registrado.