• User Attivo

    Pagina principale unica e contenuto richiamato attraverso il link

    :ciauz:

    Scusate il titolo lungo ma da spiegare in 2 parole è difficile..

    In pratica mi sapete dire se è possibile avendo una pagina index.php dargli inizialmente il contenuto voluto, e poi attraverso dei link del tipo:

    index.php?page=XXX

    si ricarica la pagina ma col contenuto diverso (che preleva da un altro file php..)

    Avevo provato con un include, ma poi non so come fare per creare i nuovi link, e sostituire il pezzo richiamato con quello del link... :bho:

    Spero di essermi espresso bene.. In caso ditemi se non avete capito..

    Grazie mille


  • User

    Allora, ti posso dire che si può fare benissimo ed anche facilmente, visto che il mio sito è strutturato così, poi però gli ho messo il mod_rewrite per SEO e per oscurare la struttura del sito.

    Comunque tu ricavi dalla querystring il nome della pagina e poi attraverso degli if (che contengono il contenuto della pagina richiamata) stampi il risultato.

    Invece se vuoi fare degli include, puoi fare così:

    Link: index.php?page=home

    [PHP]<?php
    $pag = $_GET['page'];
    include("$pag.php");
    ?>[/PHP]

    e ovviamente il contenuto si trova nel nome della pagina richiesta..

    Non so se hai capito bene...
    Ciao :gthi:


  • ModSenior

    Ciao gigi991,

    La solzuone proposta da SimyXT, è assolutamente sconsigliata per motivi di sicurezza, cosi facendo manomettendo la variabile GET riesci ad includere qualsiasi file vuoi...
    Devi sempre fare i controlli che la variabile contenga un valore che ti aspetti di ricevere.


  • User

    Ma ovviamente il controllo ci và sempre..
    Infatti io uso il metodo dell'if così sono sicuro che ricevo sempre quella pagina e/o quelle da me inserite...

    Era solo per far capire il funzionamento..


  • User Attivo

    Intanto ringrazio SimyXT :wink3:

    @Thedarkita said:

    Ciao gigi991,

    La solzuone proposta da SimyXT, è assolutamente sconsigliata per motivi di sicurezza, cosi facendo manomettendo la variabile GET riesci ad includere qualsiasi file vuoi...
    Devi sempre fare i controlli che la variabile contenga un valore che ti aspetti di ricevere.

    Hai qualche suggerimento pratico (in poche parole codice..) per risolvere questo problema?

    Grazie.


  • ModSenior

    Ciao Gigi991,

    Puoi usare semplici if cosi:

    [php]
    $page = $_GET['page'];
    if($page == 'page1'')
    include('page1.php');
    elseif($page == 'page2'')
    include('page2.php');
    [/php]Per una soluzione come quella proposta da SimyXT, cosi:
    [php]
    $page = $_GET['page'];
    $validi = array('page1', 'page2');
    if(in_array($page, $validi))
    include($page.'.php');
    [/php]


  • User Attivo

    Ho provato mettendo in una pagina prova.php il codice:

    [php]<?php
    $page = $_GET['page'];
    if($page == 'page1'')
    include('page1.php');
    elseif($page == 'page2'')
    include('page2.php');
    ?>[/php]

    E inserendo nella stessa directory i file page1.php e page2.php con contenuti diversi.
    Ora andando su prova.php (stessa cosa se vado su prova.php?page=page1 o prova.php?page=page2) mi da questo errore:

    Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING in /membri/gfile/prova.php on line 4

    Cosa può essere?


  • ModSenior

    Hai messo un ' di troppo:
    [php]
    <?php
    $page = $_GET['page'];
    if($page == 'page1')
    include('page1.php');
    elseif($page == 'page2')
    include('page2.php');
    ?>
    [/php]