Dynamic frame
Ik ben een echte beginneling en zou graag jullie hulp hebben.
Ik heb een klein iframe op een website en ik wil daar een variabele inhoud in laden. Dus: de ene keer home.php, de andere keer about.htm etc.
Nu dacht ik: misschien is het mogelijk om in de URL aan te laten geven welke URL er in het frame geladen moet worden.
Dus mijn framecode:
<frame src="" name="mainframe" id="mainframe" title="mainframe" />
En in de URL:
http://www.example.com/frame.php?url=home.htm
Doe ik iets verkeerd dat het niet werkt? Ik kan op het interpret namelijk nergens enig ander script vinden.
Bij voorbaat dank!
je doet het op wel goed, maar het is totaal niet veilig.
Vincent Huisman op 28/08/2010 12:07:32:
je doet het op wel goed, maar het is totaal niet veilig.
Inderdaad, bijna goed. Het is $_GET met hoofdletters.
En zeer onveilig.
Gewijzigd op 28/08/2010 12:15:35 door - SanThe -
Een relatief veilige manier is om alle pagina's te plaatsen in de map /paginas en vervolgens:
Code (php)
Dit is niet de meest waterdichte manier maar voor zoiets redelijk.
Hoe het werkt:
1. Plaats bijv. home.htm in de map /paginas
2. roep je script aan met ?url=home
3. het werkt!
Gewijzigd op 28/08/2010 12:17:22 door Jesse Degger
Heb alleen één vraag: waar moet ik die laatste code (van Jesse Degger) plaatsen? Als ik hem bovenin mijn pagina plaats, wordt hij namelijk genegeerd en kan ik toch nog een externe pagina aanroepen.
Heeft iemand enig idee?
Precies op de plek waar jouw echo reeds staat.
Nu heb ik nog één vraag: Wat moet ik veranderen als ik ook een pagina wil waarin URL's geladen kunnen worden van 1 externe URL geladen kunnen worden.
Dus bijvoorbeeld: ik wil alleen de pagina's toestaan die komen van example.com
Hopelijk vinden jullie mij geen zeur! Ik waardeer de hulp ZEER!
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// alleen bestanden uit de map paginas die eindigen .htm
if(file_exists("paginas/".basename($_GET['url']).".htm")){
// als dat bestaat geef dan die link
echo "paginas/".basename($_GET['url']).".htm";
} elseif($_GET['url'] == 'www.example.com') {
echo $_GET['url'];
}else{
// zoniet
echo "paginas/errors/404.htm";
}
?>
// alleen bestanden uit de map paginas die eindigen .htm
if(file_exists("paginas/".basename($_GET['url']).".htm")){
// als dat bestaat geef dan die link
echo "paginas/".basename($_GET['url']).".htm";
} elseif($_GET['url'] == 'www.example.com') {
echo $_GET['url'];
}else{
// zoniet
echo "paginas/errors/404.htm";
}
?>
Gewijzigd op 28/08/2010 23:19:34 door - SanThe -
Echter, als ik dit regeltje inbouw, krijg ik een geheel wit scherm...
een heel wit scherm betekent over het algemeen dat de PHP programmacode fout gaat. Check of je alles goed hebt qua syntax, komma's en puntkomma's etc
Wat ik nu nog graag zou willen is namelijk dat een permalink die ik per mail stuur, geopend wordt in een iframe.
Mijn permalink: http://www.mydomain.nl/firstdir/?page_id=152&code=1f53cccb12064256772e2b34e791eb0f&addr=mailaddress%40mydomain.nl&
En die wil ik dus graag laten openen met behulp van: www.mydomain.nl/frame.php?url= (is pagina met daarop iframe)
Maar kom er zelf echt niet uit. Hoop dat jullie me willen helpen.
Groeten!
Gewijzigd op 28/08/2010 15:01:25 door Pieter Blom
jij hebt de link nu naar mydomain.nl/fistdir/index.php?page_id...... maar jij zegt dat je hem wilt linken naar mydomain.nl/frame.php?page_id.........
De complete nieuwe link zal er dus ongeveer zou uit zien:
www.mydomain.nl/frame.php?url=http://www.mydomain.nl/firstdir/?page_id=152&code=1f53cccb12064256772e2b34e791eb0f&addr=mailaddress%40mydomain.nl&
Maar ik krijg het script niet zo veranderd dat pagina frame.php deze link (en soortgelijke) accepteert.
Toevoeging op 28/08/2010 19:28:12:
Ben zelf heel de middag nog aan het 'tobben' geweest en het werkt nog steeds niet :'(
Zolang ik maar een 'normale URL' aanroep, dan gaat het prima. Maar zodra ik een permalink aanroep, gaat het verkeerd. Hopelijk heeft iemand een idee hoe dit opgelost kan worden.
Ik zoek heel internet af en nergens iets te vinden.
Gewijzigd op 28/08/2010 15:17:24 door Pieter Blom
Of je moet iets zien te vinden waardoor alle pagina's (!) van mydomain.nl geaccepteerd worden.
SanThe Nvt op 28/08/2010 14:20:34:
<iframe src="style="width: 677px; height: 523px" border="0" frameborder="0" name="iframe"></iframe>
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
<?php
// alleen bestanden uit de map paginas die eindigen .htm
if(file_exists("paginas/".basename($_GET['url']).".htm")){
// als dat bestaat geef dan die link
echo "paginas/".basename($_GET['url']).".htm";
} elseif($_GET['url'] == 'www.example.com') {
echo $_GET['url'];
}else{
// zoniet
echo "paginas/errors/404.htm";
}
?>
// alleen bestanden uit de map paginas die eindigen .htm
if(file_exists("paginas/".basename($_GET['url']).".htm")){
// als dat bestaat geef dan die link
echo "paginas/".basename($_GET['url']).".htm";
} elseif($_GET['url'] == 'www.example.com') {
echo $_GET['url'];
}else{
// zoniet
echo "paginas/errors/404.htm";
}
?>
Even voor de duidelijkheid: ik maak nu gebruik van bovenstaande code. Heb de iframe tages er ook maar even bij gezet.
Probleem is dus dat de code wel werkt met normale bestanden, maar niet met permalinks. Ook niet als ik htm in php verander. Zie mijn bovenstaande reactie.
Hopelijk is hier iemand die de oplossing weet... heb werkelijk alles geprobeerd... :(
Gewijzigd op 28/08/2010 20:57:03 door Pieter Blom
www.example.com (regel 9) ook wel veranderen in de pagina die jij wilt toestaan
je moet Vincent Huisman op 28/08/2010 20:59:55:
je moet www.example.com (regel 9) ook wel veranderen in de pagina die jij wilt toestaan
dat spreekt voor zich...
Dit worden:
Hij was een ] vergeten ;)
Hier het goede script:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
<?php
// alleen bestanden uit de map paginas die eindigen op .htm laden
if(file_exists("paginas/".basename($_GET['url']).".htm")){
// als die bestaat geef dan de link
echo 'paginas/'.basename($_GET['url']).'.htm';
} elseif($_GET['url'] == 'www.example.com') {
echo $_GET['url'];
} else{
// zoniet, de pagina bestaat niet, geef dan een error
echo "paginas/errors/404.htm";
}
?>
// alleen bestanden uit de map paginas die eindigen op .htm laden
if(file_exists("paginas/".basename($_GET['url']).".htm")){
// als die bestaat geef dan de link
echo 'paginas/'.basename($_GET['url']).'.htm';
} elseif($_GET['url'] == 'www.example.com') {
echo $_GET['url'];
} else{
// zoniet, de pagina bestaat niet, geef dan een error
echo "paginas/errors/404.htm";
}
?>
dan had je je error reporting ook uit staan, anders had je namelijk al snel door dat die regel het probleem was
Morgen (zondag) niet beschikbaar. Hoop maandag verder te gaan. Tot dan! Groeten!
Lars Groot op 28/08/2010 21:50:55:
Thanks, ik heb het verbeterd.
[OnTopic]
<iframe src=" ==> het php stuk <== style="width: ...... enzovoort.
Waar sluit je de quote af van src="..." <== die dus.
Gewijzigd op 28/08/2010 23:25:26 door - SanThe -