Michi: Session-Portale mit URLs ohne Session-ID in SuMa-Index?

Hallo,

auf allen Seiten eines Portals wird ein Modul eingebunden, das bei eingeloggtem Zustand userspezifische Daten anzeigen soll.

Also - so meine ich - müssen alle einbindenden Skripte mit session_start() beginnen, da sonst auf Session-Daten nicht zugegriffen werden kann. Nun wird die Session-ID beim Navigieren in der Browser-URL zwar wie üblich nicht angezeigt, bei der Anzeige in etablierten Suchmaschinen dagegen schon.

Daraus ergeben sich neben diesem ästhetischen Mangel wahrscheinlich auch noch Nachteile wie schlechteres Ranking, weil sich bei jedem Besuch der Bots aufgrund Generierung einer neuen Session die Session-ID und damit die URL ändert. (Kein PR-Aufbau usw.)

Gibt es einen einfachen Weg, weiterhin auf allen Seiten auf Session-Daten zuzugreifen und dennoch möglichst schlichte URLs ohne Parameterextension zu bekommen oder geht das nur über Mod Rewrite etc.?

Gruß Michi

  1. Moin!

    Gibt es einen einfachen Weg, weiterhin auf allen Seiten auf Session-Daten zuzugreifen und dennoch möglichst schlichte URLs ohne Parameterextension zu bekommen oder geht das nur über Mod Rewrite etc.?

    Schau mal Deine php.ini an:

    Findet sich eine Zeile:
    session.use_only_cookies = 1

    ... dann werden Session-Daten nicht automatisch in den links verbaut, wenn der Useragent (hier: google-bot) keine Cookies will.

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development
    1. Hi fastix,

      Schau mal Deine php.ini an:

      Findet sich eine Zeile:
      session.use_only_cookies = 1

      ... dann werden Session-Daten nicht automatisch in den links verbaut, wenn der Useragent (hier: google-bot) keine Cookies will.

      Das ist eine Lösung. (Damit ist man zwar auf die Aktivierung von Cookies im Browser angewiesen, ist aber in den meisten Browsern standardmäßig gegeben und bleibt auch in der Folge so, denk ich?)

      Habs jetzt im Login-Skript mal so eingeflickt:

      __________________________________________________________________

      session_start ( );

      ini_set ( 'display_errors' , 1 );
        error_reporting ( E_ALL );

      ini_set( 'session.use_only_cookies', 1 );

      __________________________________________________________________

      Die Einstellung use_only_cookies müsste dann eben in ALLEN Session-basierten Skripten so ergänzt werden, wenn ich das richtig seh?

      (Ausschlaggebend sind ja nicht die Sessiondaten selber, sondern die Tatsache, dass eine Session geführt wird für die grundsätzliche Übertragung der Session-ID, google kann ja nun nicht wissen, welches Skript die Session-Daten generiert, dazu müsst es sich ja per BrutForce einloggen...? ;) )

      Gruß Michi

      1. echo $begrüßung;

        Habs jetzt im Login-Skript mal so eingeflickt:
          session_start ( );
          ini_set( 'session.use_only_cookies', 1 );

        In der Reihenfolge ist es nicht besonders sinnvoll. Du startest die Session, damit läuft der übliche Mechanismus los, also auch die Keks-Behandlung. Danach stellst du einen ini-Parameter um. Diese Aktion hat aber keine direkte Auswirkung auf die Session. Erst beim nächsten Schritt, der was mit der Session zu tun hat, könnte er berücksichtigt werden. Nach einem Session-Start kommen aber meist nur noch Zugriffe auf $_SESSION. Und die ändern an den bereits von sesison_start() gesendeten Header nichts mehr.

        echo "$verabschiedung $name";

        1. Alles Roger, danke Euch beiden. ;)

      2. Moin!

        Die Einstellung use_only_cookies müsste dann eben in ALLEN Session-basierten Skripten so ergänzt werden, wenn ich das richtig seh?

        Nö. Ein:

        php_flag session.use_only_cookies on

        in einer Datei namens .htaccess in jenem Verzeichnis für welches (inkl. der enthaltenen Unterverzeichnisse) dieses gelten sollte erledigt da ganze sauber genug. Vorsaussetzung ist, dass der Server dieses beachten darf (siehe httpd.conf: allow override)

        (Ausschlaggebend sind ja nicht die Sessiondaten selber, sondern die Tatsache, dass eine Session geführt wird für die grundsätzliche Übertragung der Session-ID, google kann ja nun nicht wissen, welches Skript die Session-Daten generiert, dazu müsst es sich ja per BrutForce einloggen...? ;) )

        mit session_start() wird eine neue Sitzung genau dann gestartet, wenn noch keine (gültige) existiert.

        Akzeptiert der Browser keine Cookies versucht PHP an alle URIs eine session-Variable ranzuhängen.

        Ein

        ~> grep session /etc/php/apache2/php.ini

        (oder wo auch immer die Deine ist) sollte Dir mehr sagen.

        (Grep und anderes brauchbares Zeug  für Windows gibt es hier: http://unxutils.sourceforge.net/ )

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Seminare, Training, Development