Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:32 Der er 18 kommentarer og
1 løsning

?PHPSESSID=0be37d894e8cfb0872db7f009d4d7977

Hvordan undgår jeg at PHP smider dette på samtlige af mine links ? Når jeg har haft klikket på det så vises resten af sitet UDEN denne phpsessid ... men det irriterer mig at det står på den første side ... det ser uprof. ud *G*

jeg har en include fil hvori der som den første linie står: session_start()

og ja .. jeg SKAL bruge sessions ;o)

Hvordan slipper jeg for det ?
Avatar billede bbs Nybegynder
29. august 2001 - 15:33 #1
lol, tdaugaard laver spørgsmål ..
uhørt ;)
Avatar billede limemedia Nybegynder
29. august 2001 - 15:34 #2
Din sessionhåndtering er sat til at køre som parameteroverførsel. Kan du ikke bruge cookies til det ?
Avatar billede netsrac Praktikant
29. august 2001 - 15:34 #3
Noget med session silent mener jeg.
Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:34 #4
bbs:> Næj næj .. det er skam ikke uhørt ... har oprettet mange PHP spm.\'s den sidste måneds tid ... :o)
Avatar billede ztyxx Nybegynder
29. august 2001 - 15:35 #5
/enig bbs, nu står verdenen sq da ikke mere :o)
Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:36 #6
ljweb:> Nopes .. det er den ikke, for efter første klik så virker det fint.
Men jeg har læst i PHP doc. at den gør dette hvis der ikke er adgang til cookies eller at der opstår en fejl. Så sender den SessionID\'et med via URL\'en.

Bruge cookies kunne jeg måske godt, men har det bedst med Sessions ;o)
Avatar billede limemedia Nybegynder
29. august 2001 - 15:36 #7
Jeg har lavet min \"egen\" version jeg bruger fremfor PHP\'s


?php
    $SESSION_DEFS = array();
    $SESSION_DEFS[\"ID\"] = session_get_id();
    $SESSION_DEFS[\"UserID\"] = session_get_userid();

    function session_set_cookie() {
        global $GLOBAL_DEFS;
        global $SESSION_COOKIE;

        if($SESSION_COOKIE) {
            return true;
        }

        srand((double)microtime()*1000000);
        $loop = true;
        while($loop == true) {
            $SESSION_COOKIE = md5(uniqid(rand()));
            if(!mysql_num_rows(mysql_query(\"SELECT SessionID FROM session WHERE Cookie=\'$SESSION_COOKIE\'\"))) {
                $loop=false;
            }
        }
        $Stamp = date(\"Y-m-d H:i:s\");
        mysql_query(\"INSERT INTO session (Cookie,Stamp) VALUES (\'$SESSION_COOKIE\',\'$Stamp\')\") or global_site_error(\"servererror\");;
        setcookie(\"SESSION_COOKIE\",$SESSION_COOKIE,time()+63072000);  # 630 days cookie
    }

    function session_remove_cookie() {
        global $GLOBAL_DEFS;
        global $SESSION_COOKIE;

        mysql_query(\"DELETE FROM session WHERE Cookie=\'$SESSION_COOKIE\'\");
        setcookie(\"SESSION_COOKIE\",\"\",time()-3600);
        setcookie(\"SESSION_COOKIE\",\"\",time()-3600,$GLOBAL_DEFS[\"location_base\"].\"/\");
    }

    function session_link_userid($UserID) {
        global $SESSION_COOKIE;
       
        if (!$UserID) $UserID = 0;
        mysql_query(\"UPDATE session SET UserID=$UserID WHERE Cookie=\'$SESSION_COOKIE\'\") or global_site_error(\"servererror\");;
    }

    function session_unlink_userid() {
        global $SESSION_COOKIE;
       
        mysql_query(\"UPDATE session SET UserID=0 WHERE Cookie=\'$SESSION_COOKIE\'\") or global_site_error(\"servererror\");;
    }

    function session_get_id() {
        global $SESSION_COOKIE;
       
        $res = mysql_query(\"SELECT SessionID FROM session WHERE Cookie=\'$SESSION_COOKIE\'\") or global_site_error(\"servererror\");;
        if(!mysql_num_rows($res)) {
            return 0;
        }
        $foo = mysql_fetch_array($res);
        return $foo[\"SessionID\"];
    }

    function session_get_userid() {
        global $SESSION_DEFS;
       
        $res = mysql_query(\"SELECT UserID FROM session WHERE SessionID=\".$SESSION_DEFS[\"ID\"]) or global_site_error(\"servererror\");;
        if(!mysql_num_rows($res)) {
            return 0;
        }
        $foo = mysql_fetch_array($res);
        return $foo[\"UserID\"];
    }
?>
Avatar billede uller Nybegynder
29. august 2001 - 15:38 #8
Man kan godt sætte session styringen til at kører via cookies, men det er som i sikkert ved ganske upålideligt, da ikke alle brugere har cookies enabled...

hvis du for alt i verden ikke gider at se på sessionid\'et i urlen kan du bare lave et frame set..
Avatar billede limemedia Nybegynder
29. august 2001 - 15:38 #9
CREATE TABLE session (
  SessionID int(10) unsigned NOT NULL auto_increment,
  UserID int(10) unsigned NOT NULL default \'0\',
  Cookie varchar(50) binary NOT NULL default \'\',
  Stamp datetime NOT NULL default \'0000-00-00 00:00:00\',
  PRIMARY KEY  (SessionID),
  KEY SessionID (SessionID),
  KEY UserID (UserID)
) TYPE=MyISAM;
Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:38 #10
ljweb:> Ser effektivt nok ud, men nu er systemet lavet med sessions og jeg ooorker ikke at lave det om da jeg MEGET gerne snart vil have det op (PHP vers. af FOTX)
Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:39 #11
uller:> frames er LIGE så uprof. som PHPSESSID såååe *G*
Avatar billede limemedia Nybegynder
29. august 2001 - 15:41 #12
tdaug >> I know :) dovendyr
Avatar billede lundsfryd Nybegynder
29. august 2001 - 15:42 #13
Jeg vil gætte på, at du kan undgå problemet ved øverst i dit script at tilføje

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

(eller sådan noget - jeg har ikke tid til den store research lige nu, men kan vende tilbage lidt senere med en forklaring)
Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:44 #14
lundsfryd:> Så laver jeg jo om på php.ini, right ?
Avatar billede netsrac Praktikant
29. august 2001 - 15:45 #15
Det står jo lige her http://www.php.net/manual/en/ref.session.php

session.use_cookies specifies whether the module will use cookies to store the session id on the client side. Defaults to 1 (enabled).

session.use_trans_sid whether transient sid support is enabled or not if enabled by compiling with --enable-trans-sid. Defaults to 1 (enabled).
Avatar billede uller Nybegynder
29. august 2001 - 15:48 #16
>> tdaugaard

Jeg kunne ikke være mere enig. :o)
Avatar billede lundsfryd Nybegynder
29. august 2001 - 15:49 #17
tdaugaard >> ja og nej - du overrider den værdi, der ligger i php.ini, men kun gældende for det pågældende script.

Men du mister naturligvis muligheden for at sessions virker uden cookies.
Avatar billede tdaugaard Nybegynder
29. august 2001 - 15:55 #18
hmm ... jeg tror jeg må holde mig til PHPSESSID så .. men ljweb\'s system der ser også fint ud ... tror jeg må kigge lidt på det :-)

Tak til jer alle men point må gå til ljweb da hans løsning ser ret effektiv ud ...
Uenige ? Så sig frem :o)
Avatar billede chruker Nybegynder
30. august 2001 - 18:33 #19
tdaugaard >> Du kan nøjes med at sætte:

session.use_trans_sid = 0

i php.ini

så slåes transient session id\'s fra. Og dermed tilføje php ikke PHPSESSID til de relative links.
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