Comunidad de diseño web y desarrollo en internet online

Controlar acceso de usuario a diferentes categorias de mi we

Citar            
MensajeEscrito el 10 Jun 2010 02:23 am
Yo denuevo molestando ojala y esta ves alguien me de una solucion o alternativa.

Tengo una web que consiste en un concurso por internet, el usuario elgie una categoria le salen 7 banners de los premios que puede ganar al darle en una banner le sale un formulario que le hace una pregunta, esta pregunta esta validada para que si el usuario contesta mal le sale un mensaje que le indica que se equivoco y que ya no puede participar de ese premio pero puede participar de otro premio de la misma categoria o de otra categoria, lo mismo si contesta bien le pasa un form que le pide los datos pero igual ya no podra participar por el mismo premio.
Lo que necesito es que alguien me indique o me aconseje como puedo hacer este control.
Un amigo me aconsejo que capture la ip la guarde en la bd junto con la categoria y el premio para controlar, comparando la bd, esto funciona perfecto, ahora el problema con esto es que el $ipmuestra = $_SERVER[REMOTE_ADDR]; me da la ip publica del usuario es decir la del modem que esta conectado a internet.
Ahora si hay una red con 10 pc en ese modem las 10 pc me saldran que ya participaron porque el $ipmuestra = $_SERVER[REMOTE_ADDR]; me dara la misma ip publica para todos.
He buscado porque me dijeron que se podia obtener el nombre del host que se conecto para agregarlo a al ip y controlar pero no he encontrado nada.
Ojala y alguien me responda, en caso que yo este mal aguien que me diga como puedo hacer este control de antemanos gracias y mil disculpas por molestar tanto.

Por ansisweb

78 de clabLevel



 

firefox
Citar            
MensajeEscrito el 11 Jun 2010 01:07 pm
Puedes obtener la IP real del visitante usando el siguiente codigo:

Código PHP :

function getRealIP()
{

   if( $_SERVER['HTTP_X_FORWARDED_FOR'] != '' )
   {
      $client_ip =
         ( !empty($_SERVER['REMOTE_ADDR']) ) ?
            $_SERVER['REMOTE_ADDR']
            :
            ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
               $_ENV['REMOTE_ADDR']
               :
               "unknown" );

      // los proxys van añadiendo al final de esta cabecera
      // las direcciones ip que van "ocultando". Para localizar la ip real
      // del usuario se comienza a mirar por el principio hasta encontrar
      // una dirección ip que no sea del rango privado. En caso de no
      // encontrarse ninguna se toma como valor el REMOTE_ADDR

      $entries = split('[, ]', $_SERVER['HTTP_X_FORWARDED_FOR']);

      reset($entries);
      while (list(, $entry) = each($entries))
      {
         $entry = trim($entry);
         if ( preg_match("/^([0-9]+\\.[0-9]+\\.[0-9]+\\.[0-9]+)/", $entry, $ip_list) )
         {
            // http://www.faqs.org/rfcs/rfc1918.html
            $private_ip = array(
                  '/^0\\./',
                  '/^127\\.0\\.0\\.1/',
                  '/^192\\.168\\..*/',
                  '/^172\\.((1[6-9])|(2[0-9])|(3[0-1]))\\..*/',
                  '/^10\\..*/');

            $found_ip = preg_replace($private_ip, $client_ip, $ip_list[1]);

            if ($client_ip != $found_ip)
            {
               $client_ip = $found_ip;
               break;
            }
         }
      }
   }
   else
   {
      $client_ip =
         ( !empty($_SERVER['REMOTE_ADDR']) ) ?
            $_SERVER['REMOTE_ADDR']
            :
            ( ( !empty($_ENV['REMOTE_ADDR']) ) ?
               $_ENV['REMOTE_ADDR']
               :
               "unknown" );
   }

   return $client_ip;

}

Por bucle_infinito

Claber

166 de clabLevel

1 tutorial

 

.NET Developer

firefox

 

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