Permalänk
Medlem

[PHP]Frågor om redirects ?

Hola pojkar, flickor och andra varelser
Så, nu är man igång igen och har givetvis stött på ett problem jag hoppas ni kan hjälpa till med. Eller problem och problem, irritationsobjekt är väl ett bättre ord ^^

Jag har en sida som sköter navigeringen genom att index-filen inkluderar andra filer, men för att få bort dessa icke önskvärda dynamisla adresser kom jag i mina tidigare php-dagar på ett system där alla länkar går till en annan fil (i detta fall index_s.php) innehållande följande:

<?php session_name('xzite'); session_start(); $_SESSION['id'] = $pid; header("Location: index.php"); ?>

Varpå "index.php" inkluderar värdet av $_SESSION['id'] istället med

<?php include($_SESSION['id'] . ".php"); ?>

Länkarna får då denna struktur där "submapp" är en sektion av sidan innehållande div. filer och "fil" givetvis blir namnet på filen som ska inluderas, exkl filändelse:

<a href='<?php echo("index_s.php?pid=submapp/fil"); ?>'>länknamn</a>

Ett rätt enkelt om än grovt system för att rensa upp i urls imo. Saken är att jag nu stör mig lite på detta då det för det första kommer lägga massa stress på den där enda filen som innehåller ovanstående kod, eftersom alla sidvisningar går genom den. För det andra så bli sidan lite slöare iochmed alla extra sidbyten som blir. Det jag istället funderade på är .htaccess och rewrite, men just den biten har jag inte satt mig in i ännu så jag har googlat och ooglat artiklar och forum och kommer ändå inte på något sätt att få det att funka som jag vill.

Så, går det använda htaccess istället utan att behöva bygga om för mycket, och i så fall hur? Och om inte, går det förbättra det jag har eller får det duga som det är, min kräsenhet till trots?

Visa signatur

Xbox Live - Firaphex
Jag har inte alltid rätt, men jag utgår från det tills jag ser bevis på annat. Citera för svar
2008-06-18, Dagen då integriteten ställdes tå mot tå med maktmissbruket och förlorade.

Permalänk
Medlem

Det går utmärkt att lös med mod_rewrite och htaccess

Tänk dig att du har en frontcontroller som hanterar alla inkommande requests.
Genom htaccess filen och rewriteengine så skickas alla sidrequests vidare till din frontcontroller.

Exempel: Du skriver in adressen www.example.com/article/php-tutorial
istället för att hämta och ev parsa den filen så startas exekveringen i din frontcontroller istället. Den kan via $_SERVER['REQUEST_URI'] inkludera din sida!

Visa signatur

Windows XP Pro SP2 x32 | Ubuntu x64 | Firefox | Adobe Photoshop CS2 | Eclipse | Starcraft Broodwar
(X)HTML | CSS | XML | PHP | Java | C++ | vim script |
Daniel Örn, Eagleorn | Google is my friend, and he will be Yours to if You ask him »

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Eagleorn
Det går utmärkt att lös med mod_rewrite och htaccess

Tänk dig att du har en frontcontroller som hanterar alla inkommande requests.
Genom htaccess filen och rewriteengine så skickas alla sidrequests vidare till din frontcontroller.

Exempel: Du skriver in adressen www.example.com/article/php-tutorial
istället för att hämta och ev parsa den filen så startas exekveringen i din frontcontroller istället. Den kan via $_SERVER['REQUEST_URI'] inkludera din sida!

hmm...
Nu kan det vara så att det beror på mina nu 10timmar med php på skärmen och man börjar röra ihop saker... men jag greppade inte riktigt det där med hur jag får variablerna som skickas med via url:en i länken till sidan som skall visas? Utan dem så vet ju inte php-scriptet vilken fil den skall inkludera. Jag har lyckats med att få redirecten med Rewrite att fungera när jag skriver in vanliga adresser... men jag blir av med variablerna.

Visa signatur

Xbox Live - Firaphex
Jag har inte alltid rätt, men jag utgår från det tills jag ser bevis på annat. Citera för svar
2008-06-18, Dagen då integriteten ställdes tå mot tå med maktmissbruket och förlorade.

Permalänk
Medlem

mm ,,, du blir av med query strängen ($_GET) menar du?

Det finns två sätt att lösa det på:
När du gör redirecten så kan du skika med GET variablerna med hjälp av att du identifierar dem med reguljära uttryck (om du inte vet vad det är, googla på regexp)
Alternativet är att du inte har några GET variabler, utan skriver dom som en del av urlen
istället för www.exaple.com/?topic=article&item=php så skriver du www.exaple.com/article/php

Det är inte helt lätt det här, det argumenteras ständigt vilket sätt som är bäst, smidigast och mest rätt enligt standarden

Visa signatur

Windows XP Pro SP2 x32 | Ubuntu x64 | Firefox | Adobe Photoshop CS2 | Eclipse | Starcraft Broodwar
(X)HTML | CSS | XML | PHP | Java | C++ | vim script |
Daniel Örn, Eagleorn | Google is my friend, and he will be Yours to if You ask him »

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Eagleorn
mm ,,, du blir av med query strängen ($_GET) menar du?

Det finns två sätt att lösa det på:
När du gör redirecten så kan du skika med GET variablerna med hjälp av att du identifierar dem med reguljära uttryck (om du inte vet vad det är, googla på regexp)
Alternativet är att du inte har några GET variabler, utan skriver dom som en del av urlen
istället för www.exaple.com/?topic=article&item=php så skriver du www.exaple.com/article/php

Det är inte helt lätt det här, det argumenteras ständigt vilket sätt som är bäst, smidigast och mest rätt enligt standarden

Det sistnämnda alternativet är mycket mer sökmotor-optimerat... och ser enligt mig bättre ut.

Visa signatur
Permalänk
Medlem

Nja, alltså.
enkelt uttryckt.

Jag vill få:
http://www.foo.se/mapp/fil.php?variable=value
http://www.foo.se/mapp/fil.php?variable=value2
http://www.foo.se/mapp/fil.php?variable=value3
o.s.v.
till:
http://www.foo.se/mapp/fil

Men då sidan som laddas är samma fil om och om igen fast med olika värde på $variable, så måste jag skicka det uppdaterade värdet till sidan och ladda om sidan igen så att rätt fil inkluderas från rätt plats. Jag har fått rewrite att funka jättebra när jag har varje sida uppbyggt var och en för sig, bara inte när det gäller att ha en och samma sida som uppdateras och inkluderar olika innehåll beroende på vilket värde en variabel har (en variabel som får sitt värde uppdaterat genom url:en)

Jag sitter här och känner att svaret finns här, jag bara missar att se det... mesr irriterande måste jag säga... som att försöka säga någonting och glömma bort vilket ord det är man letar efter... Ska testa att sova lite på saken, se om det hjälper.

Visa signatur

Xbox Live - Firaphex
Jag har inte alltid rätt, men jag utgår från det tills jag ser bevis på annat. Citera för svar
2008-06-18, Dagen då integriteten ställdes tå mot tå med maktmissbruket och förlorade.

Permalänk
Medlem

man kan tex skriva RewriteRule liteRegExp blabla/bla.php?var1=$1&%{QUERY_STRING} . Värdet på %{QUERY_STRING} är inte helt oväntat ens query string ( dvs dina GET variabler ).

Permalänk
Medlem
Citat:

Ursprungligen inskrivet av Sairon
man kan tex skriva RewriteRule liteRegExp blabla/bla.php?var1=$1&%{QUERY_STRING} . Värdet på %{QUERY_STRING} är inte helt oväntat ens query string ( dvs dina GET variabler ).

aha!
där har vi någonting jag i mitt zombie-liknande tillstånd tror jag kan greppa
Blir dock att vänta med tester tills i morgon, då mina 12h sömn börjar kännas välkommna (32-36timmars naturlig dygnsrytm kan vara rätt kul ibland, men oftast inte).

Visa signatur

Xbox Live - Firaphex
Jag har inte alltid rätt, men jag utgår från det tills jag ser bevis på annat. Citera för svar
2008-06-18, Dagen då integriteten ställdes tå mot tå med maktmissbruket och förlorade.