[php] request-uri probleem

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een kleine check gemaakt met het volgende
code:
1
2
3
4
if($_SERVER["REQUEST_URI"] == "index.php?id=bewerkid.php&nr=28")
{
code
}


Nu wil ik dus kunnen checken dat '28' variabel is.
Dus mag iets anders zijn... (hier komt wel beveiliging lekje bij kijken, maar dat is het probleem nog niet...)

Nu kan ik wel de db uitlezen een kijken of '28' erin zit, maar dit is nogal omslachtig...
Ik zit dus meer naar zoiets te kijken.
Of een array aanmaken met de getallen erin, maar er zal toch wel iets makkelijkers moeten zijn....
code:
1
2
3
4
if($_SERVER["REQUEST_URI"] == "index.php?id=bewerkid.php&nr=*")
{
code
}

[ Voor 16% gewijzigd door Verwijderd op 19-08-2005 16:51 ]


Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
Probeer eens een regular expression

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Zat ik ook aan te denken, maar had met een ander (toch wel belangrijk feit) geen rekening gehouden, dus ik moet het op een andere manier zien te verzinnen, als het meegeven van variabele via een link...

Acties:
  • 0 Henk 'm!

  • GlowMouse
  • Registratie: November 2002
  • Niet online
Dat is misschien overdreven: je kunt ook op een substring van REQUEST_URI checken.

Maar TS: realiseer je je nu wel dat je PHP bestand altijd index.php moet heten? Kun je niet beter checken op $_GET['id']?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

Snap ook niet helemaal waarom je dit zo zou willen doen...

Daar heb je toch $_GET voor :?

Even simpel als ik kijk wat je wilt doen:

PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
$allowed_files = array (
   'bewerkid.php',
   'bla.php'
);

$id = isset ($_GET['id']) ? $_GET['id'] : '';
$nr = isset ($_GET['nr']) ? (int) $_GET['nr'] : 0;

if (in_array ($id, $allowed_files) && $nr) {
   include $id; // heeft automatisch ook beschikking tot $nr variabele
} else {
   die ('error: ging toch iets niet goed daaro');
}


Geen idee of dit ook je bedoeling is overigens :P

Persoonlijk zou ik niet een hele filenaam meesturen, maar een anders soort interne link.

[ Voor 112% gewijzigd door Bosmonster op 19-08-2005 17:11 ]


Acties:
  • 0 Henk 'm!

  • Vesta
  • Registratie: November 2004
  • Niet online
GlowMouse schreef op vrijdag 19 augustus 2005 @ 17:01:
[...]

Dat is misschien overdreven: je kunt ook op een substring van REQUEST_URI checken.

Maar TS: realiseer je je nu wel dat je PHP bestand altijd index.php moet heten? Kun je niet beter checken op $_GET['id']?
Dan heb je dus 2x een substr() nodig, een voor het eerste deel en een voor de variabele. Dan is een preg_match een stuk duidelijker en hoef je niet te klooien met de lengte van de strings ed.

Wat betreft de $_GET['nr'] hangt natuurlijk af of "id=bewerkid.php" ook van belang is. Mijn voorkeur gaat ook uit naar alleen $_GET['nr']

edit:
In dat geval kun je natuurlijk ook $_GET['id'] gebruiken.

[ Voor 10% gewijzigd door Vesta op 19-08-2005 17:09 ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Desnoods gebruik je dit:
PHP:
1
2
3
4
if($_SERVER["REQUEST_URI"] == "index.php?id=bewerkid.php&nr=".$_GET["nr"])
{
code
}

Maar deze oplossing is gewoon smerig, je zou gewoon op een normale manier je $_GET-variabelen moeten checken; REQUEST_URI gebruiken is in dit geval gewoon raar en error prone.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1