|
|
 |
CapÃtulo 62. Preguntas Varias
Puede que existan algunas preguntas que no podemos colocar en
otras categorÃas. Este es el lugar en donde puede
encontrarlas.
- 1.
¿Cómo puedo manipular los manuales comprimidos
mediante bz2 en Windows?
- 2.
¿Qué significa un signo & al lado de un
argumento en la declaración de una función, como
p.ej. asort()?
- 3.
¿Cómo manejo el parámetro
register_globals?
1.
¿Cómo puedo manipular los manuales comprimidos
mediante bz2 en Windows?
Si no cuenta con una herramienta de archivación que pueda
manejar archivos bz2,
descargue la herramienta de
lÃnea de comandos de RedHat (por favor refiérase a
la inforamción presentada más adelante).
Si no desea usar una herramienta de lÃnea de comandos,
puede probar herramientas gratuitas como Stuffit Expander, UltimateZip, 7-Zip, o Quick Zip. Si dispone de
herramientas como WinRAR o
Power Archiver, puede
descomprimir fácilmente archivos bz2 con ellas. Si usa
Total Commander (anteriormente Windows Commander), un
módulo adicional para ese programa se encuentra
disponible de forma gratuita desde el sitio de Total Commander.
La herramienta bzip2 de lÃnea de comandos por Redhat:
Los usuarios de Win2k Sp2 deben obtener la versión
más reciente, 1.0.2, todos los demás usuarios de
Windows deben obtener la versión 1.00. Después de
la descarga, renombre el ejecutable a bzip2.exe. Para mayor
conveniencia, colóquelo en un directorio que sea parte de
sus rutas predeterminadas, p.ej. C:\Windows, en donde C
representa la unidad en donde se encuentra su instalación
de windows.
Nota: lang representa su lenguaje, y x el formato deseado, p.ej:
pdf. Para descomprimir el archivo php_manual_lang.x.bz2 siga
las siguientes instrucciones:
abra una ventana con el intérprete de
comandos
cambie de directorio hacia la carpeta en donde
almacenó el archivo php_manual_lang.x.bz2 descargado
invoque bzip2 -d php_manual_lang.x.bz2, extrayendo de este
modo php_manual_lang.x en la misma carpeta
En caso de que haya descargado el archivo
php_manual_lang.tar.bz2 con varios archivos html en su interior,
el procedimiento es el mismo. La única diferencia es que
recibe un archivo php_manual_lang.tar. Se conoce que el formato
tar es tratado por la mayorÃa de archivadores en Windows,
como por ejemplo WinZip.
2.
¿Qué significa un signo & al lado de un
argumento en la declaración de una función, como
p.ej. asort()?
Quiere decir que el argumento es pasado por referencia
y es probable que la función modifique el argumento de
acuerdo con la documentación. Sólo puede pasar
variables de este modo y no necesita pasarlas con el signo &
en la llamada de la función (tal cosa es considerada
obsoleta).
3.
¿Cómo manejo el parámetro
register_globals?
Para información sobre las implicaciones de seguridad de
register_globals, lea el capÃtulo de
seguridad sobre el Uso de
register_globals.
Es recomendable usar superglobales,
en lugar de depender en la activación de
register_globals.
Si se encuentra en un servidor compartido con
register_globals desactivado y necesita usar
aplicaciones antiguas, que requieren que esta opción
esté activada, o se encuentra en algún servidor de
hospedaje en donde esta caracterÃstica está
habilitada, pero quisiera eliminar los riesgos de seguridad,
puede que necesite emular el valor opuesto en PHP. Siempre es
buena idea preguntar primero si es posible cambiar la
opción de alguna forma en la configuración de PHP,
pero si no es posible, entonces puede usar estos segmentos de
compatibilidad.
Ejemplo 62-1. Emulación de Register Globals
Esto emula el comportamiento de register_globals On.
|
<?php
if (!ini_get('register_globals')) {
$superglobales = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobales, $_SESSION);
}
foreach ($superglobales as $superglobal) {
extract($superglobal, EXTR_SKIP);
}
}
?>
|
Esto emula register_globals Off. Tenga en cuenta que este
código debe ser llamado al comienzo absoluto de su
script.
|
<?php
function retirar_registros_GLOBALS()
{
if (!ini_get('register_globals')) {
return;
}
if (isset($_REQUEST['GLOBALS']) || isset($_FILES['GLOBALS'])) {
die('Se ha detectado un intento de sobreescritura en GLOBALS');
}
$noEliminar = array('GLOBALS', '_GET',
'_POST', '_COOKIE',
'_REQUEST', '_SERVER',
'_ENV', '_FILES');
$entrada = array_merge($_GET, $_POST,
$_COOKIE, $_SERVER,
$_ENV, $_FILES,
isset($_SESSION) && is_array($_SESSION) ? $_SESSION : array());
foreach ($entrada as $c => $v) {
if (!in_array($c, $noEliminar) && isset($GLOBALS[$c])) {
unset($GLOBALS[$c]);
}
}
}
retirar_registros_GLOBALS();
?>
|
|
add a note
User Contributed Notes
Preguntas Varias
19-Jul-2005 09:08
using .htaccess file to disable register globals (register_globals)
The syntax for setting an option is:
php_value name value
php_flag name on or off
Example:
php_flag register_globals off
php_value arg_separator.output &
The example turns off register_globals and sets the value of arg_separator.output to & which is preferred rather than the default &.
Note: you can also set boolean options with the php_value directive, the string will be converted to boolean before assignment.
you can also use .htaccess to turn magic quotes on or off.
Search php.net and you'll find it
markus
18-Jun-2005 03:34
Considering the comment below. I think there's a way to avoid that "problem":
<?php
list($msec, $sec) = explode(' ', microtime());
$starttime = ((float)$msec + (float)$sec);
if( (bool)@ini_get('register_globals') )
{
$superglobals = array($_ENV, $_GET, $_POST, $_COOKIE, $_FILES, $_SERVER);
if( isset($_SESSION) )
{
array_unshift($superglobals, $_SESSION);
}
$knownglobals = array(
'_ENV', 'HTTP_ENV_VARS',
'_GET', 'HTTP_GET_VARS',
'_POST', 'HTTP_POST_VARS',
'_COOKIE', 'HTTP_COOKIE_VARS',
'_FILES', 'HTTP_FILES_VARS',
'_SERVER', 'HTTP_SERVER_VARS',
'_SESSION', 'HTTP_SESSION_VARS',
'_REQUEST',
'superglobals',
'knownglobals',
'superglobal',
'global',
'void',
'starttime',
);
foreach( $superglobals as $superglobal )
{
foreach( $superglobal as $global => $void )
{
if( !in_array($global, $knownglobals) )
{
unset($GLOBALS[$global]);
}
}
}
}
?>
Note the stuff related to the $_SESSION array depends on whether the PHP session has been started or not. You might want to call session_start() before this point (or set session.auto_start ON).
HTH+ :)
php at REMOVEMEkennel17 dot co dot uk
12-Apr-2005 08:22
Regarding simulating register_globals = off, note that it is impossible to adequately prevent $_SESSION variables from being globalised, as the array (and thus the globals) are created on a call to session_start(). You would therefore have to 'undo' this when you start a session as using it at the start of your script will have no effect.
To avoid potential problems, use a prefix that is unique for all session variables (e.g. 'SESS_'), and only access them via the $_SESSION array. The prefix ensures that you don't have a naming clash (and therefore a security risk) with any non-session globals.
| |
| | Citas célebres | Para comprender lo guapa que pudo ser una anciana, no basta con mirar, sino que hay que traducir cada rasgo. Marcel Proust Escritor francés (1871-1922) | | Citas en tu mail | | ©Contenidos Gratis |
| Chiste de... Relaciones laborales | | Vagos | Un tío va a la oficina del paro y le dice al de la ventanilla:
- Uahhhhhhhhh! (esto es un bostezo) Uaaaaaaaa, Buenas (ahora uno se empieza a estirar como si se acabara de levantar) Uaaaaaaa taaaaaardes.
- ¿Y con esa actitud viene usted a buscar trabajo?
- No, si no es para mí, es para mi heeeeermano que esta acostado. | | Chistes en tu mail | | ©ContenidosGratis |
| Inicio | Acción | Estrategia | Palabras | Puzzles | Solitarios | Foro Trucos |  | Cake Mania Jugadores: 6835 Categoría del juego: Acción Objetivo del juego: Ayuda a Jill a recuperar la pastelería de su abuela llevando su propia pastelería; consigue clientes y gana dinero. |
|  | Rainbow Web Jugadores: 2199 Categoría del juego: Puzzles Objetivo del juego: Rompe un pegajoso hechizo y salva un reino de fantasía en Rainbow Web. Tendrás toneladas de diversión mientras juegas a este mágico desafío para la mente. |
|  | Mahjongg Fortuna Jugadores: 12462 Categoría del juego: Solitarios Objetivo del juego: Velocidad y habilidad mental son las armas más importantes en esta versión de un antiguo juego asiático. Despeja el tablero lo antes posible haciendo clic en las fichas iguales y gánate la fama eterna de la puntuación más alta. |
|  | Chainz 2 Jugadores: 6955 Categoría del juego: Puzzles Objetivo del juego: Entra en el mundo de las combinaciones con Chainz 2: Relinked, emocionante secuela del exitazo del año pasado, Chainz. Gira eslabones y crea combinaciones de 3 ó más. |
|  | Delicious Jugadores: 4405 Categoría del juego: Acción Objetivo del juego: ¿Eres un as de la multitarea? ¿Quieres que tus clientes estén contentos? ¡Pues Delicious es tu juego! Sacia el apetito de los clientes y tenlos contentos; ¡no te arriesgues! |
|  | Bookworm Jugadores: 4568 Categoría del juego: Palabras Objetivo del juego: Junta las letras para formar palabras. ¡Las palabras más largas valen más puntos! |
|  | Zuma Jugadores: 4976 Categoría del juego: Acción Objetivo del juego: Controla el ídolo de la rana de piedra de los antiguos Zuma en este intrigante enigma de acción. ¡Dispara bolas para formar conjuntos de tres, pero si dejas que lleguen a la calavera dorada morirás! |
|  | Jewel of Atlantis Jugadores: 3798 Categoría del juego: Puzzles Objetivo del juego: Descubre la ciudad hundida de la Atlántida y busca valiosos tesoros. Viaja más allá de las profundidades del mar y vive trepidantes aventuras en Jewel of Atlantis. |
|  | Jewel Quest Jugadores: 3727 Categoría del juego: Puzzles Objetivo del juego: Convierte la arena de la antigua selva en oro tan rápido como puedas juntando grupos de 3 elementos. ¡Los grupos más grandes valen más puntos! |
|  | Bejeweled 2 Jugadores: 3659 Categoría del juego: Puzzles Objetivo del juego: Con cuatro modos de juego únicos y fascinantes, nuevas piezas de juego explosivas e imponentes fondos planetarios, Bejeweled 2 es mucho más adictivo que nunca. |
|
|