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';
}
}
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.
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
Ø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]
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.
> 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....
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.
> 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