| Visa föregående ämne :: Visa nästa ämne |
| Startad av: |
Meddelande |
gefance
Medlem i: 1113 dagar
Status: Offline
#721412
|
Skrivet: 2012-03-08 11:01
Ämne: Problem med include $_GET
|
|
|
Tjena!
sitter och kodar en sida där jag vill att man ska "styra" content med hjälp av
include $_GET.
Men när jag laddar sidan så är det tomt i "content".
För att ladda "firstpage" när "p" är tom
1: 2: <?
3: $p = $_GET["p"];
4: if ($p=="")
5: $p = "firstpage";
6: ?>
7: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
8: <html xmlns="http://www.w3.org/1999/xhtml">
9: <head>
|
Länk
1: 2: <a href="?p=lank">Länk</a>
3:
|
includen
1: 2: <div id="content">
3: <?php include "pages/".$_GET["p"].".html"; ?>
4: </div>
5:
|
Tack på förhand! |
|
|
|
| Till toppen på sidan |
|
Figgy

Medlem i: 2671 dagar
Status: Offline
#721420
|
Skrivet: 2012-03-08 11:32
Ämne:
|
|
|
Det du gör på de första raderna är att skapa en variabel $p som ska bestämma vilken sida som ska visas, om $_GET har ett värde kommer $p få detta, om inte kommer $p få värde 'firstpage'.
När du inkluderar ska du alltså använda variabeln $p och inte $_GET['p'].
Förövrigt bör du kontrollera så att filen finns i den katalog som är avsedd för innehållet, annars kan användaren skriva en valfri sökväg och ta del av sårbar information. |
|
|
_________________ Vebut.se |
| Till toppen på sidan |
|
gefance
Medlem i: 1113 dagar
Status: Offline
#721422
|
Skrivet: 2012-03-08 11:37
Ämne:
|
|
|
| Figgy skrev: |
Det du gör på de första raderna är att skapa en variabel $p som ska bestämma vilken sida som ska visas, om $_GET har ett värde kommer $p få detta, om inte kommer $p få värde 'firstpage'.
När du inkluderar ska du alltså använda variabeln $p och inte $_GET['p'].
Förövrigt bör du kontrollera så att filen finns i den katalog som är avsedd för innehållet, annars kan användaren skriva en valfri sökväg och ta del av sårbar information. |
Okej! tack för snabbt svar!
håller på att göra så den kontrollerar innehåller också!
något sådant då? länge sedan jag kodade...
1: 2: <?
3: $p = $_GET["p"];
4: if ($p=="")
5: $_GET["p"] = "firstpage";
6: ?>
7:
|
|
|
|
|
| Till toppen på sidan |
|
Figgy

Medlem i: 2671 dagar
Status: Offline
#721424
|
Skrivet: 2012-03-08 11:47
Ämne:
|
|
|
Då blir variablen $p helt obetydlig Behåll den tidigare koden men byt ut:
<?php include "pages/".$_GET["p"].".html"; ?>
mot
<?php include "pages/$p.html"; ?>
Det blir enklare att jobba med $p vid kontrollen av fil istället för $_GET['p']. |
|
|
_________________ Vebut.se |
| Till toppen på sidan |
|
gefance
Medlem i: 1113 dagar
Status: Offline
#721426
|
Skrivet: 2012-03-08 11:54
Ämne:
|
|
|
| Figgy skrev: |
Då blir variablen $p helt obetydlig Behåll den tidigare koden men byt ut:
<?php include "pages/".$_GET["p"].".html"; ?>
mot
<?php include "pages/$p.html"; ?>
Det blir enklare att jobba med $p vid kontrollen av fil istället för $_GET['p']. |
Något sådant hade jag ifrån början men hade säkert yrat till det någon stans! ett stort tack iaf!
du har ingen smidig lösning för att kontrollera katalogen btw? |
|
|
|
| Till toppen på sidan |
|
Figgy

Medlem i: 2671 dagar
Status: Offline
#721427
|
Skrivet: 2012-03-08 12:01
Ämne:
|
|
|
Du kan ta en titt på dessa funktioner:
realpath
basename
file_exists
Ett exempel kan vara:
1: <?php 2: $dir = 'pages/'; 3: $file = $dir . basename($p) . '.html'; 4: 5: include (file_exists($file)) 6: ? $file 7: : $dir . '404.html'; 8: ?>
|
Där $p innehåller $_GET['p'] sedan tidigare. Men med denna kod måste filen ligga direkt under pages katalogen. |
|
|
_________________ Vebut.se |
| Till toppen på sidan |
|
gefance
Medlem i: 1113 dagar
Status: Offline
#721428
|
Skrivet: 2012-03-08 12:26
Ämne:
|
|
|
| Figgy skrev: |
Du kan ta en titt på dessa funktioner:
realpath
basename
file_exists
Ett exempel kan vara:
1: <?php 2: $dir = 'pages/'; 3: $file = $dir . basename($p) . '.html'; 4: 5: include (file_exists($file)) 6: ? $file 7: : $dir . '404.html'; 8: ?>
|
Där $p innehåller $_GET['p'] sedan tidigare. Men med denna kod måste
filen ligga direkt under pages katalogen. |
Du ska ha ett riktigt stort tack!! |
|
|
|
| Till toppen på sidan |
|
gefance
Medlem i: 1113 dagar
Status: Offline
#721451
|
Skrivet: 2012-03-08 22:48
Ämne:
|
|
|
Tja igen! nu ska jag vara lite jävligare...
Tänkte göra så man kan välja språk också! då jag tänkte att man bara laddar "sidorna" ifrån annan dir.
gjort några försök och döpt variabeln till "q" och det funkar tills jag ändrar variabeln "p". vet inte hur jag får variabeln "q" att stanna kvar och vore tacksam för lite hjälp!
1: 2: <?
3: $p = $_GET["p"];
4: if ($p=="")
5: $p = "firstpage";
6:
7: ?>
8: <?
9: $q = $_GET["q"];
10: if ($q=="")
11: $q = "pages";
12:
13: ?>
14:
|
Variabeln "q" är alltså dir.
1: 2: <?php
3: $dir = $q . '/';
4: $file = $dir . basename($p) . '.html';
5: 6: include (file_exists($file))
7: ? $file
8: : $dir . '404.html';
9: ?>
10:
|
|
|
|
|
| Till toppen på sidan |
|
Figgy

Medlem i: 2671 dagar
Status: Offline
#721476
|
Skrivet: 2012-03-09 11:26
Ämne:
|
|
|
Vad förväntas q att vara? Är det katalogen som avgör språket?
Just nu blir q 'pages' om den inte är satt. |
|
|
_________________ Vebut.se |
| Till toppen på sidan |
|
gefance
Medlem i: 1113 dagar
Status: Offline
#721479
|
Skrivet: 2012-03-09 13:16
Ämne:
|
|
|
| Figgy skrev: |
Vad förväntas q att vara? Är det katalogen som avgör språket?
Just nu blir q 'pages' om den inte är satt. |
Precis! katalogen ska avgöra språket! |
|
|
|
| Till toppen på sidan |
|
gefance
Medlem i: 1113 dagar
Status: Offline
#721561
|
Skrivet: 2012-03-12 09:44
Ämne:
|
|
|
| bump! |
|
|
|
| Till toppen på sidan |
|
|