[PHP] Probleem met "Include" en subfolders

Pagina: 1
Acties:

  • floriske.nl
  • Registratie: Januari 2002
  • Laatst online: 11-11 18:43

floriske.nl

Wie ik? Echt niet!

Topicstarter
Ik zit met het volgende probleem,

Ik ben voor een klant een nieuwe site aan het opzetten met daarin een projecten pagina.

Het is de bedoeling dat derden, die niet aan de opmaak van de site mogen komen, de afzonderlijke projectpagina's kunnen bewerken in een aparte map op de server.

Nu werk ik, mede om de site goed georganiseerd te houden wat betreft de mappenstructuur, met de volgende mappen (gezien vanuit de site root) ik weet dat deze structuur wat ver gaat, maar ik ken de mensen die er mee om moeten gaan ;)

Hoofdpagina projecten:
subpages/projecten/projecten.php

Projectpagina:
subpages/projecten/projectpages/projectnaam/projectnaam.php

Afbeeldingen van betreffend project:
subpages/projecten/projectpages/projectnaam/afbeelding.jpg

Zowel index.php als projecten.php bevatten een include script met vastgestelde folders en extensie

De bestanden worden als volgt ge-include/aangeroepen in index.php

index.php?page=projecten&page2=projectnaam

Nu wil ik de projectnaam.php pagina's als zijnde basis HTML pagina's bewerkbaar houden, maar omdat de afbeeldingen niet aangeroepen worden vanuit de subfolder waarin de projectpagina staat, maar vanuit de folder waar het script uitgevoerd wordt werkt dit niet.

Om in de html editor de afbeeldingen te kunnen zien moet het pad vanuit projectnaam.php simpelweg "afbeelding.jpg" zijn, maar om ze online te kunnen zien moet het "subpages/projecten/projectpages/afbeelding.jpg" zijn.

Om mijn lange verhaal maar kort af te sluiten: hoe kan ik het geheel dusdanig maken dat de afbeeldingen zowel in de html editor als online gewoon te zien zijn zonder de paden naar de afbeeldingen aan te passen?

  • mithras
  • Registratie: Maart 2003
  • Niet online
Het is gewoon een onhandige manier van werken imho. Schrijf of gebruik een cms achtig iets met wellicht een wysiwyg html editor.
Zelfs een <base> in de html opnemen gaat zo niet werken geloof ik :)

  • floriske.nl
  • Registratie: Januari 2002
  • Laatst online: 11-11 18:43

floriske.nl

Wie ik? Echt niet!

Topicstarter
mithras schreef op vrijdag 30 maart 2007 @ 12:12:
Het is gewoon een onhandige manier van werken imho. Schrijf of gebruik een cms achtig iets met wellicht een wysiwyg html editor.
Zelfs een <base> in de html opnemen gaat zo niet werken geloof ik :)
tjah, daar zeg je wat, ik heb enkel een beetje de basiskennis van php en niet de tijd om me er verder in te verdiepen om een compleet cms te schrijven.

Is het bijvoorbeeld ook niet mogelijk om met een preg_replace <img src=" te veranderen in <img src="subpages/projecten/$projectnaam en deze preg_replace te verwerken in de pagina waar het include script staat en dan <? $projectnaam = "projectnaam" ?> toe te voegen aan de broncode van de subpagina?

edit:
dit is een voorbeeld van het gebruikte include script

[code]
<?php
$path = 'subpages/projecten/';
$extension = '.php';

if ( preg_match("#^[a-z0-9_]+$#i",$page) )
{
$include = @include("$path$page$extension");
if(!$include)
include("subpages/error.php);
}
else
{
include("subpages/unauthorised.php");
}
?>
[/code]

[ Voor 27% gewijzigd door floriske.nl op 30-03-2007 12:37 ]


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ipv includen zou je de pagina's eerst kunnen inlezen en kunnen parsen...

edit: dat heb je zelf ook al enigszins door dus... je kunt alleen op een geinclude pagina geen parse-acties zoals replace meer uitvoeren... je zal dus het bestand moeten inlezen in een variable... dan je replace moeten doen, en dan de variable op het scherm moeten spugen...

[ Voor 65% gewijzigd door P.O. Box op 30-03-2007 12:24 ]


  • Setragasj
  • Registratie: Augustus 2001
  • Laatst online: 01-12 11:33

Setragasj

is using radars to communicate

waarom probeer je dat niet gewoon? :o

<Typ een persoonlijk bericht>


  • mithras
  • Registratie: Maart 2003
  • Niet online
Je kan dan <img src="{project}afbeelding.jpg"> doen waarbij {project} wordt geparsed naar subpages/projecten/projectpages/. Dat kan wel ja :)

  • floriske.nl
  • Registratie: Januari 2002
  • Laatst online: 11-11 18:43

floriske.nl

Wie ik? Echt niet!

Topicstarter
Edwardvb schreef op vrijdag 30 maart 2007 @ 12:23:
ipv includen zou je de pagina's eerst kunnen inlezen en kunnen parsen...

edit: dat heb je zelf ook al enigszins door dus... je kunt alleen op een geinclude pagina geen parse-acties zoals replace meer uitvoeren... je zal dus het bestand moeten inlezen in een variable... dan je replace moeten doen, en dan de variable op het scherm moeten spugen...
lol, * floriske.nl snapt er geen hout meer van nu, en ik nog wel denken dat het iets van niks zou zijn 8)7

Ik moet het include script dat ik hierboven aangegeven heb vervangen voor iets compleet anders?

[ Voor 7% gewijzigd door floriske.nl op 30-03-2007 12:43 ]


  • P.O. Box
  • Registratie: Augustus 2005
  • Niet online
ik zeg niet dat het "DE" oplossing is, er zijn er vele... maar op www.php.net staan een hoop mogelijke manieren om een bestand te openen...
je zou dit kunnen doen:

PHP:
1
2
3
$filecontent = file_get_contents('/path/to/include/file/page.html');
$filecontent = str_replace("src=\"", "src=\"path/to/image/", $filecontent);
echo $filecontent;


http://nl2.php.net/manual/nl/function.file-get-contents.php

  • floriske.nl
  • Registratie: Januari 2002
  • Laatst online: 11-11 18:43

floriske.nl

Wie ik? Echt niet!

Topicstarter
Edwardvb schreef op vrijdag 30 maart 2007 @ 13:07:
ik zeg niet dat het "DE" oplossing is, er zijn er vele... maar op www.php.net staan een hoop mogelijke manieren om een bestand te openen...
je zou dit kunnen doen:

PHP:
1
2
3
$filecontent = file_get_contents('/path/to/include/file/page.html');
$filecontent = str_replace("src=\"", "src=\"path/to/image/", $filecontent);
echo $filecontent;


http://nl2.php.net/manual/nl/function.file-get-contents.php
thx, dat heeft ontzetten geholpen :D

ik heb nu nog 1 klein probleempje:

ik roep nu de pagina als volgt aan: index.php?page=projecten$subpage=verkoop

PHP:
1
2
3
4
5
6
if ($subpage)   
}
    $filecontent = file_get_contents('subpages/projecten/verkoop.php');
    $filecontent = str_replace("src=\"", "src=\"subpages/projecten/", $filecontent);
    echo $filecontent;
}


werkt wel, maar

PHP:
1
2
3
4
5
6
7
8
$extension = '.php';

if ($subpage)
{       
    $filecontent = file_get_contents('subpages/projecten/$subpage$extension');
    $filecontent = str_replace("src=\"", "src=\"subpages/projecten/", $filecontent);
    echo $filecontent;
}


edit:
werkt ook


werkt niet

Waarschijnlijk doe ik iets verkeerd met quotes, maar ik zie niet goed wat


edit:
inderdaad iets met quotes, enkele quotes vervangen voor dubbele, nu werkt het wel

thx allen :>

[ Voor 6% gewijzigd door floriske.nl op 30-03-2007 15:00 . Reden: } ]


  • floriske.nl
  • Registratie: Januari 2002
  • Laatst online: 11-11 18:43

floriske.nl

Wie ik? Echt niet!

Topicstarter
even ter info, en voor de duidelijkheid een dubbelpost zodat het wat minder rommelig is.

Dit is het, nu werkende script:

manier van aanroepen 1: index.php?page=projecten&subpage=nieuwbouw
manier van aanroepen 2: index.php?page=projecten&projectpage=project1
manier van aanroepen 3: index.php?page=projecten (hoofdpagina wordt geopend)

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
<?
        $extension = '.php';

        if ( preg_match("#^[a-z0-9_]+$#i",$subpage) )
        {   
            $filecontent = file_get_contents("subpages/projecten/$subpage$extension");
            $filecontent = str_replace("src=\"", "src=\"subpages/projecten/", $filecontent);
            echo $filecontent;
        }
        
        elseif  ( preg_match("#^[a-z0-9_]+$#i",$projectpage) )
        {
            $filecontent = file_get_contents("subpages/projecten/projectpages/$projectpage$extension");
            $filecontent = str_replace("src=\"", "src=\"subpages/projecten/projectpages/", $filecontent);
            echo $filecontent;
        }
        
        else
        {
            $filecontent = file_get_contents("subpages/projecten/main.php");
            $filecontent = str_replace("src=\"", "src=\"subpages/projecten/", $filecontent);
            echo $filecontent;
        }
                    
?>


ik kan de pagina's nu naar hartelust opmaken in dreamweaver zonder alle image-links aan te hoeven passen alvorens te uploaden _/-\o_ .

Hier mag/kan dus eventueel een slotje op (hoeft niet uiteraard ;)) aangezien ik weer gelukkig ben :+

[ Voor 13% gewijzigd door floriske.nl op 30-03-2007 17:06 ]

Pagina: 1