Avatar billede dennism Nybegynder
14. april 2005 - 15:55 Der er 9 kommentarer og
1 løsning

PHP: Vis frameset

Jeg har en side med et frameset. I koden til min main-frame har jeg følgende kode:

<SCRIPT type=text/javascript>
if (top.location == document.location) document.location = 'http://127.0.0.1/docs/cykelkom/?contents=<? $link = "http://".$_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']; print "$link"; ?>';
</SCRIPT>

I mit frameset har jeg så:

<frame src="<? if (isset($_GET["contents"])) { print $_GET['contents']; } else echo "main.php?page=start"; ?>" name="main"...

Meningen er, at når main-siden ikke er vist i mit frame, så skal den hente frameset'et og finde den foregående side i frameset'et. Dette virker også helt perfekt, hvis f.eks. jeg åbner "main.php?page=com". Men hvis jeg så istedet åbner "main.php?page=com&show=user" så er det kun "main.php?page=com" der bliver åbnet i framen, da &'et jo afbryder variablen.

Kan I se hvad problemet er - eller så sig endelig til?

Hvordan kan jeg gøre, for at få dette til at virke som jeg ønsker? Det må være en løsning - har set mange steder på nettet hvor de bruger noget ala dette.
Avatar billede sostack Nybegynder
14. april 2005 - 16:05 #1
Jeg går ud fra, at du skal have page=com i det ene frame, og show=user i det andet.
Når du bruger $_GET["contents"] får du jo ikke fat i det hele.
Du skal bruge $_GET["page"] og $_GET["show"] for at være sikker på, det er de rigtige variabler du får fat i!

//sostack
Avatar billede dennism Nybegynder
14. april 2005 - 16:09 #2
Nej, jeg skal have url'en main.php?page=com&show=user i min main-frame.
Avatar billede dennism Nybegynder
14. april 2005 - 16:12 #3
Jeg har nu selv lave et lille forslag, men er lidt usikker på det. Synes det virker mærkeligt, at der ikke er en smartere måde at gøre det på.

<SCRIPT type=text/javascript>
if (top.location == document.location) document.location = 'http://127.0.0.1/docs/cykelkom/?contents=<? $url = str_replace("?", "[HTML63]", $_SERVER['REQUEST_URI']); $url = str_replace("&", "[HTML38]", $url); $link = "http://".$_SERVER['HTTP_HOST'].$url; print "$link"; ?>';
</SCRIPT>

Som I kan se, så ændrer jeg ? i adressen til [HTML63] og & til [HTML38]. I mit frameset kører jeg så:

if (!empty($_GET[contents])) {
$_GET[contents] = str_replace("[HTML63]", "?", $_GET[contents]);
$_GET[contents] = str_replace("[HTML38]", "&", $_GET[contents]);
}

Denne løsning gør, at det virker som det skal. Men kan det ik lavet på en smartere måde?
Avatar billede dennism Nybegynder
14. april 2005 - 16:39 #4
Min metode er dog heller ikke helt perfekt..kan se at den går i kage nogle gange!
Avatar billede sostack Nybegynder
14. april 2005 - 18:56 #5
Skal du have begge dele i din frame, skal du bruge $_REQUEST["page"] && $_REQUEST["show"];

//sostack
Avatar billede dennism Nybegynder
15. april 2005 - 07:24 #6
Problemet er, at jeg jo ikke ved hvilke varialber der er i min $contest!
Avatar billede sostack Nybegynder
15. april 2005 - 07:43 #7
Så skal du lave en FOREACH($_REQUEST AS $navn => $værdi)
{
  gør et eller andet ved den;
}

//sostack
Avatar billede dennism Nybegynder
15. april 2005 - 13:33 #8
Hvordan havde du forestillet dig, at det skal laves, for at det virker i mit tilfælde?
Avatar billede dennism Nybegynder
18. april 2005 - 15:44 #9
kan du ikke hjælpe?
Avatar billede dennism Nybegynder
04. maj 2005 - 15:59 #10
.lukker
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester