Comunidad de diseño web y desarrollo en internet online

Problema con include

Citar            
MensajeEscrito el 02 Oct 2010 04:07 am
Hola a todos y muchisimas gracias por la ayuda que puedan darme.

Tengo un programa para salir de un area reservada usando sesiones.

Coloque una opcion en la pagina del area llamada "salir " para salir si asi lo deseo.

Esta opcion llama a otra pagina que tiene dos opciones que manejo con switch.

switch ($_GET['opcion'])
{
case 'salida_1':
include("http://xxx.com/area/menuback.php");
break;
case 'salida_2':
include("http://xxx.com/area/logout.php");
break;
}
?>

el que sale del todo es logout.php, que tiene:

session_cache_limiter('nocache,private');
session_name('preocupada');
session_start();
if($_SESSION['validado']!='SI'){
header("location: http://www.xxx.com/direct22.php");
exit();
} else {
//session_cache_limiter('nocache,private');
session_unset();
session_destroy();

}
?>

el problema es que al llamar a la opcion 2 logout.php me salen los mensajes:

Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/xxx2/public_html/salir.php on line 12
Warning: include(http://www.xxx.com/p_app/logout.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/xxx2/public_html/salir.php on line 12
Warning: include() [function.include]: Failed opening 'http://www.xxx.com/p_app/logout.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/xxx2/public_html/salir.php on line 12

y no entiendo que sucede. pueden explicarme que significan estas lineas?

Nuevamente, Gracias mil por la ayuda

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 02 Oct 2010 04:42 am
que dice la linea 12 en el php?.

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 02 Oct 2010 06:22 am
A ver... Estas intentando incluir un archivo de otro servidor, eso funciona cuando allow_url_open esta habilitado en la configuración de php. Que básicamente es lo que te dice el primer warning, el segundo te dice que no pudo incluir el archivo, el tercero es que no se encontro el archivo en el include_path de php y por supuesto no lo pudo incluir.


Referencias:


Advertencia: Debes tener en cuenta que no incluiras el codigo fuente del archivo php si no se toman las medidas pertinentes. Muy problamente incluiras es el php ya procesado, por ejemplo: el html.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Oct 2010 03:53 pm
Muchas Gracias por responder!
Veamos:

1) Digital Rosario: La linea 12 es la que llama al archivo logout:
include("http://www.xxx.com/p_app/logout.php");


2) Maikel: Me intriga lo que comentas: "Estas intentando incluir un archivo de otro servidor". Mira, la pregunta es cual seria el otro servidor, si yo solo levanto desde mi casa los archivos a la carpeta xx2. Lo que si puedo decir es que la empresa realizo hace 2 semanas la actualizacion del espacio del servidor y aumento los aplicaciones de Fantastico.
Tambien recuerdo que le pregunte antes de empezar con que version (oficial) de php trabajaban y me dijo que la ultima; sin embargo su php.ini tenia el register_globals en on.
Yo creo que alli recien actualizo la version, al consultarle, me dio acceso al archivo php.ini y alli tuve que verificar uno por uno los parametros que necesitaba.

Antes de la actualizacion mi aplicacion salia y entraba sin dificultades. Yo tambien crei entender (soy novata en php) que la ubicacion no era encontrada pero no se a que atribuirlo porque como te digo yo acceso al area www del servidor de XXX y alli he creado mis carpetas y levantado los html de las pag web y los phps.

Tendra que ver esa actualizacion con el cambio de ubicacion que mencionas? Yo revise los parametros de incude_path
include_path = ".:/usr/lib/php:/usr/local/lib/php";
y de extension dir
extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20060613" y pareciera que no hay modificaciones. Aunque antes de esto yo no tenia acceso al php.ini verdadero sino a un reporte.
voy a leer acerca de las sintaxis que me indicas
Muchisimas gracias a ambos y si pueden ayudarme con esto les agradecere infinito. :)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 02 Oct 2010 04:19 pm
A propo, que significa wrapper?
en el dic significa envoltura, :(

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 02 Oct 2010 05:03 pm
LO ENCONTRE EN PHP.INI!
---------------
; Fopen wrappers ;
;;;;;;;;;;;;;;;;;;

; Whether to allow the treatment of URLs (like http:// or ftp://) as files.
allow_url_fopen = On
allow_url_include = Off
------------------------------
Por favor, el problema se resuelve, cambiando los valores seteados por defecto? No habria ningun problema extra?

Gracias mil de antemano y disculpen tanto rollo pero definitivamente asi aprendo ^^

Saludos

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 02 Oct 2010 05:15 pm
los include no necesitas poner el "http://www.xxx.com/", por eso digo que estas intentando incluir el archivo de otro servidor. Es decir, esa linea es parecida a esta:

Código PHP :

include("http://www.cristalab.com/index.php");


Aunque la previa linea esté ejecutándose aquí en Cristalab, allow_url_include y allow_url_fopen deben estar ambas en On.

saludos

Por Maikel

BOFH

5575 de clabLevel

22 tutoriales
5 articulos

Genero:Masculino   Team Cristalab

Claber de baja indefinida

firefox
Citar            
MensajeEscrito el 02 Oct 2010 06:33 pm
Muchisimas Gracias Maikel!!!

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 02 Oct 2010 11:11 pm
yo te recomendaria dejarlo como esta y utilizar el get_file_contents u otro parecido o si vas a activar la bandera entonces ten cuidado con lo que colocas en el include porque quedas en riesgo de RFI = Remote File Including o un XSS = Cross Site Scripting

saludos

PD : Ambos son atakes hack

Por talcual

686 de clabLevel



 

Colombia

firefox
Citar            
MensajeEscrito el 03 Oct 2010 12:15 am
Muchas Gracias talcual por tu sugerencia. La verdad es que lei muchos articulos sobre los ataques hack y por ello pense que para de cierta manera evitar mostrar la url adonde dirige la salida, podria usar el array get y de esa manera, "enmascarar" el "http://www...." que sale en la barra de direcciones. este archivo, que lee la opcion recogida esta en la raiz del area ( en www) y no en el area "app" (subcarpeta) donde estan todos los phps comprometidos.

Al comienzo funcionaba bien pero cuando hicieron la ampliacion y "actualizaron" versiones empezo a fallar y yo ya no podia entender bien que significaba el mensaje en pantalla.

Esto significa que debo pensar bien antes de decidir. Muchas gracias nuevamente a todos :)

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8
Citar            
MensajeEscrito el 03 Oct 2010 03:02 am
Estimados amigos del foro Cristalab, ya esta corriendo mi aplicacion! :wink:

Asi que pense que derepente le pueda servir a otro mi problema, asi que intentare resumir el asunto:

1) El mensaje de error: Si aparece un mensaje de error como el siguiente:

Warning: include() [function.include]: URL file-access is disabled in the server configuration in /home/xxx2/public_html/salir.php on line 12
Warning: include(http://www.xxx.com/p_app/logout.php) [function.include]: failed to open stream: no suitable wrapper could be found in /home/xxx2/public_html/salir.php on line 12
Warning: include() [function.include]: Failed opening 'http://www.xxx.com/p_app/logout.php' for inclusion (include_path='.:/usr/lib/php:/usr/local/lib/php') in /home/xxx2/public_html/salir.php on line 12

quiere decir que el php piensa que al haberse colocado en el codigo la instruccion: include("http://www.xxx.com/p_app/logout.php") estas haciendo una llamada a un servidor "fuera" de tu area a otra cuya url es http://www.xxx.com.

2) Si la version de php es superior a 4.3.0 entonces la directiva allow_url_fopen esta activa y las instrucciones include y require asi como include_once, require_once no soportan que se escriba la url completa porque la toman como remota.

3) Frente al problema tienes tres opciones:
a) modificar en el php.ini los valores asignados a las directivas:
allow_url_fopen = On
allow_url_include = Off (en mi server estaban configuradas asi ojo!)
Entonces podria activar allow_url_include (hacerlo On)
b) Quitar la direccion absoluta de la url y trabajar con direccion relativa. Ejm: include("p_app/logout");
c) Utilizar otra instruccion como get_file_contents y tratar de capturar aquella parte de mi archivo que tiene el valor de la variable salto.

4) Recuerden que la prevencion unanime de los foreros es ser cuidadoso al habilitar estas directivas, hay articulos como http://jhyx4life.blogspot.com/2009/11/hardening-php-desde-phpini.html que sugieren deshabilitar ambas directivas. (Auxilio!)

5) Asi que opte por probar usando direcciones relativas, es decir quite los http://www.xx.com en todas las paginas tanto en include como en require y SOLUCIONE EL PROBLEMA.

Bueno es todo creo. Gracias por ayudarme :D

Por CLAnonimo

Claber

600 de clabLevel

5 tutoriales
1 articulo

 

Este es un usuario anónimo genérico para las cuentas borradas o perdidas.

msie8

 

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