PDA

Ver la Versión Completa : Equivalente session_unregister() de php 4, pero en php 6


Faust
06-09-2008, 00:19:51
Saludos compañeros foreros:

En mi chamba me pidieron cambiar de servidor una página hecha en php para la versión 4, ahora el nuevo servidor tiene la versión 6 pero no me reconoce la función session_unregister(), no sé casi nada de php, por favor échenme una mano porfa, les pego el error que me da:

Fatal error: Call to undefined function session_unregister() in C:\AppServ\www\sistemas\index.php on line 5

Gracias por su apoyo.

Buscando en algunas páginas web encontré session_unset(), no sé si sea lo ideal, pero ya pude entrar a la página web, pero no me reconoce muchas de las funciones que utilizan las sesiones, p. ej. session_is_registered()

Faust
08-09-2008, 14:58:44
Creo que quizás es algo de la configuración del php de mi servidor... seguiré buscando...

dec
08-09-2008, 15:12:21
Hola,

Esa función existe (http://es2.php.net/manual/es/function.session-unregister.php), desde luego, en PHP 4 y 5, empero, tal vez no exista en PHP 6... la verdad es que no lo sé. ¿Seguro que estás usando PHP 6? Lo digo porque hasta donde yo llego la última versión de PHP es la 5, y la 6 aún no está disponible. En todo caso, tal vez puedas utilizar la función "unset()" (http://es2.php.net/manual/es/function.unset.php), echa un vistazo a ver.

Faust
08-09-2008, 17:24:35
Déjame checar lo de la versión de php.

Buscando por ahí encontré esto (http://www.webestilo.com/php/articulo.phtml?art=38) sobre register_globals, ya modifiqué php.ini que se encuentra en el directorio c:\windows, cambiándolo a On pero no veo la diferencia...

mmm....

Seguiré buscando, porque esto funcionaba bien en la web, pero en intranet no...

dec
25-09-2008, 15:59:01
Hola,

Ojo, porque no se recomienda usar la opción "register_globals": viene "deshabilitada" de forma predeterminada, y acaso sea una característica que tienda a desaparecer. Tiene que ver con ciertos posibles problemas de seguridad. Pero, además, es que me parece que una cosa no tiene que ver con la otra... ¿no? :rolleyes:

roman
25-09-2008, 17:17:49
La verdad es que yo ni siquiera sé de dónde descargar ahora mismo el PHP 6, pero parece que esa versión definitivamente abolirá el register_globals, al menos así se menciona en el manual actual


Warning

This feature has been DEPRECATED and REMOVED as of PHP 6.0.0. Relying on this feature is highly discouraged.


En las versiones actuales, la directiva register_globals, también afecta a la forma en que se accede a las variables de sesión:


Caution

If you want your script to work regardless of register_globals, you need to instead use the $_SESSION array as $_SESSION entries are automatically registered. If your script uses session_register(), it will not work in environments where the PHP directive register_globals is disabled.


Por tanto, al desaparecer la directiva, también desaparecen las funciones mencionadas.

// Saludos

Faust
25-09-2008, 17:26:18
La versión 6 de PHP viene con Appserv (http://www.appservnetwork.com/index.php?newlang=spanish) y dice ser la v. PHP 6.0.0-dev pero aún así descargué la versión 5.2.6 y la configuré para usarla con Appserv, pero el error es el mismo... estoy haciendo pruebas porque hay que subir la página a un sitio con la versión 5.2.5 de PHP, por lo que aún siguen sin funcionar las funciones para el manejo de sesiones, ya eché un ojo a php.ini de la v. 5.2.6, logré que funcionaran aplicaciones creadas en Adobe Flex, pero el manejo de sesiones no funciona aunque esté seteada a on register_globals mmm... seguiré investigando.

roman
25-09-2008, 17:33:28
A ver. Esas funciones no deberían faltar a menos que se trabaje con alguna compilación extraña de PHP. Pero no te compliques la vida. Definitivamente no debes usarlas, estén o no presentes. Las sesiones se manejan así:


// inicio el manejo de sesiones
session_start();

// "registro" la variable de sesión usuario con el valor 'obama'
$_SESSION['usuario'] = 'obama';

// muestro el valor de la variable de sesión password
echo $_SESSION['password'];


Esos es todo. Nunca tendrás una variable de sesión global $usuario o $password, de eso se trata el deshabilitar el register_globals. Todo es através de arreglos.

// Saludos

Faust
25-09-2008, 19:22:13
Esto ya lo solucioné instalando Appserv


AppServ 2.5.10

Apache 2.2.8
PHP 5.2.6
MySQL 5.0.51b
phpMyAdmin-2.10.3

Ya no tuve que hacer ningún tipo de modificación ni al código de la página ni a php.ini Todo funcionó correctamente.

Gracias a todos por su ayuda, de todas maneras cuando nuestro hosting cambie la versión de php ya les pediré alguna ayudita.