elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Sigue las noticias más importantes de seguridad informática en el Twitter! de elhacker.NET


  Mostrar Temas
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 36
181  Comunicaciones / Mensajería / Desbloquear cuenta de hotmail windows live bloqueada en: 21 Junio 2012, 18:43 pm
"La cuenta se ha bloqueado temporalmente".

Citar
"Esta cuenta está bloqueada actualmente y no puede enviar mensajes. Si crees que no has infringido las Condiciones de uso de Windows Live, ponte en contacto con el servicio de soporte técnico."

Desde ese momento tendrás limitado el acceso a tu cuenta de Hotmail y deberás seguir una serie de pasos para certificar que eres el dueño legítimo de esa cuenta y activarla de nuevo.



Soluciones

Windows Live ofrece dos modos de recuperar el control de tu cuenta: mediante un servicio de SMS y a través del servicio Windows Live Solution Center.

Vía SMS

Validación por SMS
https://sms.live.com/?wa=wsignin1.0

Para activar tu cuenta a través de tu teléfono móvil debes hacer lo siguiente:

1. Haz clic en el siguiente enlace

2. Inicia sesión en Windows Live (pese a tener la cuenta de correo bloqueada, deberías poder acceder) 3. Introduce tu número de móvil 4. Recibirás un mensaje con un código. Anótalo

5. Copia el código enviado a tu teléfono móvil 6. Tu cuenta habrá sido verificada. Sigue los pasos que se te indican en pantalla para desbloquear la cuenta.



Importante: una vez realizado este proceso, Windows Live te solicitará si quieres darte de alta en sus servicios de alertas por SMS. Estos servicios tienen un coste por mensaje recibido y enviado, de modo que si no lo deseas, no selecciones ninguna de las opciones

Nota: Este servicio no está presente en todos los países, así que puede darse el caso de que no puedas desbloquear tu cuenta de Hotmail con este método.

Correo alternativo

Si en su cuenta posee correo alternativo, puede cambiar la contraseña siguiendo los pasos del siguiente enlace:

https://account.live.com/password/reset

Vía Windows Live Solution Center

Si el servicio vía SMS no está disponible en tu país o bien no te hace gracia ir dando tu número de teléfono móvil, dispones de otro modo de activar tu cuenta: a través del servicio de soporte de Windows Live.

La primera vez que accedas a este servicio deberás crear un nombre de usuario e indicar una contraseña. Una vez hecho esto, deberás hacer lo siguiente:

1. Selecciona el producto relacionado con la pregunta: Hotmail

2. Indica el motivo de tu consulta: Error: "Tu cuenta ha sido temporalmente bloqueada"

3. Haz clic en "Continuar"

4. Realiza tu consulta, aportando los datos solicitados y marcando "Avisarme cuando alguien responda a esta pregunta". Un consejo: en el cuerpo del mensaje, escribe una dirección de correo electrónico alternativa.



En un período máximo de 24 horas, un moderador de Windows Live te contactará a través del mismo hilo de pregunta y te ayudará a desbloquear tu cuenta.


*Entra a Windows Live Solution Center
*Ingresa la dirección de correo que quieres recuperar. En el recuadro de abajo ingresa una dirección de correo en la cual el soporte de Windows Live se pueda poner en contacto contigo. Luego haz clic en Continuar
*En la página que aparece ingresa la mayor cantidad de información posible acerca de tu cuenta. Por ejemplo algo muy importante es ingresar alguna contraseña que hayas utilizado en el pasado para la cuenta que quieres recuperar. Toda esta información servirá para que el soporte de Windows Live esté seguro que eres el dueño de la cuenta. Luego haz clic en el botón Enviar
*El soporte de Windows Live te enviará un correo dentro de las 24 horas para informarte si brindaste suficiente información para recuperar tu cuenta.
182  Informática / Hardware / Vídeo - PC lleno de polvo en: 6 Junio 2012, 17:00 pm


En los comentarios algún cachondo decía que Chuck Norris podía jugar con ese ordenador al máximo de fps posibles  ;D
183  Programación / PHP / Ejemplos scripts PHP para Banear IP y Rangos de IP's en: 1 Junio 2012, 20:58 pm
Código
  1. <?php
  2. /* Listado con las IPs */
  3. $ban_ip_list = array('68.180.206.184', '64.233.167.99', '207.46.232.182');
  4.  
  5. /* Listado con el rango de IP. Use the '*' as the range selector */
  6. $ban_ip_range = array('69.*.83.197');
  7.  
  8. /* Ip Visitante */
  9. $user_ip = $_SERVER['REMOTE_ADDR'];
  10.  
  11. /* Mensaje que verá si está baneado */
  12. $msg = 'You do not have permission to access this page.';
  13.  
  14. /* Message to output if the IP is in the ban list */
  15.  
  16.    if(in_array($user_ip, $ban_ip_list))
  17. {
  18.  exit($msg);
  19. }
  20.  
  21. /* Check if the Visitor's IP is in our range's list */
  22.  
  23. if(!empty($ban_ip_range))
  24. {
  25. foreach($ban_ip_range as $range)
  26. {
  27. $range = str_replace('*','(.*)', $range);
  28.  
  29.    if(preg_match('/'.$range.'/', $user_ip))
  30. {
  31.  exit($msg);
  32. }
  33. }
  34. }
  35. ?>

Explicación de cómo banear correctamente un rango:

Ayuda:Cómo bloquear un rango
http://es.wikipedia.org/wiki/Ayuda:C%C3%B3mo_bloquear_un_rango

Usando mejor siempre el sufijo /24 para bloquear 256 ip's


Código
  1. <?
  2. $banned[0]="x.x.x.x";
  3. if (in_array($_SERVER['REMOTE_ADDR'],$banned))
  4. {
  5. header("HTTP/1.1 403 Forbidden");
  6. }
  7. ?>


Código
  1. <?php
  2. $ipArray = file('ip.txt');
  3. foreach ($ipArray as $ipTest) {
  4.  if (substr_count($_SERVER['REMOTE_ADDR'],trim($ipTest)) != "0") {
  5.    header('location: /banned.htm');  // the banned display page
  6.    die();
  7.  }
  8. }
  9. ?>


Código
  1. <?
  2. $targetAddr = "123.123..*..*";  //yes is two dots
  3.  
  4. //this code will match any class of 123.123.x.x,
  5. //you can also do "123.123.123..*" to do anything that is 123.123.123.x
  6.  
  7. if (ereg($targetAddr, $_SERVER['REMOTE_ADDR'])) {
  8.    //remote address match, do something or don't do anything
  9. } else {
  10.   //do whatever you want to address that doesn't match
  11. }
  12. ?>



Código
  1. <?php
  2.  
  3. $ip = $_SERVER['REMOTE_ADDR'];
  4. $ips_baneadas = array('10.0.0.1',’192.0.0.1’);
  5. $contador = count($ips_baneadas);
  6.  
  7.  
  8. for ($i=0; $i<$contador; $i++) {
  9. if($ip == $ips_baneadas[$i]) { die("Tu Ip no esta permitida . $ip" ; } }
  10.  
  11.  
  12. ?>

Mirando un listado de ip's un fichero txt

Código
  1. <?php
  2. $count_blocks = 0;
  3. $ip_lines = file("includes/ban.txt");
  4. $count = count($ip_lines);
  5. foreach($ip_lines as $single_line){
  6. $ip = explode("#", $single_line);
  7. if($ip[1] == $_SERVER['REMOTE_ADDR']){
  8.      die("Ip baneada.");
  9. }
  10. }
  11. ?>


Código
  1. <?php
  2. $banned_ip = array();
  3. $banned_ip[] = '111.111.111.111';
  4. $banned_ip[] = '111.111.111.112';
  5. $banned_ip[] = '111.111.111.113';
  6. $banned_ip[] = '111.111.111.114';
  7.  
  8. foreach($banned_ip as $banned) {
  9. $ip = $_SERVER['REMOTE_ADDR'];
  10. if($ip == $banned){
  11. echo "You have been banned!";
  12. exit();
  13. }
  14. }
  15. // rest of PHP Script here!
  16. ?>




Código
  1. <?php
  2. function ban($range = array(), $ip = '')
  3. {
  4.        $ip = longip(trim($ip));
  5.        if($ip == FALSE)
  6.        {
  7.                return FALSE;
  8.        }
  9.        if(empty($ip))
  10.        {
  11.                return FALSE;
  12.        }
  13.        foreach($range AS $key => $val)
  14.        {
  15.                $temp = explode('-', $val);
  16.                if(empty($temp[0]))
  17.                {
  18.                        return FALSE;
  19.                }
  20.                else
  21.                {
  22.                        $start_ip = longip(trim($temp[0]));
  23.                        if($start_ip == FALSE)
  24.                        {
  25.                                return FALSE;
  26.                        }
  27.                }
  28.                if(empty($temp[1]))
  29.                {
  30.                        if($ip == $start_ip)
  31.                        {
  32.                                return TRUE;
  33.                        }
  34.                }
  35.                else
  36.                {
  37.                        $stop_ip = longip(trim($temp[1]));
  38.                        if($stop_ip == FALSE)
  39.                        {
  40.                                return FALSE;
  41.                        }
  42.                }
  43.                if($start_ip <= $ip && $ip <= $stop_ip)
  44.                {
  45.                        return TRUE;
  46.                }
  47.        }
  48.        return FALSE;
  49. }
  50. function longip($ip)
  51. {
  52.        if(empty($ip))
  53.        {
  54.                return FALSE;
  55.        }
  56.        $block = explode('.', $ip);
  57.        if(count($block) != 4)
  58.        {
  59.                return FALSE;
  60.        }
  61.        $i = 3;
  62.        $block_ip = 0;
  63.        foreach($block as $k => $v)
  64.        {
  65.                $v = filter_var($v, FILTER_VALIDATE_INT);
  66.                if($v < 0)
  67.                {
  68.                        $v = 0;
  69.                }
  70.                if($v > 255)
  71.                {
  72.                        $v = 255;
  73.                }
  74.                $block_ip += pow(256, $i)*$v;
  75.                $i--;
  76.        }
  77.        return $block_ip;
  78. }
  79.  
  80. //usage
  81. $block_range = array(   '192.168.1.0 - 192.168.2.255',
  82.                        '192.168.4.0 - 192.168.4.255',
  83.                        '192.168.6.1'
  84.                );
  85.  
  86. $ip = '192.168.3.255';
  87.  
  88. if(ban($block_range, '192.168.6.1'))
  89. {
  90.        echo "BAN\n";
  91. }
  92. else
  93. {
  94.        echo "UNBAN\n";
  95. }
  96.  
  97. ?>
184  Programación / Bases de Datos / MyISAM vs InnoDB (Ventajas y diferencias) en: 24 Mayo 2012, 19:00 pm
Con el lanzamiento de la rama de MySQL 5.5.x, InnoDB se ha convertido en el motor de almacenamiento por defecto, ya que antes era MyISAM.

Todos los que antes de comenzar a utilizar MySQL 5.5 se inició con MyISAM. Fue el motor de almacenamiento por defecto y tenías que buscarte la vida para utilizar otro motor. Fue una buena base de datos buscando, robusto, simple y rápido en muchos aspectos.

Pero llegó con las transacciones de InnoDB, bloqueo a nivel de fila, y una mejor recuperación de una caída de MyISAM. En algunos casos el rendimiento de algunos puntos de referencia InnoDB estaba detrás de MyISAM (selects, MyISAM leía más rápido que InnoDB).  Estaba, ya no lo está.

Ahora el rendimiento para la mayoría de las aplicaciones es mucho mejor con InnoDB a MyISAM. Y por eso a partir MySQL 5.5, InnoDB es el motor de almacenamiento por defecto.

Pero y si yo no necesito transacciones, no necesito el bloqueo de fila, y no me preocupa que la tabla se pueda corromper. ¿Entonces no necesito InnodB? También, porque la mayoría de las nuevas características están diseñadas alrededor de InnoDB. La agrupación de subprocesos, por ejemplo, va a aumentar en gran medida de la transacción por segundo y las transacciones son territorio InnoDB. La compresión de datos InnoDB permite leer más rápido en el disco duro.

Hay una gran cantidad de mitos que rodean el motor InnoDB ("más lento en Lecturas ',' sólo se utiliza si necesita claves foráneas o transacciones"). Básicamente, en MySQL 5.0, InnoDB todavía tenía problemas, en 5.5 no.

Pero InnoDB necesita optimización y tuning. InnoDB necesita afinación. En serio. MyISAM para muchas aplicaciones se puede trabajar bien con los valores por defecto. Se han visto a cientos de bases de datos con GB funcionando con MyISAM con la configuración predeterminada y ha funcionado razonablemente. InnoDB necesita recursos y no va a funcionar bien con los valores predeterminados.

Aún habiendo dicho todo lo anterior, si tenemos un foro, wiki, blog, cms o lo que sea, con gran porcentaje de consutlas sql de lecutra ( select (80% o más que suele ser lo habitual) se recomienda usar el motor MyISAM, porque es mucho más rápido y consume mucha menos cpu.

Aunque como siempre, cada caso es personalizado y lo mejor es realizar un test, benchmark para elegir adecuadamente el motor que mejor se ajuste a nuestras necesidades (ya sea de hardware o de tipos de consulta).

Motor de almacenamiento MyISAM (storage-engine)

El tipo MyISAM era el motor de almacenamiento por defecto que se le asigna a las tablas que se crean, si no se le indica que utilice otro tipo de motor. Se basa en el código ISAM lo que hace que sean tablas muy fiables, pero añadiendo nuevas características.

Cada tabla MyISAM se almacena en disco en tres ficheros. Los ficheros tienen nombres que comienzan con el nombre de tabla y tienen una extensión para indicar el tipo de fichero. Un fichero .FRM almacena la definición de tabla. El fichero de datos tiene una extensión .MYD mientras que el fichero índice tiene una extensión .MYI.

Uso de recursos: MyISAM consume una menor cantidad de memoria con respecto a su principal competidor, InnoDB, lo que la convierte en la mejor opción cuando se trata de servidores con recursos limitados.


MyISAM vs InnoDB - Diferencias Ventajas Desventajas Inconvenientes

MyISAM

- Bloqueo de tabla
- Aumento del rendimiento si nuestra aplicación realiza un elevado número de consultas “Select”.
- Las tablas pueden llegar a dar problemas en la recuperación de datos.
- Permite hacer búsquedas full-text (se puede arreglar con Sphinx)
- Menor consumo memoria RAM

    Mayor velocidad en general a la hora de recuperar datos.
    Recomendable para aplicaciones en las que dominan las sentencias SELECT ante los INSERT / UPDATE.
    Ausencia de características de atomicidad ya que no tiene que hacer comprobaciones de la integridad referencial, ni bloquear las tablas para realizar las operaciones, esto nos lleva como los anteriores puntos a una mayor velocidad.

InnoDB

- Bloqueo de registros
- Soporte de transacciones
- Rendimiento
- Concurrencia
- Confiabilidad

 Nos permite tener las características ACID (Atomicity, Consistency, Isolation and Durability: Atomicidad, Consistencia, Aislamiento y Durabilidad en español), garantizando la integridad de nuestras tablas.

Integridad de datos, cuando los contenidos se modifican con sentencias INSERT, DELETE o UPDATE, la integridad de los datos almacenados puede perderse de muchas maneras diferentes.

InnoDB se recupera de errores o reinicios no esperados del sistema a partir de sus logs, mientras que MyISAM requiere una exploración, reparación y reconstrucción de índices de los datos de las tablas que aún no habían sido volcadas a disco.

Además es probable que si nuestra aplicación hace un uso elevado de INSERT y UPDATE notemos un aumento de rendimiento con respecto a MyISAM.

Explicación Bloqueo de tablas:

Por ejemplo, cada vez que vea un tema en SMF, esto ocurre:

Código
  1. UPDATE smf_topics
  2. SET numViews numViews = + 1
  3. DONDE = ID_TOPIC # # #
  4. LIMIT 1;

Si la tabla está bloqueada, tendrá que esperar a que ... lo que esté sucediendo hasta el final. Lo mismo ocurre con varias personas viendo varios temas a la vez. Tienen que esperar en fila para la tabla de temas que estén disponibles.

Esto no es cierto para InnoDB. Si dos personas ver el mismo tema, sí ... tendrán que esperar a la actualización numViews. Pero si ellos ven diferentes temas, es inmediata.
185  Programación / Bases de Datos / Consultas SQL para saber key Buffer en MyISAM y Buffer Pol en InnoDB en: 23 Mayo 2012, 16:34 pm
Tunning y optimización del fichero

Código:
/etc/my.cnf

¿Cómo puedo saber el  valor exacto y real que que ocupan mis tablas ya sean en MyISAM o InnoDB?

Para saber si usas tablas con el motor InnoDB y cuáles son:

Código
  1. SELECT table_schema, TABLE_NAME
  2. FROM INFORMATION_SCHEMA.TABLES
  3. WHERE engine = 'innodb';

Consulta para convertir una tabla a InnoDB

Código
  1. ALTER TABLE tblname
  2. ENGINE=InnoDB;

Consulta para convertir todas tus tablas InnoDB a MyISAM

Código
  1. SELECT CONCAT('ALTER TABLE ',table_schema,'.',TABLE_NAME,' engine=MyISAM;')
  2. FROM information_schema.TABLES
  3. WHERE engine = 'InnoDB';

Consulta para convertir todas tus tablas MyISAM a InnoDB

Código
  1. SELECT CONCAT('ALTER TABLE ',table_schema,'.',TABLE_NAME,' engine=InnoDB;')
  2. FROM information_schema.TABLES
  3. WHERE engine = 'MyISAM';


MyISAM key cache


Variable:
key_buffer_size =

Código
  1. SELECT CONCAT(ROUND(KBS/POWER(1024,
  2. IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.4999),
  3. SUBSTR(' KMG',IF(PowerOf1024<0,0,
  4. IF(PowerOf1024>3,0,PowerOf1024))+1,1))
  5. recommended_key_buffer_size FROM
  6. (SELECT LEAST(POWER(2,32),KBS1) KBS
  7. FROM (SELECT SUM(index_length) KBS1
  8. FROM information_schema.TABLES
  9. WHERE engine='MyISAM' AND
  10. table_schema NOT IN ('information_schema','mysql')) AA ) A,
  11. (SELECT 2 PowerOf1024) B;
  12.  

Ejemplo Resultado:
recommended_key_buffer_size
463M

    (SELECT 0 PowerOf1024) genera resultado en Bytes
    (SELECT 1 PowerOf1024) genera resultado en KB
    (SELECT 2 PowerOf1024) genera resultado en MB
    (SELECT 3 PowerOf1024) genera resultado en GB

Comando shell script:

asumiendo que
datadir=/var/lib/mysql

Código
  1. find /var/lib/mysql -name '*.MYI'|xargs du -shc

InnoDB Buffer Pol


innodb buffer pool

Variable
innodb_buffer_pool_size =

Código
  1. SELECT CONCAT(ROUND(KBS/POWER(1024,
  2. IF(PowerOf1024<0,0,IF(PowerOf1024>3,0,PowerOf1024)))+0.49999),
  3. SUBSTR(' KMG',IF(PowerOf1024<0,0,
  4. IF(PowerOf1024>3,0,PowerOf1024))+1,1)) recommended_innodb_buffer_pool_size
  5. FROM (SELECT SUM(data_length+index_length) KBS FROM information_schema.TABLES
  6. WHERE engine='InnoDB') A,
  7. (SELECT 2 PowerOf1024) B;
  8.  



En KB:

Código
  1. SELECT SUM(data_length+index_length)/POWER(1024,1) IBPSize_KB
  2. FROM information_schema.TABLES WHERE engine='InnoDB';

En MB:

Código
  1. SELECT SUM(data_length+index_length)/POWER(1024,2) IBPSize_MB
  2. FROM information_schema.TABLES WHERE engine='InnoDB';

En GB:

Código
  1. SELECT SUM(data_length+index_length)/POWER(1024,3) IBPSize_GB
  2. FROM information_schema.TABLES WHERE engine='InnoDB';


Más información y ejemplos:
http://wiki.elhacker.net/bases-de-datos/mysql/optimizacion
186  Foros Generales / Sugerencias y dudas sobre el Foro / Inscrustrar vídeos youtube (Mejoras) en: 22 Mayo 2012, 18:37 pm
A petición del usuario Graphixx:

http://foro.elhacker.net/php/grave_vulnerabilidad_php_en_modo_cgi-t361611.0.html;msg1747431#msg1747431

Se añade las nuevas urls de los vídeos de youtube para inscrutrar (embed) videos

Ahora si funciona el código de las nuevas urls:

Código:
[youtube=425,350]http://youtu.be/ZcUsR9DSSOk[/youtube]

Y el viejo también:

Código:
[youtube=425,350]http://www.youtube.com/watch?v=ZcUsR9DSSOk[/youtube]

También funciona con urls de youtube en https

La antigua expresión regular en PHP era:

Código
  1. $pattern = \'/http:\/\/.+v=(.+)(&.+)*/i\';

Ahora es un poquito más larga xD

Código
  1. $pattern = \'(http(?:s?)://(?:www\.)?youtu(?:be\.com/watch\?v=|\.be/)(\w*)(&(amp;)?[\w\?=]*)?)\';

Lo único que no sé si dejar un object o usar un iframe:

Código:
<object type="application/x-shockwave-flash" width="$2" height="$3" data="http://www.youtube.com/v/$1&ap=%2526fmt%3D18" allowScriptAccess="never"><param name="movie" value="http://www.youtube.com/v/$1&ap=%2526fmt%3D18"></param><param name="wmode" value="transparent"></param></object>

Código:
<iframe width="'.$2.'" height="'.$3.'" src="http://www.youtube.com/embed/'.$1.'" frameborder="0"></iframe>
187  Seguridad Informática / Nivel Web / SQL Injection Cheat Sheet en: 18 Mayo 2012, 19:14 pm
188  Programación / Bases de Datos / MySQL y SSD: Uso y Tuning en: 18 Mayo 2012, 12:59 pm
Mayo 2012:



En este seminario vamos a discutir Solid State Drives internos y cómo afectan a su rendimiento. Puntos de referencia a nivel de IO para SATA (Intel 320 SSD) y tarjetas PCI-E (FusionIO y Virident), será presentado para mostrar el rendimiento absoluto y dan una indicación del rendimiento por dólar. También vamos a discutir cómo se puede usar MySQL y el servidor Percona con SSD, que los parámetros de ajuste son los más importantes, y lo que el rendimiento se puede esperar en el uso real de producción.

Descargar Presentaciones:
http://www.percona.com/redir/files/presentations/WEBINAR-MySQL-SSD.pdf

Video (mejor que el de youtube)
http://www.percona.tv/percona-webinars/mysql-and-ssd-usage-and-tuning
189  Programación / PHP / Detectar si el navegador es un móvil smartphone en: 17 Mayo 2012, 17:39 pm
Ejemplos:

Código
  1. <?php
  2. $iphone = strpos($_SERVER['HTTP_USER_AGENT'],"iPhone");
  3. $android = strpos($_SERVER['HTTP_USER_AGENT'],"Android");
  4. $palmpre = strpos($_SERVER['HTTP_USER_AGENT'],"webOS");
  5. $berry = strpos($_SERVER['HTTP_USER_AGENT'],"BlackBerry");
  6. $ipod = strpos($_SERVER['HTTP_USER_AGENT'],"iPod");
  7.  
  8. if ($iphone || $android || $palmpre || $ipod || $berry == true)
  9. {
  10. header('Location: http://mobile.site.com/');
  11. //OR
  12. echo "<script>window.location='http://mobile.site.com'</script>";
  13. }
  14. ?>

Código
  1. $phones = array('iPhone', 'Android', 'BlackBerry');
  2.  
  3. if ( preg_match('/('.implode('|', $phones).')/i', $_SERVER['HTTP_USER_AGENT']) ){
  4. redirect
  5. }
  6.  


Código
  1. $mobile = 'http://mobile.mysite.com/';
  2.  
  3. if ((strstr($_SERVER['HTTP_USER_AGENT'], 'iPhone')) && empty($_COOKIE["mobilesitez"]) && $_SERVER['REQUEST_URI']=="/") {
  4. header("Location: " . $mobile);
  5. }
  6.  
  7. Code added to mobile page:
  8.  
  9. function set_cookie () {
  10. document.cookie = 'mobilesitez=mobilesitez; domain=.mysite.com;';
  11. window.location = 'http://www.mysite.com/'
  12. }
  13.  


Código
  1. <?php
  2. if(strstr($_SERVER['HTTP_USER_AGENT'],'iPhone') || strstr($_SERVER['HTTP_USER_AGENT'],'iPod'))
  3. {
  4.  header('Location: http://yoursite.com/iphone');
  5.  exit();
  6. }
  7. ?>


Código
  1. if( preg_match('/(up.browser|up.link|mmp|symbian|smartphone|midp|wap|webos|galaxy|phone|pocket|psp|treo|android|mobile|240x320|400X240|nitro|nokia|portalmmm|proxinet|blackberry|palm||series40|series60|s60|sonyericsson|e10i|samsung|nexus|htc|desire|ipod|itunes|vodafone|wap-|wapi|wapa|wapp|series40|series60|s60|sonyericsson)/i', $user_agent) ){
  2. //do something here for all mobile phones
  3. }


Código
  1. $mobile_agents = '!(tablet|pad|mobile|phone|symbian|android|ipod|ios|blackberry|webos)!i';
  2. if(preg_match($mobile_agents, $_SERVER['HTTP_USER_AGENT']))
  3. {
  4.    // Mobile!
  5. }

Código
  1. $mobile = false;
  2. if(isset($_SERVER['HTTP_USER_AGENT']))
  3. {
  4.    $mobile_agents = '!(tablet|pad|mobile|phone|symbian|android|ipod|ios|blackberry|webos)!i';
  5.    if(preg_match($mobile_agents, $_SERVER['HTTP_USER_AGENT']))
  6.    {
  7.        $mobile = true;
  8.    }
  9. }
190  Programación / PHP / Función comprobar si una ip es privada PHP en: 16 Mayo 2012, 12:20 pm
Código
  1. function ip_is_private($ip)
  2. {
  3.        $pri_addrs = array(
  4.                          '10.0.0.0|10.255.255.255',
  5.                          '172.16.0.0|172.31.255.255',
  6.                          '192.168.0.0|192.168.255.255',
  7.                          '169.254.0.0|169.254.255.255',
  8.                          '127.0.0.0|127.255.255.255'
  9.                         );
  10.  
  11.        $long_ip = ip2long($ip);
  12.        if($long_ip != -1) {
  13.  
  14.            foreach($pri_addrs AS $pri_addr)
  15.            {
  16.                list($start, $end) = explode('|', $pri_addr);
  17.  
  18.                 // IF IS PRIVATE
  19.                 if($long_ip >= ip2long($start) && $long_ip <= ip2long($end))
  20.                 return (TRUE);
  21.            }
  22.    }
  23.  
  24. return (FALSE);
  25. }


Código
  1. if ( ip_is_private ( $ip_address1 ) )
  2. {
  3.    printf ( "%s is from a private address range\n", $ip_address1 );
  4. }


Con PHP 5.2 o superior


Código
  1. <?php
  2. function is_private_ip($ip)
  3. {
  4.     return !filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_NO_PRIV_RANGE);
  5. }
  6. ?>

Código
  1. if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE)) {
  2.  // it's valid
  3. }

Citar
FILTER_VALIDATE_IP = validar una ip
FILTER_FLAG_IPV4 = validar una ip v4
FILTER_FLAG_NO_PRIV_RANGE = validar una ip rango privado
FILTER_FLAG_NO_RES_RANGE = validar una ip rango reservado
FILTER_FLAG_IPV6 = validar una ip v6

Ejemplo valdiar ip excluyendo ip's privadas y reservadas

Código
  1. if(filter_var($ip, FILTER_FLAG_NO_PRIV_RANGE | FILTER_FLAG_NO_RES_RANGE)) {
  2.  // it's valid
  3. }
Páginas: 1 ... 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 [19] 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 ... 36
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines