![]() |
| | LinkBack | Themen-Optionen | Thema durchsuchen |
| | Nach oben #21 | ||
| Erfahrener Benutzer Registriert seit: 27.12.2008
Beiträge: 160
| Zitat:
In dieser Form: ...$username, $passw, etc. geht erstrecht nix, weil leer, mit $_POST bekomme ich zumindest Werte in die Datenbank. Ja, mit der Sicherheit haste wohl Recht, doch ich habe ein Problem: ich muss gleichzeitig Lernen und Fertigwerden..ich Tippe hier um meine Existenz..in meiner Haut möchte keiner stecken...am liebsten würde ich alles Hinwerfen, doch ich kann mir das nicht aussuchen... | ||
| | |
| | Nach oben #22 |
| Benjamin Steininger Registriert seit: 02.06.2005 Ort: weiher im tiefsten Odenwald
Beiträge: 1.379
|
Es geht darum WORAUF du zugreifst. Wenn du in einem Formular deine Variablen logpass[] nennst musst du auf der nächsten Seite via $_POST['logpass'][0] und $_POST['logpass'][1] zugreifen Wenn du dann einer variable names $passw den Wert von $_POST['logpass'][0] zuweißt, dann musst du dann natürlich auch $passw nutzen und nicht $_POST['passw']
__________________ robo47.net - Blog, Codeschnipsel und mehr | Caching-Klassen und Opcode Caches in php | Robo47 Components - PHP Library extending Zend Framework |
| | |
| | Nach oben #23 | |
| Erfahrener Benutzer Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
| Zitat:
---- Aber zu deinem konkreten Problem. Du machst zu viele Schritte auf einmal. Also tief durchatmen, nicht in Panik verfallen und das Schlafen nicht vergessen! Kein Scherz, sondern ganz ernst gemeint! Fangen wir einfach mal an. Ich habe dir jetzt mal ein paar Dateien gebastelt, welche zusammen ein gaaanz simples Loginsystem ergeben. Ich habe den Quelltext mit Kommentaren versehen, die eigentlich selbsterklärend sein sollten. Wenn du Probleme mit der ein oder anderen PHP-Funktion hast, dann schlage sie doch einfach um Manual nach. Das muss ich erwarten können, wenn ich dir helfen soll! Auf geht's .. Ich gehe das mal der Reihe nach durch. Es gibt folgende Dateien
Diese habe ich jetzt zum Test einfach mal folgendermaßen angeordnet. dateistruktur.jpg Wenn du da etwas änderst, musst du die entsprechenden Pfade in den Skripten anpassen, heißt beim require_once() und bei den header('Location; ..')-Angaben. Nun gut. Die index.php ist simpel und enthält nur zwei Links. Einen zum Formular, um User anzulegen (was in dem Skript hier jeder einfach so kann, ist halt nur 'ne Demo) und zum Loginformular. PHP-Code: Also Datenbank anlegen und dann Tabelle anlegen. Du kannst für das Anlegen der Tabelle auch einfach den unten stehenden SQL-Query in phpMyAdmin abschicken. Wie du magst. Code: -- -- Tabellenstruktur für Tabelle `user` -- CREATE TABLE `user` ( `userid` int(8) NOT NULL auto_increment, `username` varchar(20) collate latin1_general_ci NOT NULL, `password` varchar(32) collate latin1_general_ci NOT NULL, PRIMARY KEY (`userid`), KEY `username` (`username`) ) ENGINE=MyISAM DEFAULT CHARSET=latin1 COLLATE=latin1_general_ci; Meine db_connect.php sieht folgendermaßen aus. PHP-Code: PHP-Code: Wenn alles klappt solltest du auf die Startseite weitergeleitet werden. Solltest du einen Fehler der Marke "headers already sent" erhalten, dann such mal hier im Forum oder beim Suchdienst deiner Wahl. ;) Das musst du rausfinden können, wenn es um deine Existenz geht! Aber das wird schon klappen, so dass wir uns nun einloggen können. Also fix auf "Login" geklickt und schon kommen wir zum Loginformular. Die login.php zeigt entweder das Loginformular an oder versucht bei abgeschicktem Formular den Login durchzuführen. PHP-Code: Letztlich wird bei erfolgreichem Login auf die secret.php weitergeleitet. Hat man Unfug eingegeben kommt man wieder zum Loginformular, wobei eine kleine Meldung angezeigt wird, dass eben nicht alles reibungslos verlaufen ist! :) Aber es klappt natürlich ;) und man ist im Ultrahochsicherheitstrakt der Webseite angelangt. Die secret.php macht eigentlich nichts anderes außer zu prüfen, ob ein User, der auf die Datei zugreift eingeloggt ist und wenn dies der Fall ist den Namen des Users anhand der, in der Session gespeicherten User-ID, aus der Datenbank auszulesen. Ist der User nicht eingeloggt wird er zum Loginformular weitergeleitet. PHP-Code: Die logout.php ist ganz einfach gestrickt. PHP-Code: Ich hab dir die Dateien mal als Archivdatei an den Beitrag angehängt, aber es macht durchaus Sinn das mal selbst zu schreiben. Vielleicht aber nicht mehr heute Nacht, sondern morgen früh. Dann hast du ausgeschlafen und bist motivierter. Bei Fragen, frag .. aber bitte arbeite selbst mit und bastel jetzt nicht wieder an x-Stellen meines Codes rum, sondern versuche einfach erstmal das Skript zum Laufen zu bringen. Mehr kann ich für dich bei diesem Problem nicht machen und eigentlich ist das für diese Uhrzeit auch schon fast zu viel. ;) In diesem Sinne .. viel Erfolg!
__________________ Mehr TuS Koblenz geht nicht ... - TuS Koblenz Forum ... Benjamin Klaile ist noch in der Aufwärmphase | |
| | |
| | Nach oben #24 | ||
| Erfahrener Benutzer Registriert seit: 27.12.2008
Beiträge: 160
|
@Ben Ok, dann werde ich mal basteln. Genauso habe ichs bisher auch gemacht und es hat alles funktioniert...bis es auf den webspace kam. Mit dem Schlafen hast Du Recht, frische Luft tut auch gut. Und: keine Sorge, dass Tippen mache ich nicht Hauptberuflich, hab natürlich einen anderen Job... ;) @robo47 Bei diesem Code ( jetzt mal OHNE die md5 Geschichte ! ): PHP-Code: Zitat:
Zitat:
Nochmal: echo $passw; gibt das Passwort richtig in Klarschrift aus !! PHP-Code: Das ist doch wieder irgendwo so ein blöder Syntaxfehler. Wenn der Wert nicht direkt vorher richtig ausgegeben werden würde... Geändert von casi242 (18.01.2009 um 13:26 Uhr) | ||
| | |
| | Nach oben #25 | |
| Erfahrener Benutzer Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
| Nein, du sollst eigentlich in diesem Fall erst mal ein copy und paste machen. Zitat:
Ganz abgesehen davon ist das ja auch einfach eine Falschaussage, da du ja anscheinend nicht via $_POST auf die Formulardaten zugegriffen hast, ich das aber tue. Würde mir wünschen, wenn du meine Arbeit würdigst und dich damit mal befasst .. ansonsten brauch ich so viel Arbeit bei deinen nächsten Fragen auch nicht mehr aufwenden. ;)
__________________ Mehr TuS Koblenz geht nicht ... - TuS Koblenz Forum ... Benjamin Klaile ist noch in der Aufwärmphase | |
| | |
| | Nach oben #26 |
| Erfahrener Benutzer Registriert seit: 27.12.2008
Beiträge: 160
|
Nein, nein, ich meine das mit dem Zusammenschnipseln...ich hatte ja vorher ein Login-System, was funktionierte ! Wenn ich eingeloggt war, wurden mir die Kundendaten angezeigt, aber eben nur "offline" unter xampp ! So, waren wohl Syntaxfehler. Jetzt wird alles in die Datenbank geschrieben. Die eigentliche SQL Anweisung war der Schlüssel. Danke ! Müssen denn alle Daten der Sicherheit wegen in dieser Form '". mysql_escape_string($username) ."' in die Datenbank geschrieben werden oder nur Username und Passwort ? ...und natürlich würdige ich Deine Arbeit ! Letztendlich hat es mir die Lösung gebracht ! Oft ist aber selber so vom Padd ab, dass man die einfachsten Höflichkeitsregeln leicht vergisst...sorry, Danke nochmal ! |
| | |
| | Nach oben #27 |
| Erfahrener Benutzer Registriert seit: 16.08.2008 Ort: Mecklenburg-Vorpommern
Beiträge: 314
|
Grundsätzlich solltest du alles was in die Datenbank reinkommt mit mysql_real_escape_string(); behandeln. Auch solche Werte, die vielleicht automatisch generiert werden - sollte jemand mal auf deine PHP-Scripte zugreifen können , diese manipulieren können, aber keinen Zugriff auf die MySQL-Datenbank haben(höchstunwahrscheinlich), könnte er auf diese Weise bösartigen Code einschleusen.
|
| | |
| | Nach oben #28 |
| Erfahrener Benutzer Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
|
Lese auch: - [ SQL ] Artikel: About Security (#11): SQL-Injection - [PHP] Sichere PHP-Web-Applikationen schreiben
__________________ Mehr TuS Koblenz geht nicht ... - TuS Koblenz Forum ... Benjamin Klaile ist noch in der Aufwärmphase |
| | |
| | Nach oben #29 |
| Erfahrener Benutzer Registriert seit: 27.12.2008
Beiträge: 160
|
Ok, das werde ich dann auch so handhaben. Ben, ich habe jetzt Deinen Code analysiert. Bei mir ist es leider so, dass ich anpassen MUSS. Ich kann auch kaum ein Login-Beispiel nutzen, weil es bei mir anders läuft mit dem Einloggen. Es gibt keine geschützten Bereiche. Der User kann auf alle Seiten, vor, wie nach dem Login. Ist er eingeloggt, werden bei einer Anfrage die Adressdaten automatisch angezeigt. Das funktionierte auch mal. Ich versuche jetzt mal Step by Step der Sache auf den Grund zu gehen. Das Einloggen funktioniert. Zumindest werden user und password verglichen. Gibt es zu dem User das entsprechende password gehts zur Hauptseite index.php oder eben wieder auf die Login-Seite. Mein Problem ist: Bin ich schon drin ?! Bei mir wird $_SESSION['online'] = true; gesetzt. Wenn der Login erfolgreich war. Meine index.php ( wie auch alle anderen "Hauptseiten" ) hat einen Kopfbereich head.php. Im Kopfbereich kann der User sehen, ob er eingeloggt ist oder nicht PHP-Code: Ich glaub, das ist ein Session-Problem. Ich steig mit den Sessions da nicht durch. Sinn der Sessions ist wohl, dass Daten über mehrere Seiten erhalten bleiben. Nur, wann starte ich eine Session und, muss ich auf jeder Seite, die die Daten braucht, auch wieder eine Session starten ? In deinem Beispiel sind auch mehrere Sessions gestartet, selbst beim Ausloggen. Im Grunde soll ja erst eine Session gestartet werden, nachdem sich der Benutzer eingeloggt hat. Geändert von casi242 (18.01.2009 um 20:43 Uhr) |
| | |
| | Nach oben #30 |
| Jann Hendrik Bekaan Registriert seit: 02.12.2004 Ort: Wildeshausen
Beiträge: 3.198
|
Die Session musst du immer starten. Dann hast du jederzeit die Möglichkeit auf die Daten zuzugreifen. Wenn der user ausgelogt werden soll - dann musst du das dort ja auch entspr. speichern.
__________________ Umfragen: Wenn du dich in ein interessantes Thema eingearbeitet hast, dann lass andere daran teilhaben! Danke! |
| | |
| | Nach oben #31 |
| Erfahrener Benutzer Registriert seit: 02.12.2004 Ort: Koblenz
Beiträge: 4.794
|
@casi: Dann benenne einfach die secret.php in hanswurst.php (damit der Name keine Missverständnisse aufwirft) und entferne die Überprüfung in eben dieser Datei, ob der User eingeloggt ist. Dann hast du das, was du willst.
__________________ Mehr TuS Koblenz geht nicht ... - TuS Koblenz Forum ... Benjamin Klaile ist noch in der Aufwärmphase |
| | |
![]() |
| Lesezeichen |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | Thema durchsuchen |
| |
Ähnliche Themen | ||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| PHP 4.4.5 mit kritischem Fehler, Update auf 4.4.6 in Kürze | Ben | Nachrichten | 6 | 23.02.2007 09:51 |
| Zugriff auf Wert des vorhergenden Datensatzes in einer SQL Abfrage | Jay | Datenbanken | 5 | 17.07.2006 15:25 |
| Fehler im PHP Parser oder lag der Fehler doch bei mir? | Prophet | PHP-Programmierung | 4 | 12.05.2006 17:17 |
| PHP Code wird nicht ausgeführt ! | Dark Knight | PHP-Programmierung | 22 | 13.09.2005 14:12 |
| Hilfe für SQL Abfrage | Netty | Datenbanken | 1 | 19.05.2005 09:23 |