|
|
|
Skapa unika länkar med frames i PHPDet största problemet med frames är att sidor som egentligen ska öppnas i en frame öppnas i ett eget fönster, vilket gör att sidorna ofta ser konstiga ut. Det finns javascript som kontrollerar att en sida som ska visas i en frame verkligen visas i en frame. Gör den inte det, så skickas man till startsidan. I denna artikeln ska jag beskriva hur man kan se till att en sida verkligen hamnar i rätt frame, utan att man skickas till startsidan.Det vanliga javascriptetDet vanliga javascriptet för att se så att en sida ligger i sin frame ser ut så här:
<script type="text/javascript">
if (parent.location.href == location.href)
{
//Sidan är öppnad utanför sin frame,
//skicka tillbaka till förstasidan
location.href="index.php";
}
</script>
Detta gör som sagt bara att man skickas till förstasidan, och man får inte se den sida man egentligen ville se. Detta kan göra att besökaren blir frustrerad och lämnar sidan. Istället ska vi se till att besökaren verkligen får se sidan han/hon ville se, och i rätt frame dessutom.
LösningenNu ska vi lägga till en kod som skickar med vilken sida det var man försökte titta på.
<script type="text/javascript">
if (parent.location.href == location.href)
{
//Sidan är öppnad utanför sin frame,
//skicka tillbaka till förstasidan
location.href="index.php?page="+
+"<?php echo $_SERVER['REQUEST_URI'] ?>";
}
</script>
Låg säga att man går in på www.sida.se/frame_pages/page.php. Då skickas man till www.sida.se/index.php?page=/frame_pages/page.php. Index.php är förmodligen en sida med ett frameset på, som kan se ut så här:
<html> <body> <frameset> <frame name="top" src="top.php"> <frame name="main" src="main.php"> </frameset> </body> </html>Nu ska vi modifiera detta, så att sidan som besökaren egentligen ville se, öppnas i framen "main".
<?php
//Ser ifall besökaren velat se en speciell sida, och
//ser till att den sidan verkligen finns
if(isset($_GET['page']) && file_exists($_GET['page']))
{
$page = $_GET['page'];
}
else
{
$page = 'main.php';
}
?>
<html>
<body>
<frameset>
<frame name="top" src="top.php">
<frame name="main" src="<?php echo $page ?>">
</frameset>
</body>
</html>
AvslutningEgentligen ska man försöka att undvika att använda frames, men har man en sida med det, och inte har tid att bygga om den så fungerar detta bra. Man ska även se till att man inte kan öppna vilka sidor som helst. Genom att t.ex. skriva index.php?page=index.php så får man förstasidan att öppnas i framen, vilket inte är önskvärt. Se då till att alla sidor som ska kunna öppnas i en frame ligger i en speciell mapp, och kontrollera att $_GET['page'] börjar med den mappen. Det kan du göra genom att med substr() plocka ut de första bokstäverna i $_GET['page'], och kontrollera att det är rätt mapp. Med detta sätt får du unika länkar som du kan skapa sajtkartor med. Du kan med fördel skriva ut de unika länkarna på varje sida, så att besökaren har en direktlänk att skicka till någon som den vill tipsa. Skriven av:Anders Ekdahl, Ekdahl IT Webbplats: Webbdesign Se fler PHP guider Kommentarer Antal 0 Medelpoäng 0/10Bli medlem för att kunna skriva kommentarer! Logga in om du redan är medlem. |
|
|
|
![[XML]](/images/xml.gif)
Svenska webhosts:
Använd gärna denna länk för att länka till oss: