[PHP] Variable ophalen uit mod_rewrite functie

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
.htaccess

code:
1
2
RewriteEngine On
RewriteRule ^index/([0-9]+)/([0-9]+)$ index.php?piet=$1&kees=$2


index.php
PHP:
1
2
3
4
5
6
<? 
echo $_SERVER['PATH_INFO'];
$bla = explode("/", $_SERVER['PATH_INFO']);
echo "$bla[0]";
echo "$piet";
?>


Ik vraag de volgend url op: http://www.gahuilen.nl/stephan/test/index/1/2
En wat ik simpel probeer te doen is de waarde piet echo-en. Schijnt niet te werken.
De oplossing is waarschijnlijk te simpel maar na middagje zoeken ben ik het beu.

Acties:
  • 0 Henk 'm!

  • wica
  • Registratie: Februari 2002
  • Laatst online: 21-02 09:21

wica

De duivel jacht op me

Als je phpinfo(); gebruikt zie je in welke variable die staat. Kan oa. $_ENV ook staan.

En om $piet en $kees te krijgen moet je in je php.ini register_global = On zetten

[ Voor 34% gewijzigd door wica op 19-09-2004 19:18 ]

RFC | The Linux Document Project | gentoo.


Acties:
  • 0 Henk 'm!

  • simon
  • Registratie: Maart 2002
  • Laatst online: 00:18
Je haalt 2 dingen door elkaar, mod_rewrite geeft get variabelen terug, en jij gebruikt MultiViews, die je uit de url haalt.

|>


Acties:
  • 0 Henk 'm!

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

NMe

Quia Ego Sic Dico.

Zie Simon. Bovendien gebruik je variabelen nogal op een ranzige manier, doe in plaats van dit:
PHP:
1
2
echo "$bla[0]";
echo "$piet";

liever dit:
PHP:
1
2
echo $bla['0'];
echo $piet;      //deze variabele bestaat niet eens overigens

Dat is sneller, en zal in het eerste geval geen warnings opleveren, die je met jouw manier wel zou hebben.

'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.


Acties:
  • 0 Henk 'm!

Verwijderd

PHP:
1
$bla['0'];
wordt
PHP:
1
$bla[0];

haakjes alleen bij tekst :)

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Register Global staat aan...

index.php
PHP:
1
2
3
<? 
echo $_GET['piet'];
?>

...werkt anders ook nie

[ Voor 22% gewijzigd door Verwijderd op 19-09-2004 20:55 ]


Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

$_GET['piet'] heeft geen waarde?
Heb je error_reporting op E_ALL staan?
Zo ja, krijg je 'n notice?

Bij mij werkt het overigens wel goed, dus aan je rewrite-rule zal het niet liggen.

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Online staat error_reporting op '2039', geen notice.
Lokaal staat het E_ALL, ook geen notice.

PHP:
1
2
3
4
5
6
<? 
echo $_SERVER['PATH_INFO'];
$bla = explode("/", $_SERVER['PATH_INFO']);
echo $bla[0];
echo $_GET['piet'];
?>


Als ik http://localhost/test/index/1/2 opvraag
Krijg ik alleen te zien

code:
1
/1/2


:S

Acties:
  • 0 Henk 'm!

  • blizt
  • Registratie: Januari 2003
  • Laatst online: 11-12-2024

blizt

Wannabe-geek

En wat geeft $_SERVER['QUERY_STRING'] of $_SERVER['argv'] weer?

United we stand, and divided we fall


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
nix noppes nada :S

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Verwijderd schreef op 19 september 2004 @ 21:46:
Online staat error_reporting op '2039', geen notice.
Lokaal staat het E_ALL, ook geen notice.

PHP:
1
2
3
4
5
6
<? 
echo $_SERVER['PATH_INFO'];
$bla = explode("/", $_SERVER['PATH_INFO']);
echo $bla[0];
echo $_GET['piet'];
?>


Als ik http://localhost/test/index/1/2 opvraag
Krijg ik alleen te zien

code:
1
/1/2


:S
Als je mod_rewrite gebruikt moet je regel 2 en 3 weglaten... Lees maar eens de documentatie van mod_rewrite, dan zie je wat hij doet. Als de mod_rewrite werkt, moet $_GET['piet'] de waarde van piet opleveren.

[ Voor 8% gewijzigd door ludo op 19-09-2004 22:19 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
dan is mijn conclusie dat mod_rewrite niet werkt...

code:
1
2
RewriteEngine On
RewriteRule ^index/([0-9]+)/([0-9]+)$ index.php?piet=$1&kees=$2


http://localhost/test/index/1/2/ verwijst wel naar index.php. Dit gewoon simpel getest door een echo "Testing" neer te zetten. Echter piet en kees worden niet gezet. Ook online getest met een server waar mod_rewrite aan staan.

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Wat gebeurt er als je de volgende mod_rewrite test doet:
code:
1
2
RewriteEngine On
RewriteRule ^/van_hier.php /naar_daar.php

(even een simpel naar_daar.php bestand maken met een tekst als 'het werkt' oid...) En dan dus naar /van_hier.php gaat met je browser? Als mod_rewrite werkt moet hij je doorsturen naar naar_daar.php.

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
ludo schreef op 19 september 2004 @ 22:54:
Wat gebeurt er als je de volgende mod_rewrite test doet:
code:
1
2
RewriteEngine On
RewriteRule ^/van_hier.php /naar_daar.php

(even een simpel naar_daar.php bestand maken met een tekst als 'het werkt' oid...) En dan dus naar /van_hier.php gaat met je browser? Als mod_rewrite werkt moet hij je doorsturen naar naar_daar.php.
hm dat werkt niet, maar als ik mijn eigen code gebruik stuurt ie me wel door naar index.php :S

Acties:
  • 0 Henk 'm!

  • ludo
  • Registratie: Oktober 2000
  • Laatst online: 26-04-2024
Ah daar had ik ook last van toen ik met mod_rewrite ging werken. Als je dus naar www.blaat.nl/index/1/2 gaat krijg je wel index.php te zien? Als dit zo is staat er waarschijnlijk ergens in je httpd.conf (of .htaccess) MultiViews aan. Als deze aanstaat werkt mod_rewrite niet (goed). Zoek dit dus even op en haal dit uit de configuratie en probeer mod_rewrite dan nogmaals. Misschien dat het nu werkt :)

Acties:
  • 0 Henk 'm!

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06 13:31

drm

f0pc0dert

Zoek ook eens naar 'RewriteBase' in de apache/mod_rewrite docs. Kan zijn dat 't daar aan ligt.

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz

Pagina: 1