session_start + spidercheck

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • session_start + spidercheck

    Hallo Leute,

    hab hier ein selbstzusammengewürfeltes Script um zu schauen ob der Besucher eine Suma ist oder nicht. Darauf hin wird session_start ausgeführt oder auch nicht.


    session_start.inc.php:
    PHP-Code:
    <?
    session_name("s");
    $spiders = array("AbachoBOT",
    "ia_archiver",
    "Scooter",
    "AltaVista-Intranet",
    "FAST-WebCrawler",
    "Acoon Robot",
    "Atomz",
    "Crawler",
    "DeepIndex",
    "ArchitextSpider",
    "Arachnoidea",
    "Fast PartnerSite Crawler",
    "FAST Data Search Crawler",
    "KIT-Fireball",
    "Googlebot",
    "Slurp.so/1.0",
    "UltraSeek",
    "InfoSeek Sidewinder",
    "MantraAgent",
    "Lycos_Spider_(T-Rex)",
    "HenryTheMiragoRobot",
    "MSNBOT/0.1",
    "Gulliver",
    "Fluffy the spider",
    "speedfind ramBot xtreme",
    "teoma_agent1",
    "appie",
    "marvin/infoseek"); 
    $from_spider=FALSE; 
    foreach($spiders as $Val) 

    if (eregi($Val, $_SERVER["HTTP_USER_AGENT"])) 

    $from_spider=TRUE; 
    break; 


    // Session 
    if(!$from_spider) 
    session_start();
    ?>
    die Datei wird in sämtlich relevanten Dateien ganz oben includet:

    PHP-Code:
    <? 
           include($_SERVER['DOCUMENT_ROOT'] . "/includes/session_start.inc.php");
    So nun zu mein Problem:
    Bei mir und mehreren Kunden funktioniert das Script, nur bei einigen anderen Kunden leider nicht.

    Bei den betroffenden Kunden sind zum teil Cookies erlaubt, jedenfalls einige.
    wenn die sich nun durch mein Shop bewegen geht die Session manchmal verloren.


    könnte es an der letzten if abfrage liegen?

    PHP-Code:
     if(!$from_spider
    session_start(); 
    Der spider check selbst funktioniert eigentlich ganz gut.
    mfg
    marc75

    <Platz für anderes>

  • #2
    der useragent von dir und deinen benutzern wäre nicht schlecht.

    wann geht die session denn verloren? nach gut 20 minuten nicht weiter-surfen?

    Kommentar


    • #3
      so musste das jetzt nochmal rauskramen.


      Mein Useragent wird der originale von Microsoft sein.

      Bei den Kunden weiss ich nicht, denke aber nicht das so viele den manuell geändert haben in googlebot und so.

      Hab schon überlegt ein anderen spidercheck zu basteln.

      Am besten die session erst starten wenn der Warenkorb das erste mal aufgerufen wird oder jemand die Einlogg Seite aufruft. Die Seiten könnte man ja hinter formtags verstecken, damit spiders die nicht aufrufen.

      naja zurück zum Problem,

      Am Anfang haben die Kunden sich nicht einloggen können und einige hatten dazu noch probleme mit dem Warenkorb,

      Anmeldeproblem:
      Jedes mal nach dem versuchten Anmelden kam wieder die Anmelde Seite mit den Eingabe feldern und der WK war danach leer (also session weg), Eigentlich sollte nach dem Anmelden die Bezahlauswahl kommen.

      Hab das Anmeldescript jetzt neu zusammengesetzt und umbenannt, jetzt können die sich einloggen, hab dazu noch eine Zwischenseite gemacht wo denen mitgeteilt wird das die jetzt eingeloggt sind. und ein Link zur Bezahlauswahl. Wenn die jetzt auf den Link klicken sind sie wieder raus aus dem System, Wk leer (also session weg).

      Warenkorb Problem:
      Kunde legt ein Artikel in den Wk, dann klickt er auf Weiter Shoppen, WK wieder leer. Hier weis ich allerdings nicht ob das auch passiert wenn die Kunden statt auf Weitershoppen gleich auf eine Kategorie klicken.


      Hab jetzt alles (Katalog, Wk, Bestellablauf etc) durch den W3 html vali.
      gejagt und die angezeigten Fehler entfernt. Hab dazu noch in den Metas
      folgendes eingefügt, um den Browserchache zu umgehen.

      PHP-Code:
               echo "<meta http-equiv=\"pragma\" content=\"no-cache\">\n";
              echo 
      "<meta http-equiv=\"expires\" content=\"0\">\n"
      und hab noch

      PHP-Code:
      ini_set 'arg_separator.output'"&amp;"); 
      eingefügt da & nicht html konform ist.

      Nutzt leider bis jetzt alles nicht viel.
      mfg
      marc75

      <Platz für anderes>

      Kommentar


      • #4
        hab da gerade was gefunden wegen dem bestellablauf.

        wenn ein kunde sich einloggt wird folgendes in der session registriert:

        PHP-Code:
            $_SESSION['com'] = "true";
            
        $_SESSION['mail'] = $email
        im Script für die bezahlauswahl wird geprüft ob der kunde eingeloggt ist:

        PHP-Code:
        if($com == "false")
        {
            
        $von "warenkorb";
            include(
        $dateiPfad "themes/bestellen/nicht_angemeldet.inc.php");
        }


        if((
        $com == "true") && ($action != "s2") && ($action != "abwicklung"))
        {
            include(
        $dateiPfad "themes/bestellen/versand.inc.php");

        jetzrt hab ich bei dclp-faq gesehen das die sessionvariable

        mit $_SESSION['com'] und nicht mit $com aufgerufen werden soll. ist das so richtig?

        Die Browserabhängigkeit wegen meines Problems kann ich hierbei allerdings noch nicht erkennen.
        mfg
        marc75

        <Platz für anderes>

        Kommentar


        • #5
          Original geschrieben von marc75
          jetzrt hab ich bei dclp-faq gesehen das die sessionvariable

          mit $_SESSION['com'] und nicht mit $com aufgerufen werden soll. ist das so richtig?
          ja,ist es

          warum sollte es flashc sein?
          Ich denke, also bin ich. - Einige sind trotzdem...

          Kommentar


          • #6
            war falsch von mir ausgedrückt, meinte, ist es besser es so zu schreiben? vermute mal einfach ja.
            mfg
            marc75

            <Platz für anderes>

            Kommentar


            • #7
              isses, und zwar deswegen:
              PHP-Code:
              session_start();
              //daten prüfen
              $_SESSION['logged_in']=daten_ok();
              echo 
              '<a href="geheim.php">geheime seite</a>';

              //geheim.php
              session_start();
              if (
              $logged_in)
                echo 
              'Sie sind eingeloggt.';
              if (!
              $_SESSION['logged_in'])
                echo 
              'Sie sind doch nicht eingeloggt.'
              wenn du den link anklickst funktioniert alles

              wenn du aber im browser direkt geheim.php?logged_in=1 eintippst, fällst du auf die nase, wenn du das nichm it $_SESSION machst
              Ich denke, also bin ich. - Einige sind trotzdem...

              Kommentar

              Lädt...
              X