#1 8. Mai 2008 Mitgliederbereich, mehrere Accounts ohne MySQL Hallo, ich habe einen Loginbereich auf einer Homepage gemacht, bei dem ich mich sehr strikt an folgendes Tutorial gehalten habe: PHP: Sessionbasiertes Loginsystem Es funktioniert auch alles (mit Apache Server +PHP Modul, Login mit dem einen Account) Nun steht dort bei der Erläuterung zur login.php: Hier sind sowohl Benutzername als auch Passwort im Quelltext fest einprogrammiert – denkbar wäre aber zum Beispiel auch die Abfrage von Benutzerdaten aus einer Datenbank oder einer Textdatei, so dass mehrere Benutzernamen eingerichtet werden können Da ich absoluter php-noob bin, und erst recht sehr schlecht in Datenbanken, würde ich gerne wissen, wie das mit der Textdatei, dessen Formatierung und der Einbindung in den Code auszusehen hat. Würde mich sehr freuen, wenn mir da jemand helfen kann. Es wäre auch schön, wenn man bei unterschiedlichen Logins auf unterschiedliche Seiten gelangt. Könnte man dies auch in der entsprechenden Textdatei verknüpfen (Also Accountname mit der Seite, auf die man kommen soll)? Ich wäre für jede Hilfe sehr, sehr dankbar. Gruß Tikky + Multi-Zitat Zitieren
#2 8. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL Datenbanken sind so eine Sache... Ist vieleicht nicht grade leicht zu lernen aber auf jedenfall die bessere Methode... Aber ich (versuche) dir auch zu erklären wie es mit einer Textdatei geht.... Die Formatierung einfach folgendermaßen (benutzer.txt) (Kein Leerzeichen zwischen dem ":" und Passwort, das musste ich wegen dem doofen Smilie machen) BENUTZERNAME: PASSWORT:SEITE PHP: <? php $user = file ( 'benutzer.txt' ); foreach( $user as $benutzer ) { list( $benutzer , $passwort , $seite ) = explode ( ":" , $benutzer ); echo $benutzer . " hat das Passwort " . $passwort . " und wird nach dem Login auf Seite " . $seite . " weitergeleitet.<br />\n" ; } ?> Die Variablennamen kann man noch etwas sinniger wählen.. aber das wars im grunde genommen.... + Multi-Zitat Zitieren
#3 8. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL mysql datenbanken sind einfach zu handhaben die installation auch wenn du ein tutorial hast. Ist imho mindestens genauso einfach wie ne datei zu benutzen guck dir einfach an wie du in php mysql commands sendest und die wichtigsten SQL befehle. Gibt tausende von tuts. mfg tobZel + Multi-Zitat Zitieren
#4 8. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL danke dir schon mal für die antwort, schreib ich deinen code dann in die login.php? und was lass ich dann auf der login.php weg? und funktioniert die datei dann mit den anderen (index.php, auth.php, logout.php - siehe selfhtml tutorial, link im ersten Posting)? bewertung ist raus, auch an tobzel, werde mir da auch nochmal tutorials anggucken, aber dann müsste ich mir wohl auch php mal genauer anschauen, da fehlt aber leider die zeit =( danke für jede weitere hilfe mfg + Multi-Zitat Zitieren
#5 8. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL Schau dir doch mal das Tutorial von php-quake.net an, es ist sehr ausführlich beschrieben und wie ich finde sehr verständlich. Mein Wissen, was ich so über PHP/MySQL habe, habe ich mir auch mit den Tutorials von php-quake.net angeeignet. Es ist zwar nicht Text-Dateien basierend aber MySQL ist an sich keine besonders schwere Sprache. + Multi-Zitat Zitieren
#6 9. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL Ich habe keine Ahnung wo du den Code reinschreiben musst weil ich das Script ja nicht kenne.... + Multi-Zitat Zitieren
#7 9. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL ok ich liste mal alle dateien auf, die ich habe: login.php Code: <?php include('pass.php'); ?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de"> <head> <title>Geschützter Bereich</title> </head> <body> <form action="login.php" method="post"> Username: <input type="text" name="username" /><br /> Passwort: <input type="password" name="passwort" /><br /> <input type="submit" value="Anmelden" /> </form> </body> </html> logout.php Code: <?php session_start(); session_destroy(); $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']); header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php'); ?> auth.php Code: <?php session_start(); $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']); if (!isset($_SESSION['angemeldet']) || !$_SESSION['angemeldet']) { header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/login.php'); exit; } ?> pass.php Code: <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $username = $_POST['username']; $passwort = $_POST['passwort']; $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']); // Benutzername und Passwort werden überprüft if ($username == 'nutzer' && $passwort == 'passwort') { $_SESSION['angemeldet'] = true; // Weiterleitung zur geschützten Startseite if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/index.php'); exit; } } ?> Außerdem eine benutzer.txt in der Form, wie Coksnuss vorgeschlagen hat Code: nutzer1:passwort1:seite1.php nutzer2:passwort2:seite2.php nutzer3:passwort3:seite3.php Wie kann ich nun coksnuss' Script Code: <?php $user = file('benutzer.txt'); foreach($user as $benutzer) { list($benutzer, $passwort, $seite) = explode(":", $benutzer); echo $benutzer." hat das Passwort ".$passwort." und wird nach dem Login auf Seite ".$seite." weitergeleitet.<br />\n"; } ?> so einbauen, dass alles miteinander funktioniert? Würde mich über Hilfe sehr freuen, und gerne mit einem Wunschupload sofern vorhanden revangieren. Danke! Gruß Tikky + Multi-Zitat Zitieren
#8 9. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL So hier bitteschön.... Die Programmierung des Scripts ist nicht grade professionell will ich dazu sagen^^ [Weder meins, noch das vorhandene] pass.php Suchen: PHP: // Benutzername und Passwort werden überprüft if ( $username == 'nutzer' && $passwort == 'passwort' ) { $_SESSION [ 'angemeldet' ] = true ; Ersetzen mit: PHP: $allusers = file ( 'benutzer.txt' ); foreach( $allusers as $txtuser ) { list( $txtusername , $txtuserpassword , $txtuserlink ) = explode ( ":" , $txtuser ); if( $username == $txtusername && $passwort == $txtuserpassword ) { $_SESSION [ 'angemeldet' ] = true ; // Keine Ahnung ob du direkt weiterleiten willst... // falls ja einfach den Kommentar entfernen und den code weiter unten im Script loeschen // header("Location: ".$txtuserlink); break; } } Ich habe das script nicht getestet... + Multi-Zitat Zitieren
#9 9. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL Ich danke Euch allen, cih ahbs jetzt anders hingekriegt, undd zwar in dem ich in die pass.php die selbe Funktion nochmal reingeschrieben hab, mit anderem account und anderer Seite. Jetzt aber noch was anderes: Wenn ich mich eingeloggt habe, und wieder auf den Mitgliederbereich gehe, möchte er das pw wieder haben, obwohl cih mich nciht ausgeloggt habe. wie kann ich in der Datei pass.php eine entsprechende Abfrage machen, ob der Nutzer sich schon angemeldet hat und wenn ja, entsprechend weiterleiten automatisch? Meine neue pass.php: Code: <!--1. User--> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $username = $_POST['username']; $passwort = $_POST['passwort']; $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']); // Benutzername und Passwort werden überprüft if ($username == 'nutzer1' && $passwort == 'passwort1') { $_SESSION['angemeldet'] = true; // Weiterleitung zur geschützten Startseite if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/clients.php'); exit; } } ?> <!--2. User--> <?php if ($_SERVER['REQUEST_METHOD'] == 'POST') { session_start(); $username = $_POST['username']; $passwort = $_POST['passwort']; $hostname = $_SERVER['HTTP_HOST']; $path = dirname($_SERVER['PHP_SELF']); // Benutzername und Passwort werden überprüft if ($username == 'nutzer2' && $passwort == 'passwort2') { $_SESSION['angemeldet'] = true; // Weiterleitung zur geschützten Startseite if ($_SERVER['SERVER_PROTOCOL'] == 'HTTP/1.1') { if (php_sapi_name() == 'cgi') { header('Status: 303 See Other'); } else { header('HTTP/1.1 303 See Other'); } } header('Location: http://'.$hostname.($path == '/' ? '' : $path).'/clients2.php'); exit; } } ?> Kann mir jemand die entsprechende Abfrage reinschreiben, und den neuen Code posten? wäre super dankbar. Gruß Tikky + Multi-Zitat Zitieren
#10 9. Mai 2008 AW: Mitgliederbereich, mehrere Accounts ohne MySQL Ach du liebe Zeit... mal abgesehen davon dass das eine GANZ schlechte Methode ist den ganzen code 2x zu haben: $_SESSION['angemeldet'] = true; <-- Die Variable setzt du doch wenn du dich anmeldest... Einfach überprüfen ob sie gesetzt ist + Multi-Zitat Zitieren