qualitum logo
Problem med include $_GET

PHPportalen Forum Index » PHP
Lägg ett bokmärke på hela tråden
Skapa nytt inlägg   Svara på inlägget
Visa föregående ämne :: Visa nästa ämne  
Startad av: Meddelande
gefance



Medlem i: 1109 dagar

Status: Offline



#721412
Inlägg Skrivet: 2012-03-08 11:01      Ämne: Problem med include $_GET Citera

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
KOD:
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
KOD:
1:
 
2:
<a href="?p=lank">Länk</a>
3:
 


includen
KOD:
1:
 
2:
<div id="content">
3:
               <?php include "pages/".$_GET["p"].".html"; ?>
4:
            </div>
5:
 


Tack på förhand!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Figgy



Medlem i: 2668 dagar

Status: Offline



#721420
Inlägg Skrivet: 2012-03-08 11:32      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
gefance



Medlem i: 1109 dagar

Status: Offline



#721422
Inlägg Skrivet: 2012-03-08 11:37      Ämne: Citera

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...
KOD:
1:
 
2:
<?
3:
   $p = $_GET["p"];
4:
   if ($p=="")
5:
      $_GET["p"] = "firstpage";
6:
?>
7:
 
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Figgy



Medlem i: 2668 dagar

Status: Offline



#721424
Inlägg Skrivet: 2012-03-08 11:47      Ämne: Citera

Då blir variablen $p helt obetydlig Smile 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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
gefance



Medlem i: 1109 dagar

Status: Offline



#721426
Inlägg Skrivet: 2012-03-08 11:54      Ämne: Citera

Figgy skrev:
Då blir variablen $p helt obetydlig Smile 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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Figgy



Medlem i: 2668 dagar

Status: Offline



#721427
Inlägg Skrivet: 2012-03-08 12:01      Ämne: Citera

Du kan ta en titt på dessa funktioner:
realpath
basename
file_exists

Ett exempel kan vara:
PHP:
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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
gefance



Medlem i: 1109 dagar

Status: Offline



#721428
Inlägg Skrivet: 2012-03-08 12:26      Ämne: Citera

Figgy skrev:
Du kan ta en titt på dessa funktioner:
realpath
basename
file_exists

Ett exempel kan vara:
PHP:
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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
gefance



Medlem i: 1109 dagar

Status: Offline



#721451
Inlägg Skrivet: 2012-03-08 22:48      Ämne: Citera

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!

KOD:
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.
KOD:
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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Figgy



Medlem i: 2668 dagar

Status: Offline



#721476
Inlägg Skrivet: 2012-03-09 11:26      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
gefance



Medlem i: 1109 dagar

Status: Offline



#721479
Inlägg Skrivet: 2012-03-09 13:16      Ämne: Citera

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
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
gefance



Medlem i: 1109 dagar

Status: Offline



#721561
Inlägg Skrivet: 2012-03-12 09:44      Ämne: Citera

bump!
 
Till toppen på sidan
Visa användarprofil Skicka privat meddelande Besök användarens hemsida
Visa tidigare inlägg:   
Skapa nytt inlägg   Svara på inlägget
PHPportalen Forum Index » PHP
Hoppa till:  
Du kan inte skapa nya inlägg i det här forumet
Du kan inte svara på inlägg i det här forumet
Du kan inte ändra dina inlägg i det här forumet
Du kan inte ta bort dina inlägg i det här forumet
Du kan inte rösta i det här forumet
Du kan inte bifoga filer i detta forum
Du kan inte ladda ner filer från detta forum
Kontakta oss på adressen: info@phpportalen.net
Webbplatsen bygger i grunden på phpBB © 2001, 2002 phpBB Group

Modifieringar har senare gjorts i systemet av PHPportalen
Sid och logotypdesign skapad av Daren Jularic
qualitum logo