Foros del Web » Creando para Internet » Sistemas de gestión de contenidos » Joomla »

Joomla, PHP, include(), sesiones

Estas en el tema de Joomla, PHP, include(), sesiones en el foro de Joomla en Foros del Web. Hola a todos. Bien primero comienzo por explicar que estoy tratando de insertar información en la tabla jos_content de joomla, con el siguiente script que ...
  #1 (permalink)  
Antiguo 27/02/2012, 20:02
Avatar de raptor00  
Fecha de Ingreso: febrero-2012
Ubicación: México
Mensajes: 11
Antigüedad: 12 años, 9 meses
Puntos: 0
Pregunta Joomla, PHP, include(), sesiones

Hola a todos.

Bien primero comienzo por explicar que estoy tratando de insertar información en la tabla jos_content de joomla, con el siguiente script que se llama inserta.php

Código PHP:
// Le decimos que estamos en Joomla
define('_JEXEC'1);

// Definimos la constante de directorio actual y el separador de directorios (windows server: \ y linux server: /)
define('JPATH_BASE'dirname(__FILE__));
define('DS'DIRECTORY_SEPARATOR);

// Cargamos los ficheros de framework de Joomla 1.5, y las definiciones de constantes (IMPORTANTE AMBAS LÍNEAS)
require_once(JPATH_BASE DS 'includes' DS 'defines.php');
require_once(
JPATH_BASE DS 'includes' DS 'framework.php');

// Iniciamos nuestra aplicación (site: frontend)
$mainframe = &JFactory::getApplication('site');

$title $titulo_noticia;
$alias $titulo_noticia;
$introtext $cuerpo_noticia;
$fulltext $cuerpo_noticia;
$state 1;
$sectionid 6;
$catid 36;
$created date("Y-m-d h:i:s");
$created_by 62;

$object->title $title;
$object->alias $alias;
$object->introtext $introtext;
$object->fulltext $fulltext ;
$object->state $state;
$object->sectionid $sectionid;
$object->catid $catid;
$object->created $created;
$object->created_by $created_by;

$table '#__content';

$db = &JFactory::getDBO();

$db->insertObject($table$object'id');

echo 
$object->id;

echo 
" Se insertó noticia correctamente. <br>"
esto funciona de maravillas.

Ahora bien, en otro archivo tengo una función que me ejecuta según el valor de una variable varios include(), cada uno de estos include() me llama a un archivo de estos que me inserta los datos en la tabla de joomla.
Pero como esta función esta dentro de un ciclo puede suceder que se ejecuten uno o todos los inlcude(), cada include() me inserta datos en un sitio web diferente.
Código PHP:
switch($myvariable)
            {
               case 
1:
                  include(
"../sitioweb1/inserta.php");
                  break;
               case 
2:
                  include(
"../sitioweb2/inserta.php");                 
                   break;
               case 
3:
                  include(
"../sitioweb3/inserta.php");
                  break;
            } 
El problema esta dado que al pasar la primera vez por ejemplo: por el case1 el inserta bien los datos, pero cuando la variable toma el valor 2 al insertar me inserta en el primer sitio no en el segundo, asi sucede con el valor 3, se inserta 3 veces en el primer sitio, es como si se quedara alguna sesión abierta en cache del primero.
Esto sucede solo con las rutas relativas.

Si le pongo rutas absolutas funciona bien aquí lo muestro:
Código PHP:
switch($myvariable)
            {
               case 
1:
                  include(
"http://misitioweb1.com/inserta.php");
                  break;
               case 
2:
                   include(
"http://misitioweb2.com/inserta.php"); 
                   break;
               case 
3:
                  include(
"http://misitioweb3.com/inserta.php");
                  break;
            } 
Pero esto es un problema porque hay que activar en el servidor la opción que permita que el include() ejecute direcciones absolutas y esto no es aconsejable.

Mi pregunta es: ¿como puedo solucionar este problema?
  #2 (permalink)  
Antiguo 27/02/2012, 21:10
Avatar de gildus  
Fecha de Ingreso: agosto-2003
Mensajes: 1.495
Antigüedad: 21 años, 4 meses
Puntos: 105
Respuesta: Joomla, PHP, include(), sesiones

Holas,

Haz intentado con:
Código PHP:
Ver original
  1. realpath(dirname(__FILE__).'/../../../').'/';
?

Saludos
__________________
.: Gildus :.
  #3 (permalink)  
Antiguo 28/02/2012, 09:33
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 1
Pregunta Respuesta: Joomla, PHP, include(), sesiones

Hola gildus,

esa funcion lo que hace es devolverme la ruta del localserver, eso no es lo que necesito, yo cargo los archivos bien, la ruta qeu yo pongo esta bien,

el lio es que estoy tratando de insertar datos en tres sitios web diferentes, pero que están en el mismo server,

y el script que realiza esto se encuentra dentro de uno de estos sitios, enel primero, el problema es con la unit inserta.php que se encuentra en cada sitio, que al ejecutarse la primera inserta bien en el sitio1 pero las demas cuando se ejecutan pues me insertan en el primero tambien en vez de insertar los datos en sus respectivos sitios.

espero me entiendas, y gracias por responder.
  #4 (permalink)  
Antiguo 29/02/2012, 23:52
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 1
Pregunta Respuesta: Joomla, PHP, include(), sesiones

Utilice la siguiente ruta en los include()
Código PHP:
include $_SERVER['DOCUMENT_ROOT'] .'../''website/inserta.php'
y me devolvió el siguiente error:
Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\website\insertaphp:64) in C:\xampp\htdocs\website\libraries\joomla\session\s ession.php on line 423

creo el lio esta en el header que tienen los archivos inserta.php
Código PHP:
define('_JEXEC'1);
define('JPATH_BASE'dirname(__FILE__));
define('DS'DIRECTORY_SEPARATOR);
require_once(
JPATH_BASE DS 'includes' DS 'defines.php');
require_once(
JPATH_BASE DS 'includes' DS 'framework.php');
$mainframe = &JFactory::getApplication('site'); 
el primero carga bien pero ya el segundo ni el tercero se envian, dan el error, y lo que hace es insertar los datos en el priemro nada mas.

por favor alguien sabe como solucionar esto?????
  #5 (permalink)  
Antiguo 01/03/2012, 19:24
 
Fecha de Ingreso: noviembre-2011
Mensajes: 8
Antigüedad: 13 años
Puntos: 1
Pregunta Respuesta: Joomla, PHP, include(), sesiones

Hola a todos de nuevo, he realizado varios cambios en el código, por ejemplo la ruta del include la puse así:
include("C:\\xampp\htdocs\sitioweb\inserta.php");

es una ruta absoluta a nivel de directorios, le hice un echo a la variable del switch para ver cuando cambiara de valor y si pasaba por la ruta y me devuelve el siguiente error:

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at C:\xampp\htdocs\sitioweb\inserta.php:65) in C:\xampp\htdocs\sitioweb\libraries\joomla\session\ session.php on line 423

Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at C:\xampp\htdocs\sitioweb\inserta.php:65) in C:\xampp\htdocs\sitioweb\libraries\joomla\session\ session.php on line 423

Warning: Cannot modify header information - headers already sent by (output started at C:\xampp\htdocs\sitioweb\inserta.php:65) in C:\xampp\htdocs\sitioweb\libraries\joomla\session\ session.php on line 426


estuve buscando en la red y todos hablan de espacios y caracteres especiales y mis script no tienen nada de eso, el problema me parece a mi que esta en el header que tienen los archivos inserta.php que se envian 3 veces, alguien sabe como solucionar esto???

este es el header que tiene cada archivo inserta.php
Código:
define('_JEXEC', 1);
define('JPATH_BASE', dirname(__FILE__));
define('DS', DIRECTORY_SEPARATOR);
require_once(JPATH_BASE . DS . 'includes' . DS . 'defines.php');
require_once(JPATH_BASE . DS . 'includes' . DS . 'framework.php');
$mainframe = &JFactory::getApplication('site');

Etiquetas: include, php, sesiones, tabla, variables
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 05:26.