Avatar billede some-one Nybegynder
18. november 2007 - 14:51 Der er 13 kommentarer og
1 løsning

Tilgå side i en mappe - uden at skrive hele strukturen.

Hej.
Jeg har et lidt tricky spørgsmål.

Jeg har et domæne og hotel, og ønsker at mine brugere kan lave deres egen side på mit hotel.
www.domæne.dk/mappe/123/

Ovenfor: i "mappe" skal alle brugernes sider være. "123" er en bestemt brugers side.

www.domæne.dk/mappe/123/ er den fysiske adresse, men jeg ønsker, at mine brugere kan tilgå den fysiske adresse ved kun at skrive www.domæne.dk/123/ - desuden ønsker jeg at de kun kan se det de skriver. Dvs. www.domæne.dk/123/index.php er hvad brugeren skal kunne se selvom den fysiske adresse er www.domæne.dk/mappe/123/index.php
Det hele skal foregå pr. automatik. Dvs. når en bruger tilmelder sig systemet og der kommer en ny mappe som f.eks. hedder "larsside" (fysisk adresse: www.domæne.dk/mappe/larsside) så skal han kunne komme ind på den ved at skrive www.domæne.dk/larsside - helt pr. automatik. Jeg vil ikke røre en finger.

Spørgsmålet: hvordan laver jeg det? Nogen der kan klare et script eller noget?

Der er 200 points til manden/kvinden der kan hjælpe med dette problem!
Avatar billede some-one Nybegynder
18. november 2007 - 14:52 #1
Med "helt pr. automatik. Jeg vil ikke røre en finger." mener jeg, at jeg ikke vil til at gå ind og ændre i nogen sider eller noget hver gang der bliver oprettet en ny side. Det skal den så at sige "selv finde ud af".
Avatar billede coderdk Praktikant
18. november 2007 - 21:54 #2
Såfremt der bruges Apache som webserver, opret en .htaccess i roden af sitet med indholdet:

RewriteEngine On
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /mappe/$1

Det burde virke ;)
Avatar billede some-one Nybegynder
18. november 2007 - 22:03 #3
Der bruges Apache og Linux Fedora.

Jeg laver bare en .htaccess i roden af... mit site? altså sammen med index.php mm. ==> /home/www/her???

Bare copy & paste af det du skriver? Jeg skal slet intet ændre (udover "mappe" i nederste linie) ??
Avatar billede coderdk Praktikant
18. november 2007 - 22:10 #4
Yes, det burde virke :)
Avatar billede some-one Nybegynder
19. november 2007 - 09:01 #5
Jeg kigger lige på det senere i dag. Hvis det virker så er alle points dine og fortjent! :-)

Mvh
Avatar billede some-one Nybegynder
19. november 2007 - 09:27 #6
Jeg kiggede på det lidt hurtigere end forventet. Hehe...
Det virker tilsyneladende. Forstår ikke ikke koden, men det virker og så er resten ligemeget.
Jeg har dog to ting, som jeg håber også kan lade sig gøre:

1) Jeg vil gerne have at det er case sensitive. Dvs at om man skriver "Minhjemmeside" eller "minhjemmeside" så skal den føre til den samme side.

2) Den kode der er skrevet i min htaccess viderestiller brugeren til /mappe/bruger

Jeg har valgt: http://www.domæne.dk/sider/brugerne

Dvs. at når "jeg" skriver www.domæne.dk/jens/ så henviser den til www.domæne.dk/sider/jens

Jeg ønsker ikke at brugeren skal kunne se mappen "sider". Der skal blot stå domæne.dk/jens/index.php - således at brugeren slet ikke kan se at mappen "sider" eksisterer...

Jeg håber, at det jeg ønsker er muligt... :) På forhånd, tak
Avatar billede coderdk Praktikant
19. november 2007 - 10:42 #7
1) Den er case sensitive, fordi det kører på et linux/unix system. Det er der ikke rigtig noget at gøre noget ved. Derfor foreslår jeg at du f.eks. laver en strtolower() når brugeren opretter sig, og ændrer .htaccess til:

RewriteEngine On
RewriteBase /
RewriteMap lowercase int:tolower
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-F
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /sider/${lowercase:$1}

Mht. 2) så burde det da virke? Brugeren ser ikke "/sider/" men kun f.eks. "/jens/index.php" ?
Avatar billede some-one Nybegynder
19. november 2007 - 11:10 #8
1) En strtolower() ??? Hvor og hvordan? Hehe... Men jeg kan ikke lave så den selv kan finde ud af at prøve med "jens" i stedet for "Jens" eller finde ud af at der er tale om den samme bruger? Andet ville jo være skod :(

2) Desværre ikke... brugeren ser: www.domæne.dk/mappe/jens/index.php :(
Avatar billede coderdk Praktikant
19. november 2007 - 11:20 #9
1) Når brugeren oprettes laver du lige $brugernavn = strtolower($brugernavn)... Det kan være det er skod, men du kan nok ikke gør det anderledes...

Et request til www.domæne.dk/jens/index.php burde ikke vise www.domæne.dk/sider/jens/index.php for brugeren. Det er muligt, at hvis brugeren skriver relative URL'er i sin HTML (i.e. <a href="test.php">) så vises /sider/jens/test.php - løsningen er at bruge absolutte URL'er, i.e. <a href="/jens/test.php">
Avatar billede some-one Nybegynder
20. november 2007 - 22:34 #10
1) Hvad gør den? Sådan at man kan tilgå navnet, skrevet med lille? eller?

2) Jeg har fundet ud af problemet. Hvis jeg skriver:

"www.domæne.dk/jens" så bliver resultatet: www.domæne.dk/mappe/jens/

men skriver jeg:

"www.domæne.dk/jens/" så bliver resultatet: www.domæne.dk/jens/ !

Kan jeg rette så man kan nøjes med at skrive: www.domæne.dk/jens og så komme til siden - uden at "mappe" vises?
Avatar billede coderdk Praktikant
21. november 2007 - 01:58 #11
1) strtolower laver bare navnet til småt - Jeg vil med andre ord have dig til at tvinge alle dine brugere til at de bliver skrevet med småt ;)

2) Det forstår jeg ikke... Du er sikker på at du ikke har en mappe eller fil der hedder noget med jens?

I øvrigt burde

RewriteRule ^(.*)$ /sider/${lowercase:$1}

være

RewriteRule ^(.+)$ /sider/${lowercase:$1}

Men den burde da virke... Jeg bruger selv lignende varianter mange steder!
Avatar billede some-one Nybegynder
21. november 2007 - 08:10 #12
1) Jeg bruger et "host panel" hvori strtolower allerede er i brug (har nu testet det ved at oprette en bruger med stort begyndelsesbogstav. Den kan kun tilgås med et lille begyndelsesbogstav.

2) Jeg kan kun få dit script #1 til at virke. Script 2 giver en fejl-500 - selv efter din rettelse, som du kom med i går.
Men den til allersidst gør altså hele forskellen :-S
Kan vi ikke gøre noget ved det, mon? På én eller anden måde!? Opsætning i Apache, .htaccess, anden script eller noget helt fjerde?

På forhånd tak
Avatar billede some-one Nybegynder
01. april 2009 - 10:24 #13
coderdk < skriver du lige et svar? Så er pointene dine.
Problemet blev løst, men fik aldrig skrevet mere herinde. Sorry :)
Avatar billede coderdk Praktikant
01. april 2009 - 10:37 #14
Ok :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester