unset $_SESSION und frage zur DB

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

  • unset $_SESSION und frage zur DB

    Hi @all, mal wieder seit langer langer Zeit *g*

    ich hab vor kurzem wieder angefangen mit PHP und ich hab eine Frage und stehe außerdem vor noch einem anderen Problem.

    Also folgender code

    PHP-Code:
        if ( strlen($_POST['username']) >= $lgh['min_username'] || strlen($_POST['password']) >= $lgh['min_password'] )
        {
            
    $username $_POST['username'];
            
    $password $_POST['password'];

            
    $usr checkuserlogin ($username$password$sid);
            
            if (!
    $usr)
            {
                
    redirect ("index.php",2);
            }
            else
            {
                
    redirect ("index/index.php");
            }
            
        }
        else
        {
            
    redirect ("index.php",1);
        } 
    redirect ist folgende funktion

    PHP-Code:
        function redirect ($site$errorid=false$e=false)
        {
            global 
    $p;
            global 
    $ext;
            
            
    $g = (!$e) ? "?" $e;
                
                if (isset(
    $errorid))
                {
                    
    $_SESSION['errorid'] = $errorid;
                }
            
            
    header ("Location: " $p['www'] . $site $g $ext);
        } 
    und in der index steht folgendes

    PHP-Code:
            if (isset($_SESSION['errorid']))
            {
                
    $e_id $_SESSION['errorid'];
                echo 
    create_error_box ($error[$e_id],100)."<br>";
                unset(
    $_SESSION['errorid']);
            } 
    Der User füllt das Formular aus und die Daten werden überprüft. Falls was nicht stimmt mit den Daten wird er mit einer FEhlerid in $_SESSION['errorid'] zurück zur index per header geleitet. Auf der Index wird die Errorbox angezeigt mit dem Text der jeweiligen FEhlerid und die session wird nach der anzeige mit unset zurückgesetzt, dass der Fehler nicht immer wieder angezeigt wird. Die Weiterleitung funktioniert auch eigentlich ganz gut nur das mit der Sessionvariable funktioniert nicht richtig. D.h. wenn ich das formular einfach nur submitte dann funktionert das mit dem error eigentlich schon, aber nachdem ich wieder submitte funktioniert es nicht mehr ... dann kann ich soviel submitten wie ich möchte die sessionvar errorid wird nicht mehr übergeben - komischerweise erst wieder wenn ich den browser aktualisert habe, aber dann halt auch nur wieder 1 mal. Was fällt euch dazu ein? gibts probleme bei den sessions wenn ich mit header weiterleite?

    Meine zweite Frage dreht sich nur kurz um den Aufbau einer DBtabelle:
    Ich möchte jeden Schritt der User auf meiner Seite in einer LogTabelle zurückverfolgen ... ich habe zwei vorschläge und möchte kurz eure Meinung darüber einholen:

    1) Man macht eine Tabelle mit id, userid, userip, siteid, timestamp und träcgt einfach alles ein was passiert (ist wahrscheinlich standartausführung so)
    2) Man macht pro User eine Tabelle mit den Namen projekt_userid_log mit den Feldern: id, userip, siteid, timestamp (Bsp für den Namen: projekt123_16_log) - die Tabelle wird automatisch erstellt wenn sich ein User registriert (so hatte ich mir das vorgestellt)

    Ich denke bei 1 ist das Problem, dass die Tabelle recht bald ziemlich groß wird (je nach Anzahl der Benutzer) und daher es evntl länger dauert bis man einzelne Daten abgerufen hat. Ich tendiere daher zu 2... wie gesagt: eure Meinung. Was sind die Nachteile bei 2 - wie löst ihr auf euren Seiten dieses Thema (falls ihr sowas benützt)?

    danke
    cya CrazyPip

  • #2
    Hi,

    3)
    Du schreibst dir eine Klasse, welches in ein Textfile für jeden User (oder pro User ein eigenes File) die Aktionen aufzeichnet nach einem bestimmten Muster.

    123.45.64.876/username/12.12.2008/siteid/etc...
    am Ende fügst du nen Zeilenumbruch ein und der nächste Eintrag erfolgt dann darunter, oder du trennst die Einträge einfach mit einem Semikolon oder sonst was.

    Die Klasse liest diese Infos dann halt auch wieder aus und macht dir bunte Tabellen oder sonstwas.

    Nur ein weiterer Vorschlag, was davon am Besten ist weiß ich nicht
    Aber die Lösung mit einer Tabelle pro User finde ich schlecht...
    Gruß Thomas

    Kommentar


    • #3
      hi thomas,

      ich wollte eigentlich auf eine DB zurückgreifen weil das zugreifen, beschreiben, ändern, löschen einfacher ist und vor allem viel schneller bearbeitet wird, vor allem wenn man jeden Seitezugriff in die Datei eintragen möchte. Aber txtfile ist auch eine interessante Lösung...

      Kommentar


      • #4
        Die Session muß ja vor dem header mit session_start() gestartet werden, vielleicht liegts daran.

        was sagt denn error_reporting (E_ALL); ?

        Kommentar


        • #5
          Original geschrieben von CrazyPip
          Aber txtfile ist auch eine interessante Lösung...
          zumindest sinnvoller, als für jeden user eine eigene tabelle anzulegen.

          andererseits wertest du die daten nur für dich aus. wenn die datenmenge sehr gross wird, dauerts halt ein wenig. mein counter verwurstet seit 2 jahren alle zugriffe (mehrere mio datensätze) von verschiedenen seiten. das select braucht manchmal ein paar sekunden, sich dadurch zu wurschteln...aber da es nur meine neugirede befriedigt, ist es egal

          zu deiner eingangsfrage: häng sicherheitshalber mal session_name & session_id beim header-aufruf mit an.
          Kissolino.com

          Kommentar


          • #6
            also:
            session_start ist drin... und error_reporting gibt nichts aus.

            @wurzel
            ja die daten sind nur für mich bestimmt...im prinzip gehts auch nicht um die auswertung sondern eher um die bearbeitung und eben um die Eintragung. Ich mein es dauert halt länger bis man die txtFile geöffnet hat (fopen usw) und ausgelesen und überschrieben hat...da wäre eine INSERT INTO query schon um einiges schneller.

            Was denkt ihr?


            bei der Funktion redirect ist die Variable $ext die session_id() - also die wird immer mitgegeben... ist wirklich komisch das es funktioniert und auf einmal nicht mehr..wenn ich unset ($_SESSION[...]) kommentiere oder lösche funktioniert es eigentlich schon. Nur, dass die errorbox dann halt immer angezeigt wird bis die errorid überschrieben wird und ein anderer Text angezeigt wird...halt immer g - liegt also an unset. ich habs aber auch schon mit

            PHP-Code:
            if (strlen($_SESS...) >= 0

            echo 
            "error"
            $_SESSION['errorid'] = '';
             } 
            probiert...das gleiche Problem

            Kommentar

            Lädt...
            X