Avatar billede webcreator Nybegynder
10. august 2003 - 09:19 Der er 44 kommentarer og
1 løsning

Fjern session i URL

Hej.

Når der bliver lavet en session på min server, skrives denne i adressebaren. Fx. :

filnavn.php?PHPSESSID=8b8a7bdc55cf12b37b5r30e5fc368311

Jeg udskriver dog disse filnavne, og vil gerne slippe for alt der starter med PHPSESSID, og følger efter - så det kun er filnavn og evt. variabler der står tilbage.

Altså er flg. tilladt : filnavn.php?id=3
Avatar billede googolplex Novice
10. august 2003 - 09:47 #1
Indsæt dette på dine sider:

ini_set("session.name", "sid");

Så ændres PHPSESSID til sid.
Avatar billede webcreator Nybegynder
10. august 2003 - 09:48 #2
og hvad er sid ?
Avatar billede webcreator Nybegynder
10. august 2003 - 09:48 #3
Og kan det evt. "skade" alle de andre sessions, jeg benytter på mit site ?
Avatar billede googolplex Novice
10. august 2003 - 09:50 #4
Hvis du vil have det helt væk:

ini_set("session.use_trans_sid", "0")

Men så virker sessions ikke længere for folk der ikke understøtter cookies.
Avatar billede googolplex Novice
10. august 2003 - 09:51 #5
'sid' er bare en 'pæn' forkortelse for 'session id', den de fleste benytter (inklusiv undertegnede).
Avatar billede webcreator Nybegynder
10. august 2003 - 09:52 #6
Nej, det duer ikke. Sessions skal ikke væk.

Det der helt nøjagtigt sker er, at jeg har en online.php-fil som viser, hvem der er online, og hvor de befinder sig. Her vises altså en URL til personens "location". Men her står SESSID'et også :(
Avatar billede googolplex Novice
10. august 2003 - 09:54 #7
Du kan ikke få det væk fra adresse linien og så stadig få det til at virke hos folk der ikke understøtter sessions. Hvis du ikke kan benytte cookies og ikke vil benytte adresselinien, så kan du ikke overføre dine sessions. Pest eller kolera, men sådan er det :-|
Avatar billede googolplex Novice
10. august 2003 - 09:57 #8
'understøtter sessions' = 'understøtter cookies'
Avatar billede webcreator Nybegynder
10. august 2003 - 09:57 #9
Nej, men når jeg nu udskriver links'ne til, hvor folk befinder sig på sitet, så kunne man måske med en eller anden "ereg"-funktion fjerne alt, der begynder med PHPSESSID= og frem til næste ?-tegn.

Hvis jeg har flg. filnavn :

filnavn.php?id=14&PHPSESSID=8b8a7bdc55cf12b37b5r30e5fc368311&skriv=Hej

Så er det _kun_ &PHPSESSID=8b8a7bdc55cf12b37b5r30e5fc368311 der skal væk !
Avatar billede googolplex Novice
10. august 2003 - 09:59 #10
Ja, men så virker det ikke længere. Men det er et problem, du må vælge, sorry :(
Avatar billede googolplex Novice
10. august 2003 - 10:01 #11
Men du kan indsætte 'ini_set("session.use_trans_sid", "0")' og så skrive på din side at login osv (de ting der kræver sessions) KRÆVER at folk accepterer cookies.
Avatar billede webcreator Nybegynder
10. august 2003 - 10:01 #12
*Hulk*

Selvfølgelig kan det lade sig gøre. Det er bare værdier i en database, som udskrives :-)
Avatar billede webcreator Nybegynder
10. august 2003 - 10:01 #13
Spørgsmålet er bare hvordan :)
Avatar billede webcreator Nybegynder
10. august 2003 - 10:02 #14
Men hvad gjorde den første kode du sendte ?
Den der laver det om til sid
Avatar billede googolplex Novice
10. august 2003 - 10:03 #15
Men hvis du ikke skal bruge sessions på pågældende side, så kan du jo bare deaktivere dem :P

Men nej, der er ingen løsning som du vil have det, det spørgsmål har været oppe 100 gange og jeg har aldrig set nogen løsning i hvert fald.
Avatar billede webcreator Nybegynder
10. august 2003 - 10:03 #16
Egentlig, så handler det også om, at folk får vist en anden bruges PHPSESSID, og kan gå ind på en side med dette ID. Og jeg aner ikke, om dette kan give problemer.
Avatar billede googolplex Novice
10. august 2003 - 10:04 #17
Den første kode laver bare 'PHPSESSID' om til 'sid' (eller hvad du vil kalde dine sessions). 'PHPSESSID' er jo med stort og ekstra grimt, 'sid' lidt pænere :)
Avatar billede webcreator Nybegynder
10. august 2003 - 10:04 #18
bruges = brugers
Avatar billede webcreator Nybegynder
10. august 2003 - 10:05 #19
Nåå, heh, ja self :)
Avatar billede googolplex Novice
10. august 2003 - 10:06 #20
Jo, det kan det! Det er derfor FOLK BØR ACCEPTERE COOKIES, men hvis det er et sikkerhedsproblem, så anbefaler klart at du deaktivere sessions for folk der ikke understøtter cookies og så skriver det på din side.

Fx.

'Af sikkerhedsmæssige årsager kræver login systemet at du accepterer cookies. Se her hvordan du ændrer dine cookies indstillinger (link).'

Eller lignende.
Avatar billede webcreator Nybegynder
10. august 2003 - 10:13 #21
Well, det kan du have ret i. Men vi vil ikke pådutte brug af cookies.

Jeg må finde en brugbar løsning somehow..
Avatar billede webcreator Nybegynder
10. august 2003 - 10:14 #22
Jeg har bare meget svært ved at se problemet i at isolere filnavnet fra flg. linie (hvilket ville være tilstrækkeligt :

filnavn.php?sid=89374fsf89few98u2

Det er for pokker bare en normal streng, hvor jeg ønsker at hente filnavnet :-)
Kan godt leve med, at evt. IDer ikke kommer med..
Avatar billede googolplex Novice
10. august 2003 - 10:18 #23
Er det kun en enkelt side det ikke må vises på ?
Avatar billede googolplex Novice
10. august 2003 - 10:19 #24
Men selvfølgelig kan det lade sig gøre at fjerne det fra linien med string-funktioner eller ereg/preg, men så virker det ikke længere.
Avatar billede webcreator Nybegynder
10. august 2003 - 10:22 #25
Ja, det er KUN en side de ikke må vises på. Alle brugere får lokket deres "position". Dvs. hvilken side de står på. Og hvis de får et SID i deres adressebar, så kan _alle_ besøge den side, med samme SID - for loggen er offentlig tilgængelig. Den viser jo bare dem der er online lige nu :)

Filen som viser brugerne der er online, og viser deres placering, hedder online.php. Og det er _kun_ her, SID'et ikke må vises !
Avatar billede googolplex Novice
10. august 2003 - 10:22 #26
Er faktisk ikke sikker på, det kan lade sig gøre, det er jo PHP der indsætter PHPSESSID automatisk i dine adresse efter alt det andet.

MEN!!! Du kan jo skrive 'ini_set("session.use_trans_sid", "0")' og så indsætte dit sessionid manuelt i slutningen af dine adresser der hvor du skal bruge det.
Avatar billede googolplex Novice
10. august 2003 - 10:24 #27
Hvorfor laver du så ikke din log om, du kan da sagtens finde en løsning hvor det ikke bliver et problem.

http://www.udvikleren.dk/article.php?aid=148&techid=6
Avatar billede webcreator Nybegynder
10. august 2003 - 10:27 #28
Jeg vil ikke bruge andres løsninger.

Det er bare det _lille_ problem, at den KUN skal udskrive FILNAVNET !
Det må være noget med en ereg, der tager det første i tekststrengen frem til 3 tegn efter punktummet. Easy as that. Jeg kan bare ikke omsætte det til PHP.
Avatar billede googolplex Novice
10. august 2003 - 10:40 #29
Problemet er, at du ikke kan fjerne den på forhånd. PHP indsætter selv 'PHPSESSID=2323m2kj343j42o4kj23l4j23l4kj234lkj' i enden af dine adresse. Kan ikke se hvordan du vil fjerne det, men det kan være der er en anden der kan :)
Avatar billede squashguy Nybegynder
10. august 2003 - 10:42 #30
hvis $str indeholder urlen, kan du fjerne sid/phpsessid sådan:

$str = eregi_replace("&(sid|phpsessid)=.*$", "", $str);
Avatar billede webcreator Nybegynder
10. august 2003 - 10:42 #31
ok, helt basalt. Jeg skal udskrive filnavnet fra denne variabel. Kan du klare det ?

$filnavn = "filnavn.php?sid=398df786we687g7t876qw7e6";

Tekst-strengen ligger blot i en variabel.
Avatar billede webcreator Nybegynder
10. august 2003 - 10:43 #32
Perfekt, tak squashguy. Det var bare det jeg ledte efter :)
Avatar billede webcreator Nybegynder
10. august 2003 - 10:48 #33
squashguy > Det må så være en detalje, at det ikke virker :)
Avatar billede webcreator Nybegynder
10. august 2003 - 10:51 #34
Kan det skyldes, at jeg tidligere har erstattet &-tegn med &  ?
Avatar billede squashguy Nybegynder
10. august 2003 - 10:51 #35
$str = "filename.php?id=3&test=4&phpsessid=1234";
$str = eregi_replace("&(sid|phpsessid)=.*$", "", $str);
echo $str;

spytter den så ikke det hele ud, undtaget sid?
Avatar billede squashguy Nybegynder
10. august 2003 - 10:52 #36
den tager forgivet at & er foran sid, ja
Avatar billede webcreator Nybegynder
10. august 2003 - 10:52 #37
Prøver..
Avatar billede squashguy Nybegynder
10. august 2003 - 10:53 #38
denne kigger efter &

$str = eregi_replace("&(sid|phpsessid)=.*$", "", $str);
Avatar billede webcreator Nybegynder
10. august 2003 - 10:56 #39
Ah, nu ved jeg det.

Det er fordi SESSID'et kommer efter et ? tegn.

/logiin.php?PHPSESSID=3745246a45eb0g6e7ge99234gd3d8ac712
Avatar billede webcreator Nybegynder
10. august 2003 - 10:57 #40
Så jeg smider lige et ? ind i stedet
Avatar billede webcreator Nybegynder
10. august 2003 - 10:58 #41
Duer ikke med  :
$str = eregi_replace("?(sid|phpsessid)=.*$", "", $str);
Avatar billede squashguy Nybegynder
10. august 2003 - 10:58 #42
hehe ja, den glemte jeg helt at tage højde for :)

$str = eregi_replace("(&|\?)(sid|phpsessid)=.*$", "", $str);
Avatar billede squashguy Nybegynder
10. august 2003 - 11:00 #43
eller bare

$str = eregi_replace("\?(sid|phpsessid)=.*$", "", $str);

hvis sid altid er den eneste parameter
Avatar billede webcreator Nybegynder
10. august 2003 - 17:13 #44
Perfekt, squashguy. Takker.

Smider du et svar, tak :)
Avatar billede squashguy Nybegynder
11. august 2003 - 17:22 #45
np :)
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