Avatar billede lothario Nybegynder
02. marts 2006 - 12:48 Der er 78 kommentarer og
1 løsning

Check frames

Det her spørgsmål er sikkert stillet 1000 gange, men kan ikke lige komme på hvad søgeordene skulle være.
Jeg har nogle sider der bliver loadet i en iframe. Jeg vil gerne sikre mig, at siderne ikke kan åbnes alene.
Dvs hvis det er 'menu.php' der er placeret i iframe i 'index.php', og 'menu.php' åbnes for sig selv, skal den checke om den er en del af 'index.php' iframen, og hvis ikke, så loader den 'index.php'.

Lige et tillægsspørgsmål. Hvis nu jeg har åbnet 'shop.php' alene, den checker om den er i iframe, det er den ikke, og loader 'index.php'. Men da 'index.php' jo har 'menu.php' som standard, kommer man jo væk fra 'shop.php'. Jeg har set på forskellige hjemmesider, de bruger en kode i adresselinjen, f.eks www.lllll.com/index.php?page='shop.php'. Sådan vil jeg gerne have det, så når man skriver ovenstående, loades 'shop.php' ind i iframen på 'index.php'. Men hvordan gør jeg det?

Håber jeg har gjort mig forståelig.
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:05 #1
Jeg ville lægge alle de filer du includer i en undermappe.
Så ville jeg i selve undermappen, lave en fil ved navn .htaccess som inderholder:

Order allow,deny
Allow from none
Deny from all
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:06 #2
Vær opmærksom på at filen skal hedde .htaccess

Ikke:
noget.htaccess
.htaccess.txt
htaccess.php
osv.

KUN .htaccess
Avatar billede lothario Nybegynder
02. marts 2006 - 13:07 #3
Du må desværre være nødt til at være lidt mere pædagogisk. Alle de filer jeg includer, er det de filer der skal loades i iframen?
Avatar billede lothario Nybegynder
02. marts 2006 - 13:09 #4
Men problemet er, det er en musik-hjemmeside, med omkring 30 bands, og hvert band har sin egen folder. Kan jeg bare kopiere .htaccess til alle folderne?
Avatar billede mm12010 Nybegynder
02. marts 2006 - 13:10 #5
det kan oz laves i javascript, se fx. hvor elegant roenving knækker nøden her:
http://roenving.users.whitehat.dk/?/Kode/FramingKode.html
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:13 #6
Ja, det med .htaccess kan du ikke bruge når det er iframe, jeg læste ikke lige spørgsmålet ordentligt... Tænkte på at du includede dine filer vha. php funktionen include();

da du ikke gør det, så brug forslaget fra mm12010
Avatar billede lothario Nybegynder
02. marts 2006 - 13:15 #7
ok, tak, det prøver jeg. hvad med nummer 2 spørgsmål, har i en ide der?
Avatar billede lothario Nybegynder
02. marts 2006 - 13:15 #8
eller er det en samlet løsning der? øhh, checker lige
Avatar billede lothario Nybegynder
02. marts 2006 - 13:29 #9
OK, nu har jeg testet det. Den første del virker fint :) Men når den så returnerer til index, står der dette i adresselinjen:

http://www.*****.com/public/index3.php?/public/BKR/highvoltage/

Og siden ser ud som fra start. Jeg poster lige den rettede kode:

<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
    top.frames['main'].location.href=src;            <----mit iframe hedder main
  }}
</script>

<script language="javascript" type="text/javascript">
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/")+4)+"/index3.php?"+escape(location.pathname))}
</script>

Ændret '.dk' til '.com' og rettet 3 til 4, +retter index.html til min index-side. Det øverste script er sat ind i <head> af index3.php, det nederste i <head> af index.php i highvoltage folderen. Er der noget jeg har overset?
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:31 #10
Og hvad skal der stå?
Avatar billede lothario Nybegynder
02. marts 2006 - 13:32 #11
hov, der hvor der står .com, er det .com/public/")+11
Avatar billede lothario Nybegynder
02. marts 2006 - 13:33 #12
Forstår ikke helt, 'hvad skal der stå'... Hmm, vent lige, fik lige en ide
Avatar billede lothario Nybegynder
02. marts 2006 - 13:38 #13
OK, ny situation. Ahem...

Fejlen jeg gjorde før, var at sætte onLoad(LoadSource()); ind i <body> på index3.php. Da jeg satte den ind under <iframe> virkede det. Men desværre med en sideeffekt. Nu genloader den konstant siden inde i iframen. Ideer?
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:40 #14
Sæt den tilbage i body, og brug denne kode, har rettet lidt:

<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
    top.frames['main'].location.href=src;            <----mit iframe hedder main
  }}
</script>

<script language="javascript" type="text/javascript">
  var expathname = escape(location.pathname);
  expathname = expathname.replace("/public", "");
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index3.php?"+expathname);}
</script>
Avatar billede lothario Nybegynder
02. marts 2006 - 13:44 #15
Tjaa, nu loader den kun iframe én gang, men den viser en 'The page cannot be found'. Adresselinket er ændret til:
http://www.******.com/public/index3.php?/BKR/highvoltage/
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:45 #16
<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
    top.frames['main'].location.href=src;            <----mit iframe hedder main
  }}
</script>

<script language="javascript" type="text/javascript">
  var expathname = escape(location.pathname);
  expathname = expathname.replace("/public", "");
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index3.php?page="+expathname);}
</script>
Avatar billede lothario Nybegynder
02. marts 2006 - 13:49 #17
stadig det samme...
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:49 #18
vel ikke det samme link..
Avatar billede lothario Nybegynder
02. marts 2006 - 13:50 #19
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:52 #20
er det ikke også der den skal gå hen, eller hvad burde den gå til?
Avatar billede amews_aj Nybegynder
02. marts 2006 - 13:52 #21
<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
    top.frames['main'].location.href=src;            <----mit iframe hedder main
  }}
</script>

<script language="javascript" type="text/javascript">
  var expathname = escape(location.pathname);
  expathname = expathname.replace("/public", "");
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index.php?page="+expathname);}
</script>
Avatar billede lothario Nybegynder
02. marts 2006 - 13:56 #22
nu kan den slet ikke loade hovedsiden index3.php.

http://www.bk-recordings.com/public/index.php?page=/BKR/highvoltage/

har også prøvet at ændre din til indes3.php, giver samme resultat som før
Avatar billede lothario Nybegynder
02. marts 2006 - 13:57 #23
Hov, nu skjulte jeg ikke linket mere... nå, men så kan i vel se hvad jeg snakker om
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:00 #24
Ja det var faktisk rart for mig. Du har sat koderne ind de forkerte steder...

Dette skal stå i din index3.php som det allerede gør:
<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
    top.frames['main'].location.href=src;            <----mit iframe hedder main
  }}
</script>




Dette skal stå i alle de filer der bruges i iframen, og altså ikke i index3.php
<script language="javascript" type="text/javascript">
  var expathname = escape(location.pathname);
  expathname = expathname.replace("/public", "");
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index3.php?page="+expathname);}
</script>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:01 #25
Det er det her link der burde virke:

http://www.bk-recordings.com/public/BKR/highvoltage
Avatar billede lothario Nybegynder
02. marts 2006 - 14:02 #26
Ja, jeg har indsat det nederste i /BKR/highvoltage/index.php
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:04 #27
Prøv bare at fjerne onload og dette fra din index3.php:

<script language="javascript" type="text/javascript">
  function loadSource(){
  if (location.search!=""){
    src=unescape(location.search.substring(1));
    top.frames['main'].location.href=src;            <----mit iframe hedder main
  }}
</script>
Avatar billede mclemens Nybegynder
02. marts 2006 - 14:05 #28
Indsæt i starten af index.php filen
(php filen der kalder framen)
$godkendframe="ok";

I den kaldte php fil:
if(!isset($godkendframe))
{header("Location:http://www.bla_bla-bla.xyz/?page=".$PHP_SELF);exit;}

(kan godt ske det kun virker ved include $page)...
... Hvis det ikke virker  så prøv:


Indsæt i starten af index.php filen
(php filen der kalder framen)
$_SESSION[godkendframe]="ok";

Indsæt i bunden af index.php filen
(php filen der kalder framen)
$_SESSION[godkendframe]="falsk";

I den kaldte php fil:
session_start();
if((!isset($_SESSION[godkendframe]))||($_SESSION[godkendframe]!="ok"))
{header("Location:http://www.bla_bla-bla.xyz/?page=".$PHP_SELF);exit;}
Avatar billede lothario Nybegynder
02. marts 2006 - 14:06 #29
Så sker der ikke rigtig noget. Adresselink:
http://www.bk-recordings.com/public/index3.php?page=/BKR/highvoltage/
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:07 #30
Det hjælper ikke mclemens, for $_SESSION kan tilgås overalt fra siden, og dermed vil man kunne komme ind på underlinks, ved bare at have været inde på hovedsiden 1 gang i browservinduet.
Avatar billede mclemens Nybegynder
02. marts 2006 - 14:07 #31
Hov man kan ikke redigere :/

2 nederste afsnit skal måske ændres til:

I den kaldte php fil:
session_start();
if((!isset($_SESSION[godkendframe]))||($_SESSION[godkendframe]!="ok"))
{header("Location:http://www.bla_bla-bla.xyz/?page=".$PHP_SELF);exit;}

og i bunden af den kaldte php fil
$_SESSION[godkendframe]="falsk";
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:10 #32
ja ok mclemens, så fjerner du den igen i php filen, det kan du gøre...

Mht. den anden kode, så prøv at skrive sådan i din index3.php:

<?php
$aktuel_side = $_GET['page'];
if ( $aktuel_side == "" ) {
  $aktuel_side = "news/index.php";
}
?>
<iframe style="border:0px solid #000000"  src="<?php echo $aktuel_side; ?>"  BORDER="0" frameborder="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" width="378" height="1069" name="main" align="middle"></iframe>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:14 #33
mclemens 1. forslag: når jeg klikker på
http://www.bk-recordings.com/public/BKR/highvoltage
kommer der bare en tom side. tester 2. forslag nu.
Avatar billede lothario Nybegynder
02. marts 2006 - 14:19 #34
hov lavede en fejl med den første. men den anden viser bare den almindelige forside, men adresse-linjen er: http://www.bk-recordings.com/public/BKR/highvoltage/

tester den første igen
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:21 #35
Det eksempel jeg skrev burde helt bestemt virke.... Sikker på det gjorde det rigtigt også?
Avatar billede lothario Nybegynder
02. marts 2006 - 14:22 #36
første har samme resultat som nr. 2. tester aj's nye
Avatar billede mclemens Nybegynder
02. marts 2006 - 14:22 #37
.htaccess
RewriteEngine on
RewriteRule ^([0-9a-zA-Z/-]+)/$ index.php
RewriteRule ^([0-9a-zA-Z/-]+)index.php index.php

I den originale php fil med iframen:
(php filen der kalder framen)

$_SESSION[godkendframe]="ok";

$page="";$page=ereg_replace("[]<>':\+,&;\"()[]",".",$_GET[page]);
if($page!=""){?><iframe bla bla src="<?php echo $page; ?>"  bla bla></iframe><?}



Det lyder nok lidt besværligt, men kan du definere sidens navn i den kaldte php fil?
session_start();
if((!isset($_SESSION[godkendframe]))||($_SESSION[godkendframe]!="ok"))
{header("Location:http://www.bla_bla-bla.xyz/index.php?page=den-side-du-vil-have.php");exit;}

$_SESSION[godkendframe]="falsk";

(jeg bruger noget lignende ... undgår så vidt muligt javascript :/ )
Avatar billede lothario Nybegynder
02. marts 2006 - 14:26 #38
Resultat af aj's nye:
http://www.bk-recordings.com/public/index3.php
http://www.bk-recordings.com/public/BKR/highvoltage

tom side i main

(satte denne kode tilbage i /highvoltage/index.php
<script language="javascript" type="text/javascript">
  var expathname = escape(location.pathname);
  expathname = expathname.replace("/public", "");
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index3.php?page="+expathname);}
</script>

Men ikke den øverste ind i index3.php, skulle jeg det?)
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:28 #39
Nej, men jeg tror du har skrevet noget forkert, for den giver ingen side i iframen, hvilket jeg har sat den til uanset hvad, prøv lige direkte at kopiere koden herind..
Avatar billede lothario Nybegynder
02. marts 2006 - 14:29 #40
Må jeg lige kommentere at jeg er utrolig taknemmelig for jeres hjælp her, og så så hurtigt :) Må håbe vi får det løst
Avatar billede lothario Nybegynder
02. marts 2006 - 14:30 #41
"prøv lige direkte at kopiere koden herind.." Jeg kopierede din kode ind i filen. Eller vil du have hele koden postet her?
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:31 #42
Jeg vil gerne se koden fra din index3.php, i hvert fald området omkring iframe'et
Avatar billede lothario Nybegynder
02. marts 2006 - 14:32 #43
UPS..glemte at gemme inden jeg uploadede.:) Nu gør den som før. Stadig almindelig forside..
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:32 #44
<?php
$aktuel_side = $_GET['page'];
if ( $aktuel_side == "" ) {
  $aktuel_side = "news/index.php";
}
?>
<iframe style="border:0px solid #000000"  src="<?php echo $aktuel_side; ?>"  BORDER="0" frameborder="0" FRAMESPACING="0" MARGINHEIGHT="0" MARGINWIDTH="0" width="378" height="1069" name="main" align="middle"></iframe>
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:35 #45
<script language="javascript" type="text/javascript">
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index3.php?page="+escape(location.pathname));}
</script>
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:36 #46
Brug den i highvoltage
Avatar billede lothario Nybegynder
02. marts 2006 - 14:36 #47
Med den nye kode loader en 'The page cannot be found' side i main...
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:36 #48
Som jeg lige har skrevet, så sæt dette ind i highvoltage:

<script language="javascript" type="text/javascript">
  if(top.location==window.location){top.location.replace(top.location.href.substring(0,top.location.href.indexOf(".com/public/")+11)+"/index3.php?page="+escape(location.pathname));}
</script>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:36 #49
JAAAAAAAAA!!!!!
Avatar billede lothario Nybegynder
02. marts 2006 - 14:37 #50
Nu lader det til det virker.
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:37 #51
Og så lige en ting mere...

For at den side med page not found ikke skal komme, så lav lige php koden om til:

<?php
$aktuel_side = $_GET['page'];
if ( $aktuel_side == "" OR !FILE_EXISTS($aktuel_side)) {
  $aktuel_side = "news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:38 #52
Så må i lige lave svar, i måtte nu gerne have fået flere point for den hjælp.
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:38 #53
<?php
$aktuel_side = $_GET['page'];
if ( $aktuel_side == "" OR !file_exists($aktuel_side)) {
  $aktuel_side = "news/index.php";
}
?>
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:40 #54
<?php
$aktuel_side = $_GET['page'];
$r_aktuel_side = str.replace("/public", "", $aktuel_side);
if ( $aktuel_side == "" OR !file_exists($r_aktuel_side)) {
  $aktuel_side = "news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:40 #55
hov, den nye kode virker ikke
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:40 #56
<?php
$aktuel_side = $_GET['page'];
$r_aktuel_side = str.replace("/public", "", $aktuel_side);
if ( $aktuel_side == "" OR !file_exists($r_aktuel_side)) {
  $aktuel_side = "news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:42 #57
nej, stadig ikke
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:43 #58
<?php
$aktuel_side = $_GET['page'];
$r_aktuel_side = str_replace("/public", "", $aktuel_side);
if ( $aktuel_side == "" OR !file_exists($r_aktuel_side)) {
  $aktuel_side = "news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:44 #59
Jeg kan heller ikke se problemet med den første kode, den bliver først redirected, hvis siden jo eksisterer
Avatar billede lothario Nybegynder
02. marts 2006 - 14:44 #60
virker heller ikke
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:49 #61
<?php
$aktuel_side = $_GET['page'];
if ( !ereg("/public", $aktuel_side ) {
  $aktuel_side = "/public" . $aktuel_side;
}
if ( !ereg(".php", $aktuel_side ) {
  $aktuel_side = $aktuel_side . "index.php";
}
$r_aktuel_side = str_replace("/public", "", $aktuel_side);
if ( $aktuel_side == "" OR !file_exists($r_aktuel_side)) {
  $aktuel_side = "/public/news/index.php";
}
?>
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:50 #62
<?php
$aktuel_side = $_GET['page'];
if ( !ereg("/public", $aktuel_side ) {
  $aktuel_side = "/public" . $aktuel_side;
}
if ( !ereg(".php", $aktuel_side) && !ereg(".html", $aktuel_side) && !ereg(".htm", $aktuel_side) {
  $aktuel_side = $aktuel_side . "index.php";
}
$r_aktuel_side = str_replace("/public", "", $aktuel_side);
if ( $aktuel_side == "" OR !file_exists($r_aktuel_side)) {
  $aktuel_side = "/public/news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:51 #63
Parse error: syntax error, unexpected '{' in D:\Inetpub\webs\bk-recordingscom\public\index3.php on line 3
Avatar billede lothario Nybegynder
02. marts 2006 - 14:52 #64
Samme fejl med nr. 2
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:52 #65
<?php
$aktuel_side = $_GET['page'];
if (!ereg("/public", $aktuel_side)) {
  $aktuel_side = "/public" . $aktuel_side;
}
if (!ereg(".php", $aktuel_side) && !ereg(".html", $aktuel_side) && !ereg(".htm", $aktuel_side)) {
  $aktuel_side = $aktuel_side . "index.php";
}
$r_aktuel_side = str_replace("/public", "", $aktuel_side);
if ( $aktuel_side == "" OR !file_exists($r_aktuel_side)) {
  $aktuel_side = "/public/news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:53 #66
nope, desværre. er det ved at blive en principsag? du har løst det for mit vedkommende.
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:54 #67
hehe, jah, bare vend tilbage til:

<?php
$aktuel_side = $_GET['page'];
if ( $aktuel_side == "" ) {
  $aktuel_side = "/public/news/index.php";
}
?>
Avatar billede lothario Nybegynder
02. marts 2006 - 14:56 #68
stik mig et svar, så gir jeg point
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:57 #69
Ok, men mm12010 skal også have point, han kom trods alt med linket ;)

Og husk også lige at få fulgt op på dine gamle spørgsmål:
http://www.eksperten.dk/list.phtml?spm_creator=lothario&status_1=on&status_2=on&status_3=on&status_4=on
Avatar billede amews_aj Nybegynder
02. marts 2006 - 14:57 #70
Svar...
Avatar billede lothario Nybegynder
02. marts 2006 - 15:00 #71
Jeg siger utroligt mange tak. Hov, ja, skal nok se på dem, er et stykke tid siden jeg har været herinde.
Avatar billede amews_aj Nybegynder
02. marts 2006 - 15:01 #72
Hmm, jeg giver lige halvdelen af point til mm12010, han kom med linket...
Avatar billede lothario Nybegynder
02. marts 2006 - 15:02 #73
Hmm, de spørgsmål der ikke er svaret på, kan jeg lukke dem?
Avatar billede lothario Nybegynder
02. marts 2006 - 15:02 #74
Det er i orden, vidste ikke lige hvordan jeg kunne gøre det
Avatar billede amews_aj Nybegynder
02. marts 2006 - 15:03 #75
Hvis du ikke mangler en løsning mere, eller de bare er gamle, og du intet svar har fået, så luk dem (smid selv svar, og accepter det)
Avatar billede amews_aj Nybegynder
02. marts 2006 - 15:04 #76
Avatar billede lothario Nybegynder
02. marts 2006 - 15:04 #77
ok, det gør jeg med det samme. de spørgsmål er så gamle, at de bare skal væk
Avatar billede amews_aj Nybegynder
02. marts 2006 - 15:05 #78
Hvis nogen er kommet med en løsning, skal de selvfølgelig have deres point. Det er kun hvis du ingen løsning har fået du må tage dem selv...
Avatar billede lothario Nybegynder
02. marts 2006 - 15:14 #79
hov..øh, ja kigger lige nærmere igennem igen så..
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