Visualizzazione dei risultati da 1 a 3 su 3
  1. #1
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505

    Sessione PHP all'interno di Joomla

    Ho messo un link a questo script

    first.php
    Codice PHP:
    <?php
    session_start
    ();
    $_SESSION['test'] = "testo di prova";
    ?>
    [url="prestazioni/second.php"]link[/url]
    Appare la pagina con il link che punta a second.php

    second.php è fatta in questo modo
    Codice PHP:
    <?php
       session_start
    ();
       
    $var $_SESSION['test'];
       print 
    $var;
    ?>
    cliccando sul link arrivo a second.php che mi stampa correttamente a video il contenuto di $_SESSION['test'] ovvero
    testo di prova

    Ora la pagina da cui parto si è un po' complicata, ovviamente, diventando così:

    prestazioni.php
    Codice PHP:
    <?php
    session_start
    ();
    $_SESSION['test'] = "testo di prova"

    /**** questo serve per prendere una variabile messa in sessione da Joomla ****/
    define'_JEXEC');
    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');
    $user =& JFactory::getUser();
    /******************************************************/

    header("location: /prestazioni/second.php"); //redirect su second.php
    ?>
    second.php è invariata, stavolta però non stampa il contenuto della variabile.

    Credo ci sia qualcosa nel codice di prestazioni.php che da fastidio alla variabile in sessione... ma cosa???

    La sessione viene creata, la variabile $_SESSION['test'] viene valorizzata (infatti all'interno di prestazioni.php posso stamparla tranquillamente), ma second.php non la vede...

    Sto diventando pazzo.

  2. #2
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Ho provato con po' di combinazioni a commentare queste righe:

    require_once ( JPATH_BASE .DS.'includes'.DS.'defines.php' );
    require_once ( JPATH_BASE .DS.'includes'.DS.'framework.php' );
    $mainframe =& JFactory::getApplication('site');
    $user =& JFactory::getUser();

    Il risultato è che la variabile arriva a second.php se i 2 require_once sono disattivati.
    Cosa fanno di male a quella povera variabile in sessione? Come posso aggirare il problema?

  3. #3
    Moderatore di PHP L'avatar di Alhazred
    Registrato dal
    Oct 2003
    Messaggi
    12,505
    Riporto il codice dei 2 file chiamati nei require_once, magari riuscite a capire meglio il problema

    defines.php
    Codice PHP:
    <?php

    // no direct access
    defined'_JEXEC' ) or die( 'Restricted access' );

    /**
    * Joomla! Application define
    */

    //Global definitions
    //Joomla framework path definitions
    $parts explodeDSJPATH_BASE );

    //Defines
    define'JPATH_ROOT',            implodeDS$parts ) );

    define'JPATH_SITE',            JPATH_ROOT );
    define'JPATH_CONFIGURATION',     JPATH_ROOT );
    define'JPATH_ADMINISTRATOR',     JPATH_ROOT.DS.'administrator' );
    define'JPATH_XMLRPC',         JPATH_ROOT.DS.'xmlrpc' );
    define'JPATH_LIBRARIES',         JPATH_ROOT.DS.'libraries' );
    define'JPATH_PLUGINS',        JPATH_ROOT.DS.'plugins'   );
    define'JPATH_INSTALLATION',    JPATH_ROOT.DS.'installation' );
    define'JPATH_THEMES'       ,    JPATH_BASE.DS.'templates' );
    define'JPATH_CACHE',            JPATH_BASE.DS.'cache');
    framework.php
    Codice PHP:
    <?php
    // no direct access
    defined'_JEXEC' ) or die( 'Restricted access' );

    @
    set_magic_quotes_runtime);
    @
    ini_set('zend.ze1_compatibility_mode''0');

    /*
     * Installation check, and check on removal of the install directory.
     */
    if (!file_existsJPATH_CONFIGURATION DS 'configuration.php' ) || (filesizeJPATH_CONFIGURATION DS 'configuration.php' ) < 10) || file_existsJPATH_INSTALLATION DS 'index.php' )) {
        if( 
    file_existsJPATH_INSTALLATION DS 'index.php' ) ) {
            
    header'Location: installation/index.php' );
            exit();
        } else {
            echo 
    'No configuration file found and no installation code available. Exiting...';
            exit();
        }
    }

    /*
     * Joomla! system startup
     */

    // System includes
    require_once( JPATH_LIBRARIES        .DS.'joomla'.DS.'import.php');

    // Pre-Load configuration
    require_once( JPATH_CONFIGURATION    .DS.'configuration.php' );

    // System configuration
    $CONFIG = new JConfig();

    if (@
    $CONFIG->error_reporting === 0) {
        
    error_reporting);
    } else if (@
    $CONFIG->error_reporting 0) {
        
    error_reporting$CONFIG->error_reporting );
        
    ini_set'display_errors');
    }

    define'JDEBUG'$CONFIG->debug );

    unset( 
    $CONFIG );

    /*
     * Joomla! framework loading
     */

    // Include object abstract class
    require_once(JPATH_SITE.DS.'libraries'.DS.'joomla'.DS.'utilities'.DS.'compat'.DS.'compat.php');

    // System profiler
    if (JDEBUG) {
        
    jimport'joomla.error.profiler' );
        
    $_PROFILER =& JProfiler::getInstance'Application' );
    }

    // Joomla! library imports;
    jimport'joomla.application.menu' );
    jimport'joomla.user.user');
    jimport'joomla.environment.uri' );
    jimport'joomla.html.html' );
    jimport'joomla.utilities.utility' );
    jimport'joomla.event.event');
    jimport'joomla.event.dispatcher');
    jimport'joomla.language.language');
    jimport'joomla.utilities.string' );
    ?>

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.