[php] include in div

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ik ben bezig met een site waar de frames uit moeten, dus ik heb de site opnieuw opgezet met layers, ik wil dus dat in 1 layer alle paginas worden geprojecteerd als ik op een link klik, dat doe ik op de volgende manier:
code:
1
2
3
4
5
6
7
8
9
10
11
  <?php 
switch(strtolower($_GET['id'])) { 

case "1": $page="1.htm";break; 
case "2": $page="2.htm";break;
 
default: $page="start.php";break; // default is voor als "pagina" niet gespecifieerd is! 
} 
include($page); 

?>


Dit werkt allemaal goed, maar als ik een pagina include waar een link op staat, en ik klik op die link dan opent hij die pagina in het complete venster maar ik wil dat hij ook opent in dezelfde layer.

Kan je bijv. een target opgeven in php?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Je moet goedd serverside en client side uit elkaar houden. Het alleen vervangen van een onderdeel van je pagina is met php niet mogenlijk. Daarvoor moet je javascript gebruiken of je zult dit switch statement uit moeten breiden zodat het ook de andere links kan verwerken.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Janoz schreef op 22 oktober 2004 @ 14:58:
Je moet goedd serverside en client side uit elkaar houden. Het alleen vervangen van een onderdeel van je pagina is met php niet mogenlijk. Daarvoor moet je javascript gebruiken of je zult dit switch statement uit moeten breiden zodat het ook de andere links kan verwerken.
op deze manier vervang ik toch een gedeelt van de pagina.
als ik op de link klik bijv.
code:
1
<a href="?id=1">1</a>

dan verschijnt pagina 1 in die layer, zo kan ik dus een gedeelte van de hoofdpagina steeds vervangen

[ Voor 3% gewijzigd door Verwijderd op 22-10-2004 15:08 ]


Acties:
  • 0 Henk 'm!

  • momania
  • Registratie: Mei 2000
  • Laatst online: 22:26

momania

iPhone 30! Bam!

Verwijderd schreef op 22 oktober 2004 @ 15:08:
[...]


op deze manier vervang ik toch een gedeelt van de pagina.
als ik op de link klik bijv.
code:
1
<a href="?id=1">1</a>

dan verschijnt pagina 1 in die layer, zo kan ik dus een gedeelte van de hoofdpagina steeds vervangen
Op die manier 'vervang' je het niet, maar bouw je het opnieuw op doordat je een request doet naar jezelf :)

Neem je whisky mee, is het te weinig... *zucht*


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
momania schreef op 22 oktober 2004 @ 15:10:
[...]

Op die manier 'vervang' je het niet, maar bouw je het opnieuw op doordat je een request doet naar jezelf :)
Maar dit is toch wel de goeie manier om de inhoud van een layer te veranderen???

Acties:
  • 0 Henk 'm!

  • erkje
  • Registratie: Oktober 2001
  • Laatst online: 12-06-2024
Verwijderd schreef op 22 oktober 2004 @ 15:12:
[...]
Maar dit is toch wel de goeie manier om de inhoud van een layer te veranderen???
ja joh, helemaal top. is één van de meest gebruikte methodes waarschijnlijk :)

taste and see that the Lord is good


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Of weet iemand een site waar wordt uitgelgt hoe je een goede php-page met include maakt.
Ik moet van de frames af in dit geval..........

Acties:
  • 0 Henk 'm!

  • MBV
  • Registratie: Februari 2002
  • Laatst online: 20-09 22:44

MBV

Wat is het nut van het weghalen van frames, als je je opbouw niet verandert?
Wat jij wil kan niet op die manier: je zou dan 2x een <html> en </html> krijgen, enz. Die andere website vindt dat niet echt leuk, en mozilla al helemaal niet....

Wat wil je bereiken? Waarom mag je geen frames meer gebruiken? Gewoon een techniek afschrijven vind ik altijd vrij slecht, zonder een reden.
Als je het toch wilt: <iframe> is ook een soort frame, daarmee zal het wel werken. Bedenk wel dat iemand dan zijn eigen pagina in jouw pagina kan openen, als je het niet goed beveiligd!

Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Kijk eens naar de site van mijn volleybalclub: daar is 1 template (index.php) en daarin word steeds de content ge-include. Bekijk ook eens de links op de pagina's, dan zie je dat ik aangeef welke content in de pagina ge-include moet worden. Dit onderwerp is al honderden keren langsgeweest en er is dus veel over te vinden.

Conclusie: elke keer moet je de hele pagina verversen, maar door caching van diverse dingen maakt dat in snelheid niet veel uit.

[ Voor 18% gewijzigd door André op 22-10-2004 15:24 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
MBV schreef op 22 oktober 2004 @ 15:18:
Wat is het nut van het weghalen van frames, als je je opbouw niet verandert?
Wat jij wil kan niet op die manier: je zou dan 2x een <html> en </html> krijgen, enz. Die andere website vindt dat niet echt leuk, en mozilla al helemaal niet....

Wat wil je bereiken? Waarom mag je geen frames meer gebruiken? Gewoon een techniek afschrijven vind ik altijd vrij slecht, zonder een reden.
Als je het toch wilt: <iframe> is ook een soort frame, daarmee zal het wel werken. Bedenk wel dat iemand dan zijn eigen pagina in jouw pagina kan openen, als je het niet goed beveiligd!
ik wil van de frames af omdat ik het niet meer overzichtelijk vind, en omdat google de losse pagina's indexeerd....ik wil het gewoon wat simpeler maken. De manier hier boven werkt goed dacht ik totdat er in de ge-include pagina zelf ook een link zat....nou, ik ben de draad alweer aardig kwijt 8)7

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
André schreef op 22 oktober 2004 @ 15:23:
Kijk eens naar de site van mijn volleybalclub: daar is 1 template (index.php) en daarin word steeds de content ge-include. Bekijk ook eens de links op de pagina's, dan zie je dat ik aangeef welke content in de pagina ge-include moet worden. Dit onderwerp is al honderden keren langsgeweest en er is dus veel over te vinden.

Conclusie: elke keer moet je de hele pagina verversen, maar door caching van diverse dingen maakt dat in snelheid niet veel uit.
ja kijk....wat jij hebt, dat wil ook, als je bij jouw site op een link drukt van een ge-include pagina, dan verschijnt ie in de zelfde tabel(div?)

Hoe doe je dat?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Door in eerste instantie duidelijk te hebben hoe alles werkt. Probeer voor jezelf eens een beeld te schetsen hoe het in elkaar zit. Php draait op de server. Al je code wordt daar uitgevoerd. Zodra je op een linkje drukt wordt er op de server om die specifieke pagina gevraagd. De php-code daarin wordt uitgevoerd en vervolgens wordt het resultaat terug gestuurt.

Ga eens op zoek naar een leuke tutorial. Bij phpfreakz hebben ze vast wel wat nederlands materiaal. Speel er een beetje mee zodat je doorkrijgt hoe alles werkt. Pas dan moet je dit weer oppakken en je frameset eruit gooien en een nieuwe php template engine implementeren.

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • André
  • Registratie: Maart 2002
  • Laatst online: 12-09 14:32

André

Analytics dude

Verwijderd schreef op 22 oktober 2004 @ 15:26:
[...]


ja kijk....wat jij hebt, dat wil ook, als je bij jouw site op een link drukt van een ge-include pagina, dan verschijnt ie in de zelfde tabel(div?)

Hoe doe je dat?
Dat gebeurd helemaal niet, hij ververst helemaal hoor ;)

Alleen omdat de 'basispagina' lokaal gechached word gaat dat zo snel dat het lijkt alsof alleen de content ververst word.

Alleen een <div> verversen is een moelijk iets, dan ben je een bufferframe nodig waar je een pagina in laad, en op de onload van de pagina kun je de inhoud overhevelen naar je div, en dat wil je allemaal niet.

[ Voor 3% gewijzigd door André op 22-10-2004 15:40 ]


Acties:
  • 0 Henk 'm!

Verwijderd

een zeer makkelijke code om bestanden te includen:


<?php

if (file_exists($DOCUMENT_ROOT."/".$_GET["page"].".php")) $inc = $_GET["page"];
else $inc = "home";

include($inc.".php");

?>

dmv DCUMENT_ROOT zorgt je ervoor dat kutjes geen /etc/pwd in de url gooien end an een zeer leuke verassing krijgen.

Nu hoef je geen cases, if elseifs etc in de code gooien als je er een pagina bij wilt gooien.

Uiteraard moet hier nog zware beveiliging achter gegooid worden, maar deze code zal denk ik toch menige bezoeker hier op weg kunnen help. Doet echt pijn aan mn ogen als ik cases/if's bij includes zie.


Tip:

maak eens een global file van die in iedere pagina geinclude word. Dat geouwehoer met overal die $_GET dingen doorkijken schiet echt niet op.

<?php

function validate($text) {
return htmlspecialchars(stripslashes($text));
}

foreach($_POST as $key=>$value) $_POST[$key] = validate($_POST[$key]);
foreach($_GET as $key=>$value) $_GET[$key] = validate($_GET[$key]);

?>

natuurlijk kan de validatie functie beter, heb geen zin om hier complete classes neer te gooein.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
André schreef op 22 oktober 2004 @ 15:39:
[...]

Dat gebeurd helemaal niet, hij ververst helemaal hoor ;)

Alleen omdat de 'basispagina' lokaal gechached word gaat dat zo snel dat het lijkt alsof alleen de content ververst word.

Alleen een <div> verversen is een moelijk iets, dan ben je een bufferframe nodig waar je een pagina in laad, en op de onload van de pagina kun je de inhoud overhevelen naar je div, en dat wil je allemaal niet.
wat mij betreft mag mijn pagina ook wel helemaal verversen, alleen het probleem is dat als IK op een link klik bij mijzelf, dan knalt hij die pagina in het complete browser-venster

Acties:
  • 0 Henk 'm!

  • bat266
  • Registratie: Februari 2004
  • Laatst online: 24-08 06:41
dan moet je er voor zorgen dat je de link van een get variabele voorziet
ongeveer index.php?url=mijnpagina

Better to remain silent and be thought a fool then to speak out and remove all doubt.


Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 21-09 02:21

Janoz

Moderator Devschuur®

!litemod

Och, ik kan nog steeds als page ../../../../../etc/passwd%00 opgeven ;).

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

Verwijderd

Och, ik kan nog steeds als page ../../../../../etc/passwd%00 opgeven
Als je er geen validatie bij doet werkt het (als je het juiste aatal ../ gebruikt ;)
natuurlijk kan de validatie functie beter, heb geen zin om hier complete classes neer te gooein.
Ik heb me voldoende ingedekt ;)
Pagina: 1