erlingkilli Skrevet 20. november 2008 Del Skrevet 20. november 2008 Hei Jeg har et lite problem med en hjemmeside jeg lager på skolen. Jeg har laget et include script som skal legge hoved innholde på den siden man er på inn i en table collum og kun endre innholdet inni den kolonnen om man trykker på en link. I tilegg vil jeg at det skal være mulig å endre stilark slik at folk med dårlig syn enten kan velge et stilark med større font, eller et annet stilark med høykontrast farger. Skriptet jeg inkluderer med ser slik ut: <?php function main () { // Variabler $Default = "hoved"; $Folder = "phpfiler/"; // Ser om en fil er etterspurt av bruker if (isset ($_GET['page'])) { // Får tak i og validerer sidevariabelen $Page = ($Page = substr (strtolower (preg_replace ('([^a-zA-Z])', '', $_GET['page'])), 0, 20)) ? $Page : $Default; } else { // Om ikke, bruk hovedsida $Page = $Default; } // Sette opp hele linken $Page = $Folder . $Page . ".php"; // Ser om filen kan bli lest if (file_exists ($Page) && is_readable ($Page)) { // Om den er, kjører den siden include ($Page); } else { // Viser 404 error $Output = "<h1>404 Not found</h4>\n<p>Finner ikke siden.</p>\n"; } // Sender fila echo $Output; } // Kjører main funksjonen. main (); ?> Som jo leser av url baren og tar det som står etter index.php?page=XXXX og legger innholdet inn der jeg vil ha det. I tilegg bruker jeg følgende link til .css dokumentene mine: I headen har jeg: <link rel="stylesheet" type="text/css" href="<?php if(isset($style)) { echo $style; } else { echo 'style.css';} ?>" /> Og for linkene har jeg: <a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=stil';?>">Vanlig stil</a> <a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=stilbig';?>">Vanlig stil stor</a> <a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=hoykontrast';?>">Høykontrast</a> <a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=hoykontrastbig';?>">Høykontrast stor</a> Som gjør at jeg kan skrive index.php?style=style, og bruke de vanlige stilarket, eller index.php?style=hoykontrast osv. Det fungerer også med index.php?style=style&page=hoved. Og til slutt har jeg et lite php script som loades slik i index.php siden: <? require_once('switcher.php'); ?> Som ser slik ut: <?php if(isset($_COOKIE['styleSet'])) { $style = $_COOKIE['styleSet']; } else { $style = 'style.css'; } if(isset($_GET['style']) && ($_GET['style'] == 'stil')) { $style = 'style.css'; setcookie('styleSet', '', time()-(60*60)); } if(isset($_GET['style']) && ($_GET['style'] == 'hoykontrast')) { $style = 'hoykontrast.css'; setcookie('styleSet', '', time()-(60*60)); } if(isset($_GET['style']) && ($_GET['style'] == 'stilbig')) { $style = 'stylebig.css'; setcookie('styleSet', '', time()-(60*60)); } if(isset($_GET['style']) && ($_GET['style'] == 'hoykontrastbig')) { $style = 'hoykontrastbig.css'; setcookie('styleSet', '', time()-(60*60)); } setcookie('styleSet', $style, (time()+(60*60*24*7*2)), '/'); ?> Spørsmålet hvordan skal jeg modde linkene til å la meg loade høykontrast stilarket uten å hoppe tilbake til hovedsiden min. Mvh Erling Lenke til kommentar
OISNOT Skrevet 20. november 2008 Del Skrevet 20. november 2008 Er dette noe hjelp? Lenke til kommentar
Martin A. Skrevet 20. november 2008 Del Skrevet 20. november 2008 Legg til $_SERVER['QUERY_STRING'] på slutten av lenkene. Lenke til kommentar
itsmebth Skrevet 20. november 2008 Del Skrevet 20. november 2008 For det første: Søk etter include-script på forumet her. Det du bruker nå er ikke trygt! For å få den til å huske siden kan du legge til $_SERVER['query_string']. Lenke til kommentar
erlingkilli Skrevet 20. november 2008 Forfatter Del Skrevet 20. november 2008 Altså da: <a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?$_SERVER['query_string']style=stil';?>">Vanlig stil</a> eller: <a class="test" href="<?php echo $_SERVER['PHP_SELF'].'?style=stil';?$_SERVER['query_string']>">Vanlig stil</a> Lenke til kommentar
itsmebth Skrevet 20. november 2008 Del Skrevet 20. november 2008 "?{$_SERVER['QUERY_STRING']}&style={$style}" Lenke til kommentar
Harald B Skrevet 20. november 2008 Del Skrevet 20. november 2008 $Page = ($Page = substr (strtolower (preg_replace ('([^a-zA-Z])', '', $_GET['page'])), 0, 20)) ? $Page : $Default; Kunne med fordel delt opp dette litt. Makan til uoversiktlig kode. Lenke til kommentar
erlingkilli Skrevet 21. november 2008 Forfatter Del Skrevet 21. november 2008 Takk for hjelpen, beklager rotete kode. Lenke til kommentar
erlingkilli Skrevet 21. november 2008 Forfatter Del Skrevet 21. november 2008 Siden dere allerede vet koden min, og hva jeg har gjort er det en ting til jeg lurer på. Allt på siden fungerer nå, men det er enda en liten bug. Jeg prøvde å lage linken slik: <a class="test" href="<?php echo "?{$_SERVER['QUERY_STRING']}&style={$style}";?>">Vanlig stil</a> Da fungerte ingen ting, men derimot: <a class="test" href="<?php echo "?{$_SERVER['QUERY_STRING']}&style=style";?>">Vanlig stil</a> Fungerte. Problemet er nå at om jeg åpner en side, endrer stilark og prøver å endre til et annet stilark uten å loade en ny side blir linkene og selve URLen lenger, og siden validerer ikke lengre i XHTML(som er et krav). slik: Vanlig side: index.php om jeg trykker på linken til hovedsiden: index.php?page=hoved første stilark bytte: index.php?page=hoved&style=style neste bytte uten å laste en annen side: index.php?page=hoved&style=style&style=style og neste link, linker mot: ?page=hoved&style=style&style=style&style=style Kan jeg bruke regexp som i include scriptet på en måte som henter hva stylen er nå og bare bytter det ut isteden for å skrive det etter det som allerede står? Takk for all hjelp! Erling Haugstad Lenke til kommentar
TheClown Skrevet 28. november 2008 Del Skrevet 28. november 2008 (endret) Skjønner ikke hvorfor du gjør det på den måten. Du kan gjøre det enkelere 1. Behold navn på fil/side/script i linkene 2. Når du klikker linken skjekker scriptet om du har satt ?style, hvis du har det skifter den style til det som er valgt, samtidig skjekker den om det er satt noe i ?redirec (rename hvis du vil). Hvis det er satt noe i redirect echoer den Header ("Location: $_GET[redirect]"); Da vil ikke URLen ha noe i URLen som sier at den har skiftet style. det blir en ekstra reload på siden, men jeg mener at denne løsningen er bedre enn å beholde ?style=blabla i URLen som er unødvendig og stygt. Ser nå at header-scriptet ikke ville fungert helt, men du kunne gjort det delevis ved å echoe et javascript (bruker det ofte i mine script selv) echo "<script type='text/javascript'> window.location = 'http://www.URL/$_GET[redirect].php' </script>"; Endret 28. november 2008 av TheClown Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå