Ergebnis 1 bis 13 von 13

Thema: Fehler beim Anmelden - aber nur online

  1. #1

    Fehler beim Anmelden - aber nur online

    Tja, ich habe (schon vor dadie) einen Filemanager gemacht. Der funktionier tauch (besonders lokal) ausgezeichnet, aber nun ist das Problem, dass man sich, wenn ich ihn online stelle, zwar anmelden kann, aber sofort wieder rausfliegt bei der ersten Aktion/Reload.

    Der dazu relevante Code ist leider sehr groß, da ich die Benutzer in einer Datei speichern wollte. Naja, egal:
    PHP-Code:
    <?php
    define
    ('PHP_SELF'$_SERVER['PHP_SELF']);
    define('USER_FILE''user.xml');
    define('IMAGE_DIR''images/');
    session_name('sid');
    session_start();

    ### User-Datei einlesen und auswerten ###
    $i 0;
    function 
    startElement($parser$element_name$element_attribute)
    {
        global 
    $element;
          
    $element_name strtolower($element_name);
        
    $element $element_name;
    }

    function 
    endElement($parser$element_name)
    {
          global 
    $i;
          
    $element_name strtolower($element_name);
          if(
    $element_name == 'user')
          {
                
    $i++;
          }
    }

    function 
    cdata($parser$element_inhalt)
    {
        global 
    $i;
        global 
    $users;
        global 
    $element;
        
    $tmp str_replace(' '''$element_inhalt);
        
    $tmp str_replace("\t"''$tmp);
        
    $tmp str_replace("\n"''$tmp);
        
    $tmp str_replace("\r"''$tmp);
        if(
    $tmp)
        {
            
    $users[$i][$element] = $element_inhalt;
        }
    }
    $parser xml_parser_create();
    $xmlFile file(USER_FILE);
    xml_set_element_handler($parser"startElement""endElement");
    xml_set_character_data_handler($parser"cdata");

    foreach(
    $xmlFile as $elem)
    {
        
    xml_parse($parser$elem);
    }

    ### Benutzer anmelden ###
    if(isset($_POST['login']) AND isset($_POST['user']) AND isset($_POST['password']) AND $_POST['login'] == 'Login' AND isset($_POST['user']) AND isset($_POST['password']))
    {
        foreach(
    $users AS $tmp)
        {
            if(
    $_POST['user'] == $tmp['name'] AND md5($_POST['password']) == $tmp['password'])
            {
                
    $_SESSION['name'] = $_POST['user'];
                
    $_SESSION['password'] = md5($_POST['password']);
                
    header('Location: '.PHP_SELF);
                exit;
            }
        }
    }

    ### Prüfen, ob Benutzer angemeldet ist ###
    foreach($users AS $tmp)
    {
        if(isset(
    $_SESSION['name']) AND isset($_SESSION['password']) AND $_SESSION['name'] == $tmp['name'] AND $_SESSION['password'] == $tmp['password'])
        {
            
    $loggedin TRUE;
            
    $user $tmp;
        }
    }
    if(isset(
    $loggedin))
    {
        
    // Der Filemanager an sich
    }
    ?>
    Die Datei user.xml:
    Code:
    <?xml version="1.0" encoding="iso-8859-1" ?>
    <users>
    	<user>
    		<name>username</name>
    		<password>MD5-Passwort (aus Sicherheitsgründen entfernt)</password>
    		<write>true</write>
    	</user>
    	<user>
    		<name>Gast</name>
    		<password>MD5-Passwort (aus Sicherheitsgründen entfernt)</password>
    		<write>false</write>
    	</user>
    </users>
    Ich bin mir sicher, dass der Fehler ein ganz doofer und kleiner ist, aber ich finde ihn einfach nicht! Plz help! Thx!

    Geändert von dead_orc (21.02.2010 um 14:35 Uhr)

  2. #2
    ich kenne mich zwar Nicht so mit session´s aus darum kann das nur ne Vermuttung sein

    Vieleicht macht er bei jedem aufruff ne Neue session wodurch bei jeden klick die alte (aktive) ungültig wird.

    Kann mich irren !

    btw.Warum siht deiner besser aus als meiner

  3. #3
    @besseres Aussehen: Kann ich mir nicht vorstellen, ich hab das Ding an weniger als einem Tag zusammengeschraubt

    @immer neue Session: Nö, ich hab den dazugehörigen Cookie bei einem neuen Aufruf mit dem alten verglichen - gleiche SID! Wäre höchstens noch eine Möglichkeit, dass sowohl 1&! (die ja eigendlich nichtmal PHP unterstützen) und Funpic keine Sessions akzeptieren (bei Funpic hab ichs auch getestet!)

    [EDIT]
    OK, Funpic zumindest unterstützt Sessions (hab mich gerade in meinem Forum per Sessions angemeldet - kein Problem!)

  4. #4
    Mit der Funktion session_start() erstellst du eine neue Session und afaik wird dabei die alte überschrieben. Mach das so, dass nur beim Login eine Session erstellt wird.

    Ich hoffe das geht so...

  5. #5
    Zitat Zitat von Manni_the_Dark
    Mit der Funktion session_start() erstellst du eine neue Session und afaik wird dabei die alte überschrieben. Mach das so, dass nur beim Login eine Session erstellt wird.

    Ich hoffe das geht so...
    Erst mal lesen

    Zitat Zitat von Dadie
    ich kenne mich zwar Nicht so mit session´s aus darum kann das nur ne Vermuttung sein

    Vieleicht macht er bei jedem aufruff ne Neue session wodurch bei jeden klick die alte (aktive) ungültig wird.

    Kann mich irren !
    Zitat Zitat von getöteter_ork
    @immer neue Session: Nö, ich hab den dazugehörigen Cookie bei einem neuen Aufruf mit dem alten verglichen - gleiche SID! Wäre höchstens noch eine Möglichkeit, dass sowohl 1&! (die ja eigendlich nichtmal PHP unterstützen) und Funpic keine Sessions akzeptieren (bei Funpic hab ichs auch getestet!)

  6. #6
    Funpic unterstützt sessions, habe ich selber schon getestet, da ich Funpic ne Zeit lang quasi als Werkstatt benutzt habe, weil unser alter Webspace down war.

  7. #7
    Bin ich der einzige der Postes liesst ? Ork schreib doch da oben

    Zitat Zitat
    [EDIT]
    OK, Funpic zumindest unterstützt Sessions (hab mich gerade in meinem Forum per Sessions angemeldet - kein Problem!)


    Zitat Zitat von Rpg_Goldenboy
    Funpic unterstützt sessions, habe ich selber schon getestet, da ich Funpic ne Zeit lang quasi als Werkstatt benutzt habe, weil unser alter Webspace down war.

  8. #8
    Oha.

    @Manni_the_dark: Das funktioniert nicht. Damit kommt man nicht einmal mehr auf die erste Seite. Hätte mich auch gewundert, weil es beim Forum so funktioniert.

    @dadie: Wenigstens einer, der meine Posts liest und versteht

    @alle anderen: Any more ideas?

  9. #9
    Naja, hier mal meine session.php:
    PHP-Code:
    require("sql.inc.php");
    session_register(userid);
    session_register(username);
    session_register(userpwd);
    if(empty(
    $userid) || empty($username) || empty($userpasswort)) {
      
    $login false;
    } else {
      
    $sessionverbindung mysql_connect($host$sqlname$sqlpasswort);
      
    $befehl "SELECT * FROM `users`";
      
    $antwort mysql_db_query($dbname$befehl$sessionverbindung);
      while(
    $row mysql_fetch_array($antwort)) {
        if (
    $row['uid'] == $userid && $row['passwort'] == $userpwd && $row['name'] == $username) {
          
    $login true;
        }
      }

    Und die passende login.php(Ausschnitt):
    PHP-Code:
    ...
    session_start();
    session_register(userid);
    session_register(username);
    session_register(userpwd);
    $userid $id;
    $username $name;
    $userpwd md5($pwd); 
    Bei mir funktioniert das wunderbar. Man muss nur noch in jede zu schützende Datei die session.php einbinden und die Variable $login abfragen *verwirrt ist*

    Manni

  10. #10
    Komm mal klar Dadie!
    Mit deinen "lies dies,lies das posts" nervst du mich.
    Man kann auch mal was überlesen, als wenn du hier der oberchecka wärst.
    So machst du dir echt keine Freunde (zunindest nicht mich).

  11. #11
    Zitat Zitat von Rpg_Goldenboy
    Komm mal klar Dadie!
    Mit deinen "lies dies,lies das posts" nervst du mich.
    Man kann auch mal was überlesen, als wenn du hier der oberchecka wärst.
    So machst du dir echt keine Freunde (zunindest nicht mich).
    Ich wollte nur das die Disktusion miteinander statfinded und nett an einander was währen wen :

    Person X : Wie geht das teil an ? Ich habe schon das rote 3eck angestellt
    Person Y : Du musst das Rote 3 eck drücken
    Person X : Habe ich doch getahn !
    Person Z : Drück das Rote 3eck du depp
    Person X : Sama seid ihr dumm ? Habe ich doch getahn !
    Person Y : He so machst du dir keine freunde ich helf dir nett mehr
    Person Z : Ich kann dir auch nett weiter helfen aus zu sagen drück das Rote 3eck
    Person M : So keine Diskusion Close

    sowas wollte ich verhindern

  12. #12
    OK, da Chocwise es gerne sieht, wenn man seine Lösungen präsentiert:
    Das Problem lag mal wieder am auf den Servern aktivierten register_globals!
    Das "$user = $tmp;" im Anmeldeblock überschreibt dabei den Benutzernamen in der Session. Darauf gekommen bin ich durch Ausgabe der $_SESSION['user'] bei jedem Aufruf und durch Neuinstallation von (fast) allem, wodurch register_globals bei mir auch ganz unbemerkt aktiviert wurde. Nu funktioniert er vollständig. Trotzdem danke an alle, die versucht haben, mir zu helfen

    @dadie: Wie weit bist du mit deinem? Oder hast du das Projekt abgebrochen?

  13. #13
    Zitat Zitat von getöteter_ork
    @dadie: Wie weit bist du mit deinem? Oder hast du das Projekt abgebrochen?
    Nee das lebt noch nur habe ich eben Probleme meinen PC zu sichern und glaube mir das ist Garnett so einfach

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •