Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

smart urls

0 views
Skip to first unread message

Torben

unread,
Jun 23, 2009, 8:29:47 AM6/23/09
to
Hej venner

Jeg har et tricky problem... Jeg har fået lavet en flot side med bl.a.
smart urls. Altså som ex.

http://www.minside.dk/artikel/nummer/

nu dukker der det problem op at jeg ikke kan anvende methode="post" i
forbindelse med et login og 'get' er udelukket. Hvordan griber jeg den
an?

Min .htaccess ser sådan her ud:

RewriteEngine On

RewriteBase /

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_URI} !^/index.php
RewriteCond %{REQUEST_URI} (/|\.php|\.html|\.htm|\.feed|\.pdf|\.raw|/
[^.]*)$ [NC]

RewriteRule ^\.htaccess$ - [F]
RewriteRule ^\.jpg$ - [F]
RewriteRule ^\.html$ - [F]
RewriteRule ^\.css$ - [F]
RewriteRule ^([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+)$ /index.php?
Language=$1&Index=$2 [L]
RewriteRule ^([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+)
$ /index.php?Language=$1&Index=$2&Category=$3 [L]
RewriteRule ^([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),
([a-z][A-Z][0-9]+)$ /index.php?Language=$1&Index=$2&Category=$3&State=
$4 [L]
RewriteRule ^([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),
([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+)$ /index.php?Language=$1&Index=
$2&Category=$3&State=$4&Position=$5 [L]
RewriteRule ^([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),([[a-z][A-Z]0-9]+),
([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+),([a-z][A-Z][0-9]+)$ /index.php?
Language=$1&Index=$2&Category=$3&State=$4&Position=$5&SubCategory=$6
[L]

ErrorDocument 404 /index.php

<IfModule mod_expires.c>
ExpiresByType text/html A1
</IfModule>

Og min php indledes med:

$sektion = 'forside'; // default;
$urlVar = explode ( "/", $HTTP_SERVER_VARS[ 'REQUEST_URI' ] );
if ( $urlVar[ 1 ] == 'cms' ) {
$sektion = 'aministration';
} else if ( $urlVar[ 1 ] == 'emne' ) {
$sektion = 'emne';
$emneID = $urlVar[ 2 ];
} else if ( $urlVar[ 1 ] == 'artikel' ) {
$sektion = 'artikel';
$artID = $urlVar[ 2 ];
} else {
$sektion = 'forside';
}
}

Dan Storm

unread,
Jun 23, 2009, 8:52:13 AM6/23/09
to
Torben skrev:

> nu dukker der det problem op at jeg ikke kan anvende methode="post" i
> forbindelse med et login og 'get' er udelukket. Hvordan griber jeg den
> an?
>

Der er ikke noget umiddelbart i vejen med at bruge metoden post i den
forbindelse.

Hvordan er det et problem? Kan du ikke poste til den rigtige side?

--
Dan Storm - storm at err0r dot dk / http://err0r.dk

People who claim they don't let little things bother
them have never slept in a room with a single mosquito.

Torben

unread,
Jun 23, 2009, 9:05:57 AM6/23/09
to
> Dan Storm wrote:
> Der er ikke noget umiddelbart i vejen med at bruge metoden post i den
> forbindelse.

Min sædvanlige metode med at læse browser-variablene via $_REQUEST
['brugerID'] virker tilsyneladende ikke. Er det ikke noget med at alle
indbyggede variable rewrites. Det gælder så vidt kan se altid med URL-
variable. Post-variable kommer derimod slet ikke igennem.

Johan Holst Nielsen

unread,
Jun 23, 2009, 9:11:21 AM6/23/09
to
Torben wrote:
>> Dan Storm wrote:
>> Der er ikke noget umiddelbart i vejen med at bruge metoden post i den
>> forbindelse.
>
> Min s�dvanlige metode med at l�se browser-variablene via $_REQUEST

> ['brugerID'] virker tilsyneladende ikke. Er det ikke noget med at alle
> indbyggede variable rewrites. Det g�lder s� vidt kan se altid med URL-

> variable. Post-variable kommer derimod slet ikke igennem.

S� m� du lave en fejl et andet sted.

Du skriver ogs� i dit oprindelige indl�g:

methode="post" - n�r du laver formen skriver skal du skrive
method="post" (alts� uden det sidste e). Jeg ved dog ikke om det bare er
en tastefejl i indl�gget - ellers kan den ligge der.

Hvis det stadig giver problemer, tror jeg det er nemmere du henviser til
siden - da det lyder som en fejl enten i din HTML eller i dit PHP.

/Johan

Torben

unread,
Jun 23, 2009, 9:21:06 AM6/23/09
to
Johan Holst Nielsen wrote:
> Så må du lave en fejl et andet sted.
>
> Du skriver også i dit oprindelige indlæg:
> methode="post" - når du laver formen skriver skal du skrive
> method="post" (altså uden det sidste e). Jeg ved dog ikke om det bare er
> en tastefejl i indlægget - ellers kan den ligge der.

Øps! Det har du ret i. Men det var nu kun en fejl i mit stillede
spørgsmål.

> Hvis det stadig giver problemer, tror jeg det er nemmere du henviser til
> siden - da det lyder som en fejl enten i din HTML eller i dit PHP.

Jeg tror ikke det er htmlen. Siden som er under udvikling finder du
her http://drv.b-ret_ning.dk/cms/ [fjern underscore]

Dan Storm

unread,
Jun 23, 2009, 9:34:42 AM6/23/09
to
Torben skrev:

> Jeg tror ikke det er htmlen. Siden som er under udvikling finder du
> her http://drv.b-ret_ning.dk/cms/ [fjern underscore]

Pr�v lige efter formafslutningen at skrive <?php print_r($_POST); ?>

Torben

unread,
Jun 23, 2009, 4:32:55 PM6/23/09
to
Dan Storm wrote:
> Prøv lige efter formafslutningen at skrive <?php print_r($_POST); ?>

Det er gjort men det giver desværre ikke meget...?

Dan Storm

unread,
Jun 24, 2009, 3:28:57 AM6/24/09
to
Torben skrev:
> Dan Storm wrote:
>> Pr�v lige efter formafslutningen at skrive <?php print_r($_POST); ?>
>
> Det er gjort men det giver desv�rre ikke meget...?

Jeg har testet lidt p� det og problemet ligger i dine rewrite regler
(uden at jeg kan pr�cisere hvor, s� dygtig er jeg heller ikke til
mod_rewrite).

N�r du tilg�r ditdom�ne.org/cms/ returnerer serveren en 404. Derved g�r
alle dine request variabler tabt.

I forvejen synes jeg dine rewrites er hen i vejret - PHP kan klare
(n�sten) alt hvad du har behov i den sammenh�ng. Du b�r tilrette din
l�sning s� PHP h�ndterer det de forskellige regler - hvilket i �vrigt
ikke kan tage mange minutter med det setup du i forvejen har.

Torben

unread,
Jun 24, 2009, 5:38:58 AM6/24/09
to
Dan Storm wrote:

> Jeg har testet lidt på det og problemet ligger i dine rewrite regler
> (uden at jeg kan præcisere hvor, så dygtig er jeg heller ikke til
> mod_rewrite).
>
> Når du tilgår ditdomæne.org/cms/ returnerer serveren en 404. Derved går


> alle dine request variabler tabt.
>
> I forvejen synes jeg dine rewrites er hen i vejret - PHP kan klare

> (næsten) alt hvad du har behov i den sammenhæng. Du bør tilrette din
> løsning så PHP håndterer det de forskellige regler - hvilket i øvrigt


> ikke kan tage mange minutter med det setup du i forvejen har.

Det lyder sgu tiltalende. Har du en side hvor man viser hvordan det
gøres?!! Som du, synes jeg også mod_rewrite er noget krøl. Jeg troede
bare det var metoden - den eneste....

Dan Storm

unread,
Jun 24, 2009, 6:55:44 AM6/24/09
to
Torben skrev:

> Det lyder sgu tiltalende. Har du en side hvor man viser hvordan det
> g�res?!! Som du, synes jeg ogs� mod_rewrite er noget kr�l. Jeg troede

> bare det var metoden - den eneste....

Jeg har ikke nogle direkte henvisninger, men du b�r kigge p� noget MVC
til PHP.

Men alts�, rimelig kort, s� du selv har noget at bygge p�, s� lav din
.htaccess fil s�ledes:

RewriteEngine on

RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d

RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]


Din index.php kan jeg ikke lige gennemskue; for mig virker det som om at
hvis ikke at man ikke l�gger ud med enten cms, emne eller artikel SKAL
sektion = forside, ikke?
I s� fald, laver du din index.php s�ledes:

<?php

$urlVar = explode ("/", $_GET["rt"]);
$sektion = $urlVar[0];

switch($sektion)
{
case "cms":
$sektion = "administration";
break;
case "emne":
$sektion = "emne";
break;
case "artikel":
$sektion = "artikel";
break;
default:
$sektion = "forside";
}

if(isset($urlVar[1]))
$inputId = $urlVar[1];
else
$inputId = null;

/**
* Resten af din kode kender jeg ikke,
* men id�en med $inputId er at du s� har
* en standard variabel, som du s� kan bruge
* i f.eks. din artikel visning.
* Du tilg�r den bare via $artID = $inputID;
* i din artikel visning.
*/
?>


Der ville v�re bedre m�der at g�re det p�, men du har ligesom forst�et
id�en med det.
Igen, tak et kig p� noget MVC, det ville lette processen for dig.

Torben

unread,
Jun 24, 2009, 7:22:29 AM6/24/09
to
Dan Storm wrote:

> Jeg har ikke nogle direkte henvisninger, men du bør kigge på noget MVC
> til PHP.
>
> Men altså, rimelig kort, så du selv har noget at bygge på, så lav din
> .htaccess fil således:


>
> RewriteEngine on
>
> RewriteCond %{REQUEST_FILENAME} !-f
> RewriteCond %{REQUEST_FILENAME} !-d
>
> RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

min .htaccess er nu

Options +FollowSymLinks
RewriteEngine On
RewriteBase /


RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ index.php?rt=$1 [L,QSA]

og det virker :)

> Din index.php kan jeg ikke lige gennemskue; for mig virker det som om at

> hvis ikke at man ikke lægger ud med enten cms, emne eller artikel SKAL
> sektion = forside, ikke?
> I så fald, laver du din index.php således:


>
> <?php
>
>      $urlVar = explode ("/", $_GET["rt"]);
>      $sektion = $urlVar[0];
>
>      switch($sektion)
>      {
>          case "cms":
>              $sektion = "administration";
>              break;
>          case "emne":
>              $sektion = "emne";
>              break;
>          case "artikel":
>              $sektion = "artikel";
>              break;
>          default:
>              $sektion = "forside";
>      }

Ikke helt men det kan du ikke vide ud fra det jeg er har skrevet. Jeg
tjekker først for bynavn og hvis ja så.... Jeg sprang det over for at
koncentrere spørgsmålet omkring det jeg ikke kunne få til at virke.
DET GØR DET NU! :o)

> Igen, tak et kig på noget MVC, det ville lette processen for dig.

Jeg vil tage et nærmere kig på MVC ved lejlighed

0 new messages