Visualizzazione risultati 1 fino 9 di 9

Discussione: Passaggio Variabili tra 2 file.php in 1 file.tpl

  1. #1
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    946

    Predefinito Passaggio Variabili tra 2 file.php in 1 file.tpl

    Ciao a tutti!

    ho un problema .... devo passare 2 variabili(una da un file.php, e l'altra da un altro file php) in 1 file di tipo .tpl .... per poi da questo file eseguire un redirect ritardato con messaggio.

    io ho scritto così...nel primo file.php:

    Codice PHP:
    //IDENTIFICA L'URL DELLA BARRA DEGLI INDIRIZZI
    $url_pach = ($_SERVER['PHP_SELF']);
    //print $url_pach;
    $tplurlpach = new TplLoad();
    $tplurlpach->assign("url_pach","$url_pach");
    $tplurlpach->display("url_pach_common.tpl");
    //END 
    e nel secondo file.php:

    Codice PHP:
    //IDENTIFICA L'URL DELLA BARRA DEGLI INDIRIZZI
    $url_pach_intspace = ($_SERVER['PHP_SELF']);
    //print $url_pach_intspace;
    $tplurlpach = new TplLoad();
    $tplurlpach->assign("url_pach_intspace","$url_pach_intspace");
    $tplurlpach->display("url_pach_common.tpl");
    //END 
    e nel file.tpl

    Codice HTML:
    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    </head>
    <body>
    
    {php}
    
    print $url_pach;
    print $url_pach_intspace;
    
    if (($url_pach == "") && ($url_pach_intspace == "member_login.php")) redirect ("index.php");
    
    {/php}
    
    </body>
    </html>
    
    il problema che le 2 variabili sono nulle nel file .tpl perchè non visualizza nessun valore....

    Dove sbaglio?

    Grazie.
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  2. #2
    Guest

    Predefinito

    Scusami tanto, ma le porzioni di codice come {php} e redirect le hai messe per non scrivere il reale codice? perché non so nulla di questi tag!

    Comunque non ti visualizza nulla perché nel terzo file non hai messo nessun riferimento agli altri due file. Cioè, vuoi dare un istruzione che dice di prelevare una certa variabile da un certo file? Al termine di uno script, tutte le variabili vengono annullate.
    usa include()

    Codice PHP:
    include("percorso assoluto del file 1");
    include(
    "percorso assoluto del file 2"); 
    In questo modo ti ritrovi che i due file php vengono eseguiti nel terzo.. un po' macchinosa come spiegazione, ma abbi pietà, ho sonno =)

    Ciao
    Ultima modifica di libflagspaces : 17-08-2009 alle ore 22.23.29

  3. #3
    Guest

    Predefinito

    Stai usando Smarty? O comunque un Template engine?

    Se si prova a guardare la sua documentazione, sicuramente c'è la soluzione al tuo problema...

    Ad occhio ti direi di non usare una sintassi {php} nel file template, altrimenti non hai risolto nulla... Il file .tpl deve semplicemente essere un modello da riempire con dei dati elaborati in precedenza...

    Non ci devono essere cose che puoi benissimo gestire da php, quel tipo di controllo puoi risolverlo senza problemi direttamente a monte con un bel Header('Location: '.$urlredirect);

    Una soluzione pulita e funzionale...

    ;)

  4. #4
    L'avatar di biccheddu
    biccheddu non è connesso AlterGuru 2500
    Data registrazione
    19-01-2009
    Residenza
    Torino
    Messaggi
    2,756

    Predefinito

    Ti do un consiglio, datti una lettura a questo thread: http://forum.it.altervista.org/php-m...ile-phpbb.html

  5. #5
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    946

    Predefinito

    Ciao,

    si esatto uso Smarty.class.php !

    allora premettendo che avevo penso sbagliato ad assegnare le variabili creando uno stesso $tplurlpach, ho fatto così:

    nel primo file.php
    Codice PHP:
    //IDENTIFICA L'URL DELLA BARRA DEGLI INDIRIZZI
    $url_pach = ($_SERVER['PHP_SELF']);

    //url path(scritto qui $url_pach) lo passo a urlpach per essere riutilizzato nel //secondo file
    $_SESSION[urlpach]=$url_pach

    nel secondo file.php

    Codice PHP:
    //IDENTIFICA L'URL DELLA BARRA DEGLI INDIRIZZI
    $url_pach_intspace = ($_SERVER['PHP_SELF']);

    //passo urlpach a $url_pach_header
    $url_pach_header $_SESSION[urlpach];

    //stampo i valori delle variabili per verifica..... funziona!
    //print $url_pach_header;
    //print $url_pach_intspace;


    //confronto i due valori e stampo il messaggio ed effettuo il redirect ritardato di 5 //secondi....funziona!

    if (($url_pach_header == "") && ($url_pach_intspace == "member_login.php")) 
    {
    echo 
    "<center><p><b><font color=red>Automatic Redirect in 5 seconds...</font></b><br><br>
        Please go to this address to Login to your member area: <a href='index.php'><u>Home Page</u></a>.
        <br><br>Please contact the webmaster at this address:  
        <a href='mailto:
    $set_webmaster_address'><u>$set_webmaster_address</u></a>
        to report any problems.</p></center>"
    ;
    //redirect ("index.php");
    header('refresh: 5; url=index.php');
    exit;

    Volevo dire che non ho utilizzato il file.tpl.....ma voglio provare ad utilizzarlo, proverò domani ora è tardi....

    se qualcuno può darmi una mano per il file tpl, avevo pensato ad una cosa del genere:

    nel secondo file.php

    Codice PHP:
    $url_pach_intspace = ($_SERVER['PHP_SELF']);

    $url_pach_header $_SESSION[urlpach];

    //print $url_pach_header;
    //print $url_pach_intspace;

    $tplurlpach = new TplLoad();
    $tplurlpach->assign("url_pach_intspace",$url_pach_intspace);
    $tplurlpach->assign("url_pach_header",$url_pach_header);
    $tplurlpach->display("url_pach_common.tpl"); 
    può qulacuno dirmi se è esatto?

    poi devo sistemare il file url_pach_common.tpl




    Citazione Originalmente inviato da neoscript Visualizza messaggio
    Stai usando Smarty? O comunque un Template engine?

    Se si prova a guardare la sua documentazione, sicuramente c'è la soluzione al tuo problema...

    Ad occhio ti direi di non usare una sintassi {php} nel file template, altrimenti non hai risolto nulla... Il file .tpl deve semplicemente essere un modello da riempire con dei dati elaborati in precedenza...

    Non ci devono essere cose che puoi benissimo gestire da php, quel tipo di controllo puoi risolverlo senza problemi direttamente a monte con un bel Header('Location: '.$urlredirect);

    Una soluzione pulita e funzionale...

    ;)
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  6. #6
    L'avatar di biccheddu
    biccheddu non è connesso AlterGuru 2500
    Data registrazione
    19-01-2009
    Residenza
    Torino
    Messaggi
    2,756

    Predefinito

    Perchè usare tutto quel malloppo di cosa, quando ti ho consigliato un valida alternativa compreso di sistema cache?

    Poi ovviamente fai come preferisci, il mio dove l'ho fatto

  7. #7
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    946

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Perchè usare tutto quel malloppo di cosa, quando ti ho consigliato un valida alternativa compreso di sistema cache?

    Poi ovviamente fai come preferisci, il mio dove l'ho fatto

    Volevo dirvi che non c'è niente di complicato nei file.tpl, vi posto qui un esempio di file .tpl (scriptheaders.tpl) che usa smarty...questo file viene richiamato in ogni file .tpl semplicemente con {include file='scriptheaders.tpl'}


    Codice HTML:
    <!-- RSS Feed -->
    <link href="rss.php" title="{$sitename} - {$smarty.const.LA_RSS_FEED}" rel="alternate" id="list1" type="application/rss+xml" />
    
    <script type="text/javascript" src="http://{$url}/javascript/common.js"></script>
    
    <!-- Ligthbox -->
    <link rel="stylesheet" href="tools/lightbox/css/lightbox.css" type="text/css" media="screen" />
    <script type="text/javascript" src="tools/lightbox/js/prototype.js"></script>
    <script type="text/javascript" src="tools/lightbox/js/scriptaculous.js?load=effects"></script>
    <script type="text/javascript" src="tools/lightbox/js/lightbox.js"></script>
    
    
    <!-- Editor  -->
    {if $html_editor}
    	{include file='editor.tpl'}
    {/if}
    
    <!-- Tree -->
    <script type="text/javascript" src="http://{$url}/tools/dtree/dtree.js"></script>
    <link rel="StyleSheet" href=""http://{$url}/tools/dtree/dtree.css" type="text/css" />
    
    {php}
    global $xajax,$lUseAjax;
    if ($lUseAjax)
    	$xajax->printJavascript("tools/xajax");
    {/php}
    
    {if $googlemap}
    {literal}
    <script src="http://maps.google.com/maps?file=api&amp;v=2.x&amp;key={/literal}{$googlemap}{literal}" type="text/javascript"></script>
        <script type="text/javascript">
        //<![CDATA[
    
        var map = null;
        var geocoder = null;
    
        function load() {
          if (GBrowserIsCompatible()) {
            map = new GMap2(document.getElementById("map"));
            map.setCenter(new GLatLng(37.4419, -122.1419), 13);
            geocoder = new GClientGeocoder();
          }
        }
    
        function showAddress(address) {
        	geocoder = new GClientGeocoder();
          if (geocoder) {
          	geocoder.getLatLng(
              address,
              function(point) {
                if (!point) {
                  alert(address + " not found");
                } else {
                  map.setCenter(point, 13);
                  var marker = new GMarker(point);
                  map.addOverlay(marker);
                  marker.openInfoWindowHtml(address);
                }
              }
            );
          }
        }
        //]]>
        </script>{/literal}
    {/if}
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

  8. #8
    L'avatar di biccheddu
    biccheddu non è connesso AlterGuru 2500
    Data registrazione
    19-01-2009
    Residenza
    Torino
    Messaggi
    2,756

    Predefinito

    Il mio era solo un consiglio, poichè Smarty è davvero pesante come template engine, quidni te ne ho consigliato un altro (quello di phpBB).

    Comunque non puoi definire in tutti e due i file php lo stesso .tpl in modo da visualizzarlo e passare i dati?

    Magari crei una condizione, se il pulsante è stato premuto generi degli input type="hidden" in modo da tenerti i valori passati.


  9. #9
    L'avatar di EuroSalute
    EuroSalute non è connesso AlterVistiano
    Data registrazione
    12-05-2003
    Messaggi
    946

    Predefinito

    Citazione Originalmente inviato da biccheddu Visualizza messaggio
    Il mio era solo un consiglio, poichè Smarty è davvero pesante come template engine, quidni te ne ho consigliato un altro (quello di phpBB).

    Comunque non puoi definire in tutti e due i file php lo stesso .tpl in modo da visualizzarlo e passare i dati?

    Magari crei una condizione, se il pulsante è stato premuto generi degli input type="hidden" in modo da tenerti i valori passati.

    Il sito è stato costruito con smarty, non posso sostituirlo con un'altro engine.....
    sarebbe una cosa da pazzi, dovrei modificare tutto....

    La soluzione è di passare le variabili(dico tutte le variabili di cui ho bisogno) creando un nuovo template una volta soltanto, in questo modo:

    Codice PHP:
    $tplUrlpach = new TplLoad();
    $tplUrlpach->assign("new_urlpach_intspace","$url_pach_intspace");
    $tplUrlpach->assign("new_urlpach_header","$url_pach_header");

    $tplUrlpach->assign("url",$set_url);
    $tplUrlpach->assign("sitename","$set_sitename");
    $tplUrlpach->assign("meta_desc","$meta_desc");
    $tplUrlpach->assign("page","$page");
    $tplUrlpach->assign("page_title","$lPageTitle");
    $tplUrlpach->assign("detailedpage",$lDetailedPage);

    $tplUrlpach->display("url_pach_common.tpl"); 
    Devo ancora provare se funziona.....

    Creando il file url_pach_common.tpl , posso scriverci quello che voglio, utilizzando i css e gli script...



    Oggi ho fatto alcune modifiche importanti....

    la prima è stata nel secondo file .php nel quale creo il nuovo tpl e assegno le variabili di cui ho bisogno per effettuare tutti i controlli, questo è il codice:

    $tplUrlpach = new TplLoad();
    $tplUrlpach->assign("new_urlpach_intspace",$url_pach_intspace) ;
    $tplUrlpach->assign("new_urlpach_header",$url_pach_header);

    $tplUrlpach->assign("url",$set_url);
    $tplUrlpach->assign("sitename","$set_sitename");
    $tplUrlpach->assign("meta_desc","$meta_desc");
    $tplUrlpach->assign("page","$page");
    $tplUrlpach->assign("page_title","$lPageTitle");
    $tplUrlpach->assign("detailedpage",$lDetailedPage);

    $tplUrlpach->assign("webmaster_address",$set_webmaster_address );

    if (isset($_SESSION["valid_user"]))
    $tplUrlpach->assign("member",$_SESSION["valid_user"]);

    if (isset($_GET["logout"]))
    $tplUrlpach->assign("member_logout",$_GET["logout"]);

    If (isset($_POST["submit"]))
    $tplUrlpach->assign("submit_login",$_POST["submit"]);

    If (isset($_REQUEST["forgot"]))
    $tplUrlpach->assign("submit_forgot",$_REQUEST["forgot"]);

    $tplUrlpach->display("url_pach_common.tpl");


    questo è il codice nel file .tpl.... url_pach_common.tpl:

    <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
    <html>
    <head>
    <title>{$page_title}</title>
    <!-- <meta http-equiv="Content-Type" content="text/html; charset={$charset}" />-->

    <meta http-equiv="Content-Type" content="text/html;charset=utf-8" />
    <meta name="Generator" content="PHP Classifieds" />
    <meta name="Description" content="{$meta_desc}" />

    <link href="http://{$url}/style/style_intspace.css" rel="stylesheet" type="text/css" />

    <!--// {include file='scriptheaders.tpl'} -->
    </head>
    <body>

    {$new_urlpach_header}
    {$new_urlpach_intspace}

    {if $new_urlpach_header == ""}
    {if $new_urlpach_intspace == "/member_login.php"}
    {if !$member_logout}
    {if !$member}
    {if !$submit_login}
    {if !$submit_forgot}

    <center><p><b><font color=red>ATTENTION: Automatic Redirect in 5 seconds...</font></b><br><br>
    Please go to this address to Login to your member area: <a href='index.php'><u>{$url}</u></a>.
    <br><br>Please contact the webmaster at this address:
    <a href='mailto:{$webmaster_address}'><u>{$webmaster_ address}</u></a>
    to report any problems.</p></center>

    {redirectime(index.php,5)}

    {/if}
    {/if}
    {/if}
    {/if}
    {/if}
    {/if}

    {if $new_urlpach_header != ""}
    {if $new_urlpach_intspace == "/member_login.php"}
    {if $member}

    <center><b><font color=red>ATTENTION: You are on <i>{$new_urlpach_intspace}</i> page...</font></b></center>

    {/if}
    {/if}
    {/if}

    </body>
    </html>

    Ovviamente non è definitivo, le variabili vengono passate correttamente e dovrebbe funzionare...

    ciao
    Ultima modifica di EuroSalute : 19-08-2009 alle ore 12.45.31 Motivo: più info
    LOTTO MATEMATICO-SCENTIFICO che FUNZIONA:
    Scripts di Calcolo Automatico Metodologie http://eurosalute.altervista.org

    VINCI OGNI SETTIMANA CON IL NUOVO METODO 5
    FAI IL TEST CON L'ANALISI VINCITE

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •