frage zum schönes UserManagement

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

  • #31
    user_management

    hallo abraxas,

    ich habe mich nun drangemacht dein um doch einzubauen, die testvariante (also erstmal nur dein script allein) hatte funktioniert.
    nun habe ich ein paar änderungen vornehmen müssen um es an mein script anzupassen.
    leider steckt da irgendwie der wurm drin.
    ich vermute das er ein session-prob hat, da er sich eigentlich erst bei der kontrolle ob die session okay ist aufhängt. habe ein paar kontrollen eingebaut und siehe da, das array ist leer .

    hier mal die abwandlung der function:

    PHP Code:
    function CheckUserSession ($session)
      {
                
    $result mysql_query("SELECT * FROM flirt WHERE usersession = '$session'") or mysql_error();
            if ( 
    mysql_num_rows($result)== 
            {
              
    $zeile mysql_fetch_array($result);
              
    $sessarr[ID]         = $zeile[ID];
              
    $sessarr[name]       = $zeile[name];
              
    $sessarr[lastip]     = $zeile[lastip];
              
    $sessarr[lastonline] = $zeile[lastonline];
              return 
    $sessarr;
            }
            else 
            {
              echo 
    "array aber fehler:";
              echo 
    "ses:$session";
              echo 
    "zeile:".$zeile[name];
              
    header ("Location: index.php");
              return 
    false;
               }
      } 
    die echos dienen wie gesagt nur zur kontrolle. er gibt die session aus, aber $zeile[name] ist empty. ich habe erstmal die md5 - geschichte ausgebaut. habe die userdaten korrekt eingegeben und auch mit phpmyadmin die abfrage selbst kontrolliert, er findet den user.
    erstaunlicher weise ist in der db auch noch kein sessionwert eingeschrieben worden.
    weist du einen rat ?

    Comment


    • #32
      Re: user_management

      Original geschrieben von tedman72
      hallo abraxas,

      PHP Code:
      function CheckUserSession ($session)
        {
                  
      $result mysql_query("SELECT * FROM flirt WHERE usersession = '$session'") or mysql_error();
              if ( 
      mysql_num_rows($result)== 
              {
                
      $zeile mysql_fetch_array($result);
                
      $sessarr[ID]         = $zeile[ID];
                
      $sessarr[name]       = $zeile[name];
                
      $sessarr[lastip]     = $zeile[lastip];
                
      $sessarr[lastonline] = $zeile[lastonline];
                return 
      $sessarr;
              }
              else 
              {
                echo 
      "array aber fehler:";
                echo 
      "ses:$session";
                echo 
      "zeile:".$zeile[name];
                
      header ("Location: index.php");
                return 
      false;
                 }
        } 
      Da sag ich mal ne du:

      1.) Das ist ein Array und keine Variable, zweitens heisst die anders
      PHP Code:
      // wenn du $session anzeigen lässt, siehst du nie was bei:

      print_r($_SESSION);

      // erhälst du das komplette Array

      // gibst du echo $_SESSION; aus bekommst du immer Array zurückgeliefert 
      [color=blue]MfG Payne_of_Death[/color]

      [color=red]Manual(s):[/color] <-| PHP | MySQL | SELFHTML |->
      [color=red]Merke:[/color]
      [color=blue]Du brauchst das Rad nicht neu erfinden ! [/color]<-ForumSuche rettet Leben-> || <-Schau in den Codeschnippsels->

      Murphy`s Importanst LAWS
      Jede Lösung bringt nur neue Probleme
      Das Fluchen ist die einzige Sprache, die jeder Programmierer beherrscht.
      In jedem kleinen Problem steckt ein großes, das gern raus moechte.

      Comment


      • #33
        @tedman72

        1. schreibt man mich mit x am ende. einen mit s gibt es auch hier.

        2. warum änderst du ein script, was funktioniert, ab?

        3. ein echo vor header() ist böse

        4. deine echos sind im else-zweig, also wenn in der DB keine daten gefunden wurden.

        5. warum änderst du das MD5 ab? das ist sicherer als plain-text.

        6. verstehe ich dein problem nicht so ganz...
        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


        Comment


        • #34
          okay, mein fehler... hatte einen tabellen-namen-fehler

          wie gesagt, mein script steht soweit, mußte also deines an meines anpassen. die md5-verschlüsselung habe ich temporär entfernt da ich dachte das dort der fehler liegt.

          die echos sind für mich nur eine überprüfung gewesen wo der knabe stehenbleibt, kommen natürlich wieder raus.


          cya
          Last edited by tedman72; 18-06-2003, 12:13.

          Comment


          • #35
            danke payne, ich weiss das es sich um ein array handelt, wenn ich auf fehlersuche bin lasse ich mir halt alles ausgeben.

            wie gesagt das system funktioniert soweit, nur mit dem logout stimmt was nicht. er macht das update in der funktion nicht. ich habe den query mal im phpmyadmin ausprobiert und siehe da, warum auch immer er kürzt die sessionid von 32 auf 20 stellen. verstehen tue ich das aber nicht.
            er kann ja dann auch logischerweise (logout vergleicht ja die sessionwerte) kein update beim logout durchführen. woran kann das liegen das er selbst im phpmyadmin die sessionid (ich habe sie mal zum testen aus der db selbst rauskopiert) abhackt ?

            Comment


            • #36
              okay, sorry.. wieder mein fehler, hatte nen komma übersehen. letztendlich hilft es aber auch nur in phpmyadmin (wenn ich da das update fahre mit der sesid die in der db eingetragen ist funzt es auch), ich frag mich jetzt nur ob es im script selbst die richtige sesid übergibt.

              nun habe ich mir auch mal die session im skript ausspucken lassen, ist aber die selbe.

              hier mal mein phpinfo:

              session Session Support enabled

              Directive Local Value Master Value
              session.auto_start Off Off
              session.cache_expire 180 180
              session.cache_limiter nocache nocache
              session.cookie_domain no value no value
              session.cookie_lifetime 0 0
              session.cookie_path / /
              session.cookie_secure Off Off
              session.entropy_file no value no value
              session.entropy_length 0 0
              session.gc_maxlifetime 1440 1440
              session.gc_probability 1 1
              session.name PHPSESSID PHPSESSID
              session.referer_check no value no value
              session.save_handler files files
              session.save_path /tmp /tmp
              session.serialize_handler php php
              session.use_cookies On On


              Version 4.1.2, vielleicht hilft das weiter...
              Last edited by tedman72; 18-06-2003, 14:19.

              Comment


              • #37
                nochmals zu diesen punkten, wo ich teilweise keine antwort erhalten habe...
                Original geschrieben von Abraxax
                @tedman72

                2. warum änderst du ein script, was funktioniert, ab?

                4. deine echos sind im else-zweig, also wenn in der DB keine daten gefunden wurden.

                5. warum änderst du das MD5 ab? das ist sicherer als plain-text.

                6. verstehe ich dein problem nicht so ganz...
                ^^ diese punkte sind noch offen....
                INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                Comment


                • #38
                  2. die änderungen die ich vorgenommen habe sind nicht wirklich grossartig, aber entscheidend da ich eine userdatenbank habe auf der schon eine menge anderes zeugs aufbaut, habe also dein um insofern verändert als das es eben auf meine userdatenbank zugreift.

                  4. die echos sind mittlerweile aus dem script entfernt, sie dienten mir nur zur fehlerkontrolle

                  5. MD5 ist auch wieder drin, war nur kurzzeitig raus zur fehleranalyse

                  6. mein jetziges problem ist das das script soweit ganz gut funktioniert, nur leider logt er nicht richtig aus. Will meinen:
                  er führt den UPDATE-Query der Logout-Funktion nicht wirklich oder nicht richtig aus. ich vermutete das es an der sessionid lag, habe sie mir aber im admin.php ausgeben lassen, sie stimmte.
                  ich habe mir dann den UPDATE-Query kopiert (inkl. sessionid aus der db) und ihn dann in phpmyadmin ausgeführt. siehe da, dort funktionierte der query.
                  jetzt ist nur noch die frage wo das problem liegt.

                  Möglichkeiten:

                  - übergibt er den sessionwert nicht richtig sodas im logout-UPDATE-query was falsches steht

                  - führt er den UPDATEQUERY gar nicht aus

                  schwer für mich nachzuvollziehen da ich keine sql-logs vom webspace einsehen kann bzw. rootzugriff habe.

                  hier nochmals die func, ich glaube aber an der habe ich nichts geändert:

                  PHP Code:
                  function UserLogout ($session
                      {
                          
                  $result mysql_query("UPDATE flirt SET usersession ='NULL' WHERE usersession = '$session'") or mysql_error();
                                  
                  header ("Location: index.php");
                      } 
                  ich hoffe ich habe deine fragen beantwortet bzw. du kannst mir weiterhelfen

                  Comment


                  • #39
                    Original geschrieben von tedman72
                    ich hoffe ich habe deine fragen beantwortet bzw. du kannst mir weiterhelfen
                    in der tat. alle fragen zur vollsten zufriedenheit hast du beantwortet..

                    nun versuche ich es....

                    die session.id sollte immer vorhanden sein. das gibt eigentlich die wenigsten problem. wenn die query so funktioniert im phpmyadmin, ist die auch in ordnung. nun stellt sich die frage, ob in php alles korrekt ist.

                    zum einen sollte man die() verwenden.

                    und dann habe ich mal zwei alternativ-fkts zum testen bei dir.
                    PHP Code:
                    function UserLogout ($session
                        {
                            
                    $result mysql_query("UPDATE flirt SET usersession = NULL WHERE usersession = '".$session."'"
                    or die(
                    mysql_error());
                    // string gesplitet. 
                    // ausserdem darf NULL nicht in ' geschrieben werden.
                                    
                    header ("Location: index.php");
                        } 
                    2. vorschlag. die session-id muss man nicht zwingend übergeben.
                    PHP Code:
                    function UserLogout () 
                    // bitte auch im aufrufenden script den paramter entfernen.
                        
                    {
                            
                    $result mysql_query("UPDATE flirt SET usersession = NULL WHERE usersession = '".session_id()."'"
                    or die(
                    mysql_error());
                    // string gesplitet. 
                    // ausserdem darf NULL nicht in ' geschrieben werden.
                                    
                    header ("Location: index.php");
                        } 
                    Last edited by TobiaZ; 01-10-2006, 15:16.
                    INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                    Comment


                    • #40
                      so langsam bin ich am verzweifeln. auch diese beide funktionen haben nicht funktioniert.

                      erstaunlich das das login-update-query funktioniert, aber da geht er ja auch nicht nach der session.

                      vielleicht irgend eine idee wie ich das überprüfen könnte ? also die scriptausgabe ? denke aber ohne root habe ich da null chance

                      ich habe auch schon in der db erstmal alle spalten auf standard=null (bis auf die id )gesetzt, damit er das query nicht abweist wenn ein wert fehlt. ansonsten weiss ich auch erstmal nichts.

                      Comment


                      • #41
                        also wenn die beiden vorschläge auch nciht funktionierten zweifel ich auch so langsam, ob die fkt überhaupt aufgerufen wird bei einem logout. teste das mal.
                        INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                        Comment


                        • #42
                          okay, ich habe die baumschulenvariante probiert und siehe da, es funktionert.

                          Lösung:

                          habe die funktion rausgenommen und in eine eigene datei namens logout.php gepackt. siehe da, es funktionierte. ich verstehe zwar nicht ganz warum, aber nun gut.

                          trotzdem vielen dank für deine hilfe

                          Comment


                          • #43
                            Nur Fehler.....

                            Ich habe jetzt mal das ganze nachvollzogen, aber beim Aufruf der Index.php kommt immer die Fehlermeldung:

                            Warning: open(/tmp\sess_6e448c3588248af979f2cbab08d4d129, O_RDWR) failed: No such file or directory (2) in c:\www_projektdrehscheibe\login3\index.php on line 3

                            Warning: Failed opening 'usermanagment.inc.php' for inclusion (include_path='c:\php4\pear') in c:\www_projektdrehscheibe\login3\index.php on line 6


                            Enter your username and password to log in
                            Username:
                            Password:


                            Warning: open(/tmp\sess_6e448c3588248af979f2cbab08d4d129, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

                            Warning: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/tmp) in Unknown on line 0


                            Die betreffenden Linien sind:

                            PHP Code:
                            <?php

                                session_start
                            ();

                                include(
                            "connect2db.inc.php");
                                include(
                            "usermanagment.inc.php");

                                if (isset(
                            $_POST['action']))
                                {
                            Na irgendwas passt hier aber gar nicht???

                            Comment


                            • #44
                              Na irgendwas passt hier aber gar nicht???
                              gut erkannt...

                              suche mal im forum nach der lösung....

                              tipp. der path, den du zum speichern für session daten in der php.ini angegeben hast, existiert nicht und/oder du hast keine schreibberechtigung.

                              die suche im forum hilft dir das problem zu lösen.
                              INFO: Erst suchen, dann posten![color=red] | [/color]MANUAL(s): PHP | MySQL | HTML/JS/CSS[color=red] | [/color]NICE: GNOME Do | TESTS: Gästebuch[color=red] | [/color]IM: Jabber.org |


                              Comment


                              • #45
                                Hat zufällig jemand das Script fertig gestellt und im Betrieb ?

                                Gruss und Danke Manuela

                                Comment

                                Working...
                                X