site dynamisch maken
23 september 2008 - 15:03    reactie #25
geplaatst door: Armand

Citaat
mvdg om 14:53, 23-09-2008
Ik zie de foutmelding nu gebeuren en het is inderdaad zo dat hij het hele commando 'include' niet lijkt te kennen. Misschien heb je een rare versie van PHP ofzo.

Maar dan zou de eerste include die intro.php invoegt ook niet werken, maar we zien wel degelijk een submenu (met icoontjes) als je Speelplaats klikt... of misschien wordt die wel door de default geplaatst.

Probeer een een test.php te maken en laat die zien als default, dan weten we in ieder geval zeker welke switch optie wanneer geactiveerd wordt en kunnen we de juiste conclusies trekken.

- Armand

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 15:05    reactie #26
geplaatst door: Duke
Dit is de spelletjes.php (flash dus):

<span class="style2">Spelletjes<span class="style3"> <img src="sprinkhaan.gif" width="42" height="39" align="texttop"></span></span>
<div id="Layer1" style="position:absolute; width:170px; height:190px; z-index:1; left: 181px; top: 308px;">
 <object classid="clsid:D27CDB6E-AE6D-11cf-96B8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=6,0,29,0" width="175" height="190">
   <param name="movie" value="touwtjespringen.swf">
   <param name="quality" value="high">
   <embed src="touwtjespringen.swf" quality="high" pluginspage="http://www.macromedia.com/go/getflashplayer" type="application/x-shockwave-flash" width="175" height="190"></embed>
 </object>
</div>

en dit is m'n index:

<body>
<div id="container"> <!-- Deze 'container' div houdt alles gecentreerd omdat dat in de CSS gedeclareerd wordt -->
<?php include ("navigation.php"); ?>


<?php switch ($_GET['id'])<br>{ <br>case ("intro.php"): <br>include ("intro.php"); <br> break; <br>case ("spelletjes.php"): <br> include ("spelletjes.php"); <br> break; <br>case ("differentieren.php"): <br> include ("differentieren.php"); <br> break; <br>case ("lerenleren.php"): <br> include ("lerenleren.php"); <br>break; <br>default: <br>require ("intro.php"); <br>} <br>?>

 
         

     <div id="admenu">Google</div>

</div>
<div align="center">
 <?php include ("footer.php"); ?>
</div>
</body>

en dit de gevraagde link: http://www.speelplaats.org/speelplaats/phpinfo.php

site dynamisch maken
23 september 2008 - 15:10    reactie #27
geplaatst door: Duke
default is nu test.php
dat geeft al een ander resultaat
site dynamisch maken
23 september 2008 - 15:15    reactie #28
geplaatst door: Armand
Ik zie het verschil in resultaat niet. Wat moet test.php laten zien dan ?

Ik zie het al: als ik een dummy id invul krijg ik testtesttesttest te zien. Hieruit kunnen we in ieder geval concluderen dat de eerste include intro.php toevoegd, dus include werkt. Blijven er 2 vragen over:

1) waarom de errormelding nadat op Speelplaats geklikt te hebben (en dus ook intro.php is geinclude). Blijkbaar probeert hij na het includen van intro.php ook spelletjes.php te includen.
2) waarom de errormelding wanneer we op Spelletjes klikken?

(Bewerkt door Armand om 15:17, 23-09-2008)

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 15:17    reactie #29
geplaatst door: Duke
dit is nu default: http://www.speelplaats.org/speelplaats/
dan kun je op speelplaats klikken en krijg je content (met foutmelding)
spelletjes geeft geen content maar alleen een foutmelding
site dynamisch maken
23 september 2008 - 15:30    reactie #30
geplaatst door: Armand
Ik zie het probleem met de switch niet direct. Daarom even wat anders proberen met hetzelfde resultaat maar dan zonder switch:

Probeer eens

include($_GET['id']);

en becommentariseer de hele switch statement even uit.

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 15:33    reactie #31
geplaatst door: mvdg
Ik kan het probleem ook niet helemaal zien zo.

Wat Armand zegt is de moeite waard om te proberen, maar niet om te blijven gebruiken in verband met veiligheid. Dus uiteindelijk zal een andere oplossing nodig zijn.

include() is eigenlijk sowieso niet nodig, je kunt net zo goed readfile() doen, het gaat immers niet om php bestanden die geinclude moeten worden maar om gewone html. De bestanden hoeven niet uitgevoerd te worden, alleen getoond.

Gebaseerd op de code van Duke, zou ik er zoiets van maken:


<body>
<div id="container"> <!-- Deze 'container' div houdt alles gecentreerd omdat dat in de CSS gedeclareerd wordt -->
<?php<br>readfile("navigation.html");<br>// veilige adressen opgeven<br>$adressen = array('intro.html', 'spelletjes.html', 'enzovoort.html');<br>// indien opgegeven adres een veilig adres is, laten zien.<br>// zo niet (geen adres of onveilig adres): intro laten zien.<br>if (in_array($adressen,$_GET['id'])) {<br>   readfile($_GET['id']);<br>} else {<br>   readfile('intro.php');<br>}<br>?>
   <div id="admenu">Google</div>

</div>
<div align="center">
<?php<br>readfile("footer.php");<br>?>
</div>
</body>

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
site dynamisch maken
23 september 2008 - 15:39    reactie #32
geplaatst door: Duke
dit begrijp ik even niet:

"include($_GET['id']);

en becommentariseer de hele switch statement even uit."

als ik switch voor include verander krijg ik helemaal niets meer alleen een foutmelding op een wit vlak.

site dynamisch maken
23 september 2008 - 15:42    reactie #33
geplaatst door: Armand
Het is zeker niet aan te raden om mijn voorstel voor altijd te gebruiken, ik wil alleen getest hebben of dat die include probleemloos werkt.

Zou je nog 1 ding willen proberen voor me:

1 haal de include footer even weg om uit te sluiten dat het probleem niet hier ligt
2 sluit ook de default tag van de switch even af met een break

- Armand

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 15:46    reactie #34
geplaatst door: Duke
footer is weg
break toegevoegd

helaas het zelfde resultaat

site dynamisch maken
23 september 2008 - 15:46    reactie #35
geplaatst door: Armand

Citaat
Duke om 15:39, 23-09-2008
dit begrijp ik even niet:

"include($_GET['id']);

en becommentariseer de hele switch statement even uit."

als ik switch voor include verander krijg ik helemaal niets meer alleen een foutmelding op een wit vlak.

Ik bedoel dat het er zo uit komt te zien:

<body>
<div id="container"> <!-- Deze 'container' div houdt alles gecentreerd omdat dat in de CSS gedeclareerd wordt -->
<?php include ("navigation.php"); ?>

<?php include($_GET['id']); ?>

<?php <br>/* switch ($_GET['id'])<br>{<br>case ("intro.php"):<br>include ("intro.php");<br> break;<br>case ("spelletjes.php"):<br> include ("spelletjes.php");<br> break;<br>case ("differentieren.php"):<br> include ("differentieren.php");<br> break;<br>case ("lerenleren.php"):<br> include ("lerenleren.php");<br>break;<br>default:<br>require ("intro.php");<br>} */<br>?>


       

    <div id="admenu">Google</div>

</div>
<div align="center">
<?php include ("footer.php"); ?>
</div>
</body>

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 15:51    reactie #36
geplaatst door: Armand
Grappig, ik zie de site wijzigen :-)

Alleen nog even de switxh statement omringen met /* en */ (becommentariëren van de code zoals in mijn voorbeeld)

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 15:57    reactie #37
geplaatst door: Duke
wauw het werkt......
bijna....
alleen dit nog: http://www.speelplaats.org/speelplaats/
als je hier op klikt krijg ik nog een foutmelding ipv default
content laat hij nu8 wel zien!

hij geeft die fout hierbij :

<?php include($_GET['id']); ?>


(Bewerkt door Duke om 16:10, 23-09-2008)

(Bewerkt door Duke om 16:15, 23-09-2008)

site dynamisch maken
23 september 2008 - 16:15    reactie #38
geplaatst door: mvdg
Tja, hij wil het bestand invoegen dat je opgeeft. Als je niks opgeeft zoekt hij het bestaand "" (niets dus). Dat werkt niet. Je moet dus checken of er wel iets is opgegeven, en zo niet dan pak je een standaard waarde.

Daarnaast zoals ik al zei, je moet dit niet zo blijven gebruiken.
Gebruik zoiets als ik aangaf, dan kan je site niet zo makkelijk misbruikt worden.

Kijk maar eens wat dit doet:
http://speelplaats.org/speelplaats/index.php?id=http://www.macfreak.nl
Zie je? Zo kan iemand JOUW server misbruiken om dingen mee te doen zoals spam versturen.

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
site dynamisch maken
23 september 2008 - 16:32    reactie #39
geplaatst door: Duke
ik kan je even niet meer volgen mvdg.
ik heb net jouw code ingevoerd maar krijg dan weer een wit vlak met foutmelding
Hier blijft hij op hangen: readfile($_GET['id']);
Ik begrijp ook niet echt wat je doet. Heb ik die switch dan helmaal niet meer nodig?
en wat moet ik als veilige adresseen zien? moet ik daar m'n eigen pagina's invoeren?
en kan ik daar ook een contactformuliertje in steken?
site dynamisch maken
23 september 2008 - 16:37    reactie #40
geplaatst door: mvdg
Wat er gebeurt is niet zo heel moeilijk. Er is een lijstje met veilige adressen (en ja, daar moet je dus alle mogelijkheden in zetten die je wilt kunnen aanroepen). Als het opgegeven adres daarin voorkomt, wordt het ingeladen. Zo niet, dan wordt de standaard waarde gebruikt (intro.php in mijn eerdere stukje code).

Als hij "" toch niet pakt kun je if (in_array($adressen,$_GET['id'])) { even veranderen in if ($_GET['id'] && in_array($adressen, $_GET['id'])) { dan checkt hij nog eens extra of $_GET['id'] wel is ingevuld.

Mocht je inderdaad bestanden willen inladen die zelf weer PHP code in zich hebben (zoals misschien een contactformulier) dan moet je include() gebruiken in plaats van readfile() want zoals ik eerder zei, readfile werkt voor html prima, maar niet voor bestanden met PHP commando's erin. (Maar dat was natuurlijk ook de bedoeling, om verdere veiligheid te bieden).

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
site dynamisch maken
23 september 2008 - 17:01    reactie #41
geplaatst door: Armand
@mvdg: De controle die jij inbouwt om je readfile velig te maken kun je natuurlijk ook toepassen op mijn include-oplossing zodat je macfreak verwijzing niet meer werkt (zelfde principe).

Zoals eerder gezegd: mijn oplossing (die dus werkt) is alleen bedoeld om er zeker van te zijn dat include werkt. Nu moeten we kijken of we of

a) de switch terug kunnen krijgen werkend
of b)  dit basisprincipe kunnen uitbouwen naar een veilige versie

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 17:10    reactie #42
geplaatst door: mvdg
Helemaal mee eens Armand, ik bedoelde ook niet dat het een beter was dan het ander ofzo.

Ik denk wel dat een oplossing met zo'n array handiger is dan een switch want het is immers makkelijker om opties toe te voegen met de array dan met de switch constructie.

Mitch Design : websites en interactieve toepassingen : http://www.mitchdesign.nl
site dynamisch maken
23 september 2008 - 17:12    reactie #43
geplaatst door: Armand
Maw de oplossing ligt in de combinatie tussen mvdg en armand :-) Wat zijn we het weer eens hier op MF ...

Ik ben in ieder geval overtuigd dat de array wat meer flexibiliteit geeft dus daar zou ik ook voor gaan.

- Armand

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
23 september 2008 - 19:21    reactie #44
geplaatst door: Duke
 :barf: oke, begin hier nu een beetje groen uit te slaan.....
Kheb je code geprobeerd en aangepast m, maar krijg steeds foutmeldingen in die array en ik zie niet waar het aan ligt. Nu staat de switch dus weer terug, daarmee krijg ik tenminste iets op m'n scherm en die snap ik inmiddels.

Kheb geen idee wat de tussenoplossing moet zijn, zit al vanaf vanmorgen vroeg te proberen dit te begrijpen, macje raakt oververhit, verbinding crasht, kat hangt met z'n nagels in m'n rug en mijn stoppen slaan door!

Gelukkig wil m'n schoonmoeder dat ik NU kom eten. Morgen verder!

site dynamisch maken
24 september 2008 - 09:35    reactie #45
geplaatst door: Armand
Hoe gaat het?

Zag dat de site wel weer de shermen laat zien en dat je gebruik maakt van include($_Get[ïd"]) toch?

- Armand

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
24 september 2008 - 10:17    reactie #46
geplaatst door: Duke
Het werkt bijna allemaal, alleen die intro geeft een foutmelding:
http://www.speelplaats.org/speelplaats/
Daarnaast is het zo nog niet veilig maar hoe ik dat op moet lossen weet ik niet want de tips van mvdg begrijp ik nog niet erg. Daar zitten iets te veel variabelen in die ik zelf nog in moet vullen. Die switch-optie begrijp ik inmiddels wel.
site dynamisch maken
24 september 2008 - 11:02    reactie #47
geplaatst door: Armand
Okay, dan doen we het in stappen.

Om eerst er voor te zorgen dat de url ZONDER id wel werkt, zou de code er als volgt uit moeten zien:

if($_GET["id"]){                        /* controleren of id gevuld is */
  include($_GET['id']); }            /* Zo ja, dan invoegen pagina waarvan naam in id staat */
else { include("intro.php"); }      /* Zo niet, dan standaard intro.php invoegen */

(Bewerkt door Armand om 11:03, 24-09-2008)

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse
site dynamisch maken
24 september 2008 - 12:44    reactie #48
geplaatst door: Duke
Armand,

Ik heb er van alles mee geprobeerd maar ik maak de klik blijkbaar niet. Ik krijg consequent een foutmelding op deze regel:

if($_GET["id"]){
Ik weet eigenlijk ook niet wat we nu precies aan het doen zijn. Moet ik dit voor die switch vervangen? Of moet ik die daar juist aan toe voegen? Of zijn we nu de code van mvdg aan het aanpassen?
Ik ben nu echt de draad even helemaal kwijt.
site dynamisch maken
24 september 2008 - 12:49    reactie #49
geplaatst door: Armand
Okay, ik zie de error melding ontstaan, vreemd.. Ik ga even wat proberen op mijn eigen webserver.. moet toch kunnen werken.

Wat zijn we aan het doen:

We gaan mijn voorstel om include($_GET('id')) te gebruiken maar uiteindelijk MET de beveiligingsarray van mvdg. Maar we zijn nu eerst aan het testen of dat id wel gevuld is of niet, afhankelijk daarvan laden we de juiste pagina.

Ik kom zo terug met een hopelijk passende oplossing

- Armand

IMac 24 Inch, 2,4 Ghz, Wireless keyboard and Mighty Mouse