Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => PHP => Mensaje iniciado por: Diabliyo en 29 Septiembre 2010, 01:57 AM

Título: browscap.ini existe forma de establecerlo sin php.ini ?
Publicado por: Diabliyo en 29 Septiembre 2010, 01:57 AM
Buenas.

Tengo un servicio de hosting con los de http://www.hosting24.com/ (bueno es de un amigo), y estuve intentando instalar una aplicación en PHP que le pase, pero esta plataforma hace uso de browscap.ini con la finalidad de obtener información del navegador y crear una estadística de accesos (log). Pero desgraciadamente los de Soporte me dicen que no se puede personalizar el PHP.INI del hosting y que tampoco se permite cargar paralelamente (alternamente) un PHP.INI personalizado.

Cada vez que acceso a la plataforma, me marca:
Warning: get_browser() [function.get-browser]: browscap ini directive not set in /home/elsitio/public_html/modulos/base.php
on line 762


Buscando solucion, verifique las variables con phpinfo() y browscap (variable de entorno) esta configurada a "no value", de modo que utilize la funcion de ini_set() para establecer el valor, asi:

Código (php) [Seleccionar]
<?php
echo 'Mi Directorio: 'getcwd(). '<br>
browscap value= '
ini_get("browscap");

# intentamos meter valor
$newgetcwd().'/php_browscap.ini';
ini_set"broswcap",  $new );

echo 
'<p>browscap Var= 'ini_get("browscap");

echo 
'<p>Todas las Variables:<br>';
print_r(ini_get_all());
?>


Pero es inútil :(, la variable "browscap" sigue intacta (no value).

Alguna idea ?
Título: Re: browscap.ini existe forma de establecerlo sin php.ini ?
Publicado por: ~ Yoya ~ en 29 Septiembre 2010, 19:55 PM
Necesitas activar la directiva browscap (http://www.php.net/manual/es/misc.configuration.php#ini.browscap)(Viene off por defecto) del php.ini.

Cita de: php.netEstos modos determinan cuándo y dónde se debe o no asignar una directiva PHP, y cada directiva del manual hace referencia a uno de estos modos. Por ejemplo, algunos ajustes pueden establecerse en scripts PHP usando ini_set(), mientras que otros requieren hacerlo en php.ini o en httpd.conf.

(http://img338.imageshack.us/img338/2818/sdsh.png)

No puedes establecer usando la función ini_set() para establecer el valor de la directiva browscap (http://www.php.net/manual/es/misc.configuration.php#ini.browscap), tendrías que editarlo directamente en el php.ini...

Yo por eso siempre trato de hacer source que no necesiten muchos requisitos para su uso. Lo que puedes hacer es crear una clase que realice lo que deseas hacer y listo...

Referencias:
Listado directivas de php.ini (http://php.net/manual/es/ini.list.php)
Dónde realizar un ajuste de configuración (http://www.php.net/manual/es/configuration.changes.modes.php)


Saludos.
Título: Re: browscap.ini existe forma de establecerlo sin php.ini ?
Publicado por: Diabliyo en 29 Septiembre 2010, 22:58 PM
En conclusion, me jodo :(....

Ya tuve en mente hacerme un codigo para detectar el browser, pero tanto los codigos de la red como el proceso es a inminentemente complicado, debido a que para tener una funcion lo suficientemente competente, es necesario tener una buena BDD de los navegadores, esto equivaldria a mucho trabajo :(, asumiendo que no solo tendrias PCs, sino navegadores de moviles :S.... Unido a esto aparte de obtener el navegador es necesario el Idioma, Tipo de Sistema (Linux, Windows, MAC), Modelo (Ubuntu/Gentoo/etc.., Xp/Vista/7, 10.1/.2/.3/.4).

Ademas observando los navegadores Internet Explorer, la cosa la ponen dificil, por la falta de estandarizacion :S.

Me quedo con browscap,

Saludos !
Título: Re: browscap.ini existe forma de establecerlo sin php.ini ?
Publicado por: ~ Yoya ~ en 29 Septiembre 2010, 23:17 PM
Naa no es necesario una BD que contenga la versión de navegadores y todo eso.

Si te fijas, los User Agent, generalmente tienen el mismo tipo de estructura. Lo que hace la mayoría es verificar que los SO, Browsers que tienen almacenado en una BD o un array, lo comparan si existen en el User Agent. Entonce este tiende a fallar ya que para que funcione correctamente es necesario tener una lista bastante actualizada.

La mejor opción es usar Expresiones Regulares para parsear el User Agent, pero debes ser muy cuidadoso creandola para que funcione correctamente...