WN

WN (https://www.wn.se/forum/index.php)
-   Serversidans teknologier (https://www.wn.se/forum/forumdisplay.php?f=4)
-   -   PHP-snutt funkar inte (https://www.wn.se/forum/showthread.php?t=29986)

alejandr0 2008-06-17 14:35

Hey! Har haft en hemsida jag gjort på min egen server men vi har nu flyttat den till klientens host, Active24 med ett linuxpaket. Funkar helt bra, förutom funktionen att menyalternativen skall bli röda (görs såklart i CSS) då man befinner sig på den filen. Menyn finns i en skild fil och inkluderas.

inc-navigation.php
Kod:

<?php $page = basename($_SERVER['SCRIPT_NAME']); ?>
<ul>
<li><a href="sida1.php" <?php if ($page == 'sida1.php') { ?>class="active"<?php } ?>>Sida 1</a></li>
<li><a href="sida2.php" <?php if ($page == 'sida1.php') { ?>class="active"<?php } ?>>Sida 2</a></li>
<li><a href="sida3.php" <?php if ($page == 'sida3.php') { ?>class="active"<?php } ?>>Sida 3</a></li>
</ul>

<?php $page = basename($_SERVER['SCRIPT_NAME']); ?> tar reda på vilken fil man befinner sig på så att följande koder fungerar, alltså <?php if ($page == 'sida1.php') { ?>class="active"<?php } ?> kollar om man är på sida1 och om man är det läggs class="active" till i länken.


Detta funkade perfekt på min server, men på Active24 tycks man strunta i min kod och länkarna förblir vita och inte röda när man befinner sig på just den och den sidan. Vad ska jag göra? Finns det någon annan kodlösning :unsure: ?

tartareandesire 2008-06-17 14:47

Har inte kollat koden närmare men skriv ut basename($_SERVER['SCRIPT_NAME']) och se efter vad du får för resultat.

Jonathan P 2008-06-17 15:05

Prova att byta ut
Kod:

basename($_SERVER['SCRIPT_NAME']);
mot
Kod:

basename($_SERVER[''SCRIPT_FILENAME']);
eller
Kod:

basename(__FILE__);

alejandr0 2008-06-17 15:21

Jag böt ut <?php $page = basename($_SERVER['SCRIPT_NAME']); ?> mot <?php $page = basename($_SERVER['PHP_SELF']); ?> och detta funkar tydligen hos Active24. Hann inte prova Jonathans förslag tyvärr :)

Jonas 2008-06-18 15:16

$_SERVER['PHP_SELF'] är deprecated, enligt PHP teamet.

Mycket osäkert. $_SERVER['SCRIPT_FILENAME'] skall användas.

Magnus_A 2008-06-18 15:32

Om man tittar i responsen från phpinfo() så står det vilka variabler som finns och vad de innehåller.

tartareandesire 2008-06-18 16:14

Citat:

Originally posted by Jonas@Jun 18 2008, 15:16
_SERVER[PHP_SELF] är deprecated, enligt PHP teamet.
Mycket osäkert. _SERVER[SCRIPT_FILENAME] skall användas.

Var hittar du det? Jag skulle inte vilja säga att det är "mycket osäkert", det har fungerat i samtliga fall jag använt det.

Det finns med i dokumentationen på php.net utan närmare kommentarer:

Se här

tartareandesire 2008-07-10 19:48

*bump*

$_SERVER['PHP_SELF'] är väl inte föråldrat?

Ytterligare en kommentar: __FILE__ kan inte användas i inkluderade funktioner eftersom den då kommer att innehålla sökvägen till den inkluderade filen.

Jonas 2008-07-10 19:58

tartare: Fel av mig, inte deprecated, utan mer klassad som osäker pga XSS. Ber om ursäkt.

Med tanke på datumet under (i länken) så har detta funnits med ett tag.

http://www.sitepoint.com/blogs/2006/01/24/...s-or-dumb-apis/


Alla tider är GMT +2. Klockan är nu 23:10.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson