[php/html/css] Nette manier layout veranderen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • wiene
  • Registratie: Maart 2007
  • Laatst online: 25-09 19:09
Ik zal maar eerst even zeggen dat ik wel eens wat sites heb gemaakt maar nooit een fatsoenlijke en dat wat ik nu ga vragen ook maar een workaround is net als de rest van de site.

Een paar jaar geleden heb ik een site gemaakt met html en stylesheets.
Ik heb toen gekozen voor een iframe wat telkens de content veranderd omdat we muziek op de site hadden middels flash. De site mocht niet herladen vanwege de muziek vandaar de keuze van het iframe. Grote nadeel van dat iframe was dat de hoogte telkens berekend moest worden middels javascript.

Inmiddels is de muziek eraf, en heb ik wat php elementen ingevoegd (poll en fotoboek). Dit werkt allemaal prima maar erg netjes is het niet of zo omdat de basis gewoon html was.

Nu loop ik tegen een klein probleem aan met het iframe. Ik heb een groot php fotoboek wat zomaar op één pagina bijvoorbeeld 160 foto's laat zien. Maar het duurt even voordat alle foto's zijn geladen en mijn iframe kan zich pas in hoogte aanpassen zodra alles is ingeladen, je ziet dus NIET dat de foto's langzaam geladen worden. Als het klaar is veranderd de hoogte en dat kan lang duren met traag internet.

Ik wil eigenlijk nu het iframe weghalen en een php include gaan doen op die plaats. Maar wat is nu de beste manier?

mijn links zijn bijvoorbeeld gewone a href's naar /bestuur/bestuur.html maar wel naar het iframe toe. Ik weet hoe ik een include moet doen en kan dat wel voor de homepage omdat ik dan alleen hoef te zeggen include("./home/home.html")

Kan ik ook een variabele include maken? Dus zodra ik op een link klik dat hij zegt $link = nieuws.html en dat daarna de include($link) wordt geladen? Mijn gevoel zegt van niet, heb het opgezocht maar kan het zo snel niet vinden. Probleem is dat de include niet voltooid wordt omdat de site niet herlaad.

De beste optie lijkt dus om zodra je op een link duwt je url te wijzigen in bijvoorbeeld http://bladiebla.nl/index.php?nieuws.html en dat je met een get of require (moet ik nog even opzoeken) je include regelt. Dit kan ik dus allemaal in de index.php regelen als ik het goed begrijp?

Een andere optie is om de header en footer met een include te doen, groot nadeel daaraan is dat ik meer moet gaan wijzigen, elke subpagina.

Wat is het netste?

Acties:
  • 0 Henk 'm!

Verwijderd

Dat kan zo:
PHP:
1
2
3
<?php
include($_GET['link']);
?>


Maar dat is niet echt veilig (als iemand bijvoorbeeld als link ../../../../../home/wiene/privebestand.txt opgeeft).

Daarom kan je beter dit doen:
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
switch ($_GET['link']) {
  case "nieuws":
    $file="nieuws.html";
    break;
  case "contact":
    $file="contact.html";
    break;
  default:
   $file="home.html";
}
include($file);
?>


Als je dan naar http://bladiebla.nl/index.php?link=nieuws gaat wordt link.html geïnclude.
Maar als je naar http://bladiebla.nl/index.php?link=../../../../iets gaat wordt home.html geïnclude.
Ook als je naar http://bladiebla.nl/index.php gaat wordt home.html geïnclude.

[ Voor 24% gewijzigd door Verwijderd op 19-11-2008 21:23 ]


Acties:
  • 0 Henk 'm!

  • Blaise
  • Registratie: Juni 2001
  • Niet online
En als je het gelijk echt goed wil doen zorg je ook gelijk voor mooie URI's als http://bladiebla.nl/nieuws, bijvoorbeeld zo: http://www.roscripts.com/...to_URL_rewriting-168.html

Acties:
  • 0 Henk 'm!

  • Zakkenwasser
  • Registratie: Februari 2001
  • Niet online
wiene schreef op woensdag 19 november 2008 @ 21:10:

Een andere optie is om de header en footer met een include te doen, groot nadeel daaraan is dat ik meer moet gaan wijzigen, elke subpagina.
Dat wijzg je 1x daarna zal het je heel veel last van je schouders af nemen.
En je werk omgeving is veel schoner, waardoor je je beter kunt focussen op de content.

Als programmeur mag je jezelf nooit en te nimmer herhalen.
Gooi het liever in een include.

Pagina's met belangerijkere informatie ( zoals database connections ) kun je beter in een require_once zetten.
niet te vergissen met include

PSP 1000 @ 6.60 Pro C2 [+256GB]
PSVita @ Henkaku Enso [+256GB]
3DS @ Luma (B9S) [+160GB]
Nintendo Switch 3.0.1 [+256GB]


  • wiene
  • Registratie: Maart 2007
  • Laatst online: 25-09 19:09
MrJey schreef op woensdag 19 november 2008 @ 21:52:
[...]


Dat wijzg je 1x daarna zal het je heel veel last van je schouders af nemen.
En je werk omgeving is veel schoner, waardoor je je beter kunt focussen op de content.

Als programmeur mag je jezelf nooit en te nimmer herhalen.
Gooi het liever in een include.

Pagina's met belangerijkere informatie ( zoals database connections ) kun je beter in een require_once zetten.
niet te vergissen met include
Er wordt geen gebruik gemaakt van een database. Het is eigenlijk een hele simpele site, die overigens wel in internet explorer en firefox werkt en ook zonder flash als je dat niet hebt. Momenteel werkt hij dus ook niet goed/niet zonder javascript denk ik, heb het nooit getest.

De site is sowieso niet netjes meer qua structuur maar ik ga hem nu uit handen geven en die persoon heeft er nog minder verstand van als ik. Ik wil graag nog net de laatste wijzigingen doorvoeren.

Persoonlijk vind ik voor mij de includes op index.php (wat eigenlijk niets anders is als een oude html die nu .php heet) met Dirk II zijn informatie wel goed. Er staat niks persoonlijks of vertrouwelijks op de site verder dus url rewrites is niet nodig.

Nu blijft dus de layout informatie in de index.php en blijft de content in de daarvoor bestemde pagina's. Eigenlijk een verkapte vorm van frames dus. Ik ga er vanavond mee beginnen.

Het betreft overigens de site www.kpjmelderslo.nl . Let dus niet op de onderliggende code want die is gewoon niet meer 100% correct maar dat maakt niet zoveel uit...het werkt. We organiseren ieder jaar een feest wat vroeger KPJ Feesten maar nu meestal alleen een examenfuif voor ca 900 man. Ik wilde onderscheid maken tussen de gewone vereniging en het feest en dat heb ik opgelost door 2 kleuren sites te maken. Klik maar eens op examenfuif, dan wordt hij blauw. Was ooit veel werk maar is wel handig zo.

Ik wil het alleen wat makkelijker maken voor degene die mij gaat opvolgen. Zo moest ik eerst met photoshop een fotoboek maken, handmatig een link aanmaken en uploaden via ftp. Een poll/forum hadden we extern waardoor we last hadden van irritante reclames. Ik heb een paar maanden geleden wat scripts naar mijn wensen aangepast en deze geimplementeerd maar het is natuurlijk wat anders als netjes een site opbouwen vanaf niets.

  • Bozozo
  • Registratie: Januari 2005
  • Laatst online: 20-02 16:10

Bozozo

Your ad here?

In plaats van een switch kun je ook een array gebruiken. Scheelt weer schrijfwerk.

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
26
27
    $page = $_GET['title'];
    if (strlen($page)==0) $page = "home";
    else {
        $page == strtolower($page);

        //actual pages:
        $valid_full_pages = Array("home","upload","image","info","news");

        //AJAX pages etc
        $valid_nohtml_pages = Array("showimage","requestascii","requestupload","setactiveimage");
        
        if(!in_array($page,$valid_full_pages)){
            if(in_array($page,$valid_nohtml_pages)) {
                include("./php/".$page.".php");
                exit();
            }
            else $page = "401";
        }
    }
    //include general page header
    //...

    //include page-specific PHP and HTML
    include("./php/".$page.".php");

    //include general page footer
    //...


In plaats van 401.php kun je ook een echte 401 gooien natuurlijk.

TabCinema : NiftySplit


  • wiene
  • Registratie: Maart 2007
  • Laatst online: 25-09 19:09
Bozozo schreef op donderdag 20 november 2008 @ 09:49:
In plaats van een switch kun je ook een array gebruiken. Scheelt weer schrijfwerk.

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
26
27
    $page = $_GET['title'];
    if (strlen($page)==0) $page = "home";
    else {
        $page == strtolower($page);

        //actual pages:
        $valid_full_pages = Array("home","upload","image","info","news");

        //AJAX pages etc
        $valid_nohtml_pages = Array("showimage","requestascii","requestupload","setactiveimage");
        
        if(!in_array($page,$valid_full_pages)){
            if(in_array($page,$valid_nohtml_pages)) {
                include("./php/".$page.".php");
                exit();
            }
            else $page = "401";
        }
    }
    //include general page header
    //...

    //include page-specific PHP and HTML
    include("./php/".$page.".php");

    //include general page footer
    //...


In plaats van 401.php kun je ook een echte 401 gooien natuurlijk.
Dat is wel een goed idee, scheelt uiteindelijk weer werk als je een nieuwe link maakt.

Acties:
  • 0 Henk 'm!

  • wiene
  • Registratie: Maart 2007
  • Laatst online: 25-09 19:09
Ik heb nu middels onderstaande gewerkt, ik loop echter tegen een probleem aan.
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
<?php
switch ($_GET['link']) {
  case "nieuws":
    $file="nieuws.html";
    break;
  case "contact":
    $file="contact.html";
    break;
  default:
   $file="home.html";
}
include($file);
?>


Ik heb eigenlijk exact deze code. Probleem is dat mijn nieuws in een directory staat. dus bijvoorbeeld ./nieuws/nieuws.html

in de map nieuws staat dan weer een mapje met foto's dus: ./nieuws/fotos in de nieuws.html link ik dan naar die map door gewoon /fotos te zeggen.

Nu laat hij echter in mijn include die foto's niet zien omdat hij de afbeelding zoekt in ./fotos en niet in ./nieuws/fotos.

Is dit makkelijk op te lossen? Ik heb al vanalles geprobeerd, directorys openen etc. maar het lukt me niet. Waarom is dit niet gewoon hetzelfde als gewone pagina openen?

Met een iframe werkte het dus wel.

Acties:
  • 0 Henk 'm!

Verwijderd

Je laat php nu gewoon de inhoud van nieuws.html doorgeven. Ook al staat dat bestand in /home, de inhoud blijft hetzelfde. je moet dus gewoon verwijzen naar nieuws/fotos/. Je zou ook mod_rewrite kunnen gebruiken (nog beter).

Acties:
  • 0 Henk 'm!

  • imp4ct
  • Registratie: November 2003
  • Laatst online: 06-09 22:19
Lang leven smarty en templates!

Ik gebruik mod_rewrite om mijn URL uit te lezen en hierna gaat het systeem zelf uitfilteren of de template wel bestaat, zo niet .. error message. Geen probleem als je dan nieuwe pagina's aanmaakt, want je moet dit nergens in een switch bijvoegen what so ever.

Bedrijf : Webtrix

Foto materiaal:
Nikon D7100 | Nikor AF-S DX 18-105mm | Nikor AF-S 50mm | Nikon SB600

Pagina: 1