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!