Das mit dem session destroy muss ich nochmal genauer lesen. In dem Tutorail macht er das so :p
PHP if, esleif else zusammenziehen?
-
Unregistriert -
14. Februar 2010 um 11:04
-
-
Och büdde, wie man das richtig macht, habe ich dir doch gezeigt (isset)!!!
Leider gibt es massenhaft alte und fehlerhafte Tutorials, die erste Adresse sollte immer die Doku sein. -
Och büdde, wie man das richtig macht, habe ich dir doch gezeigt (isset)!!!
Leider gibt es massenhaft alte und fehlerhafte Tutorials, die erste Adresse sollte immer die Doku sein.Ich habe es Orginal auch schon nachgebaut von der Doku(musst mal ein Blick reinwerfen, is nen youtube link von nem Hochschuldozent), da hat es funktioniert. Nur in Kombination mit Grundgerüst und deinem Script funktioniert es nicht. hab dein beispiel gesehen mit viel Kommentierung aber viele werte die mitgegeben werden können/müssen?!
-
Hier nochmal korrekt eingerückt
PHP
Alles anzeigen<?php $user = $_POST['user']; $pass = $_POST['pass']; $errorText = ""; // Variable initialisieren if ( isset ( $user ) ) // Prüfen, ob $user gesetzt ist { $errors = array(); // Leeres Fehler-Array erstellen if ( empty ( $user ) ) // Wenn $user leer ist, Username ins Array schreiben $errors[] = "Username"; if ( empty( $pass ) ) // Wenn $pass leer ist, Passwort ins Array schreiben $errors[] = "Passwort"; if ( count ( $errors ) == 0 ) // Prüfen, ob es einen Fehler gab { if( $user == "user" && "pass" == $pass ) { $_SESSION['eingeloggt'] = TRUE; } if ( $_SESSION['eingeloggt'] == TRUE ) { echo "<p>Hallo ". $user. "</p>"; echo '<ul>'; echo '<li><a href="daten.php">Eigene Daten</a></li>'; echo '<li><a href="logout.php">Logout</a></li>'; echo '</ul>'; }else $errorText = "<p>Zugangsdaten falsch</p>"; // Fehlertext setzen }else $errorText = "<p>Bitte " . implode (" und ", $errors) . " eingeben</p>"; // Fehlertext setzen } if ( ! isset ( $user ) || strlen ( $errorText ) ) // Wenn $user nicht exsitiert oder wenn es einen Fehler gab { if ( strlen ( $errorText ) ) // Wenn ein Fehlertext vorhanden ist, ausgeben. Deshalb auch oben die Initialisierung echo "<p>$errorText</p>\n"; echo "<form action='login.php' method='post'> <p>Username: <input type='text' name='user' /></p> <p>Passwort: <input type='password' name='pass' /></p> <p><input type='submit' value='Senden' /></p> </form>"; } ?>
-
Hier nochmal korrekt eingerückt
Knirsch
Was ist daran eingerückt? Jetzt steht alles platt in der ersten Spalte. Auch hier wieder: wie man das richtig macht, habe ich dir schon gezeigt!PHP
Alles anzeigen<?php session_start(); // Variable initialisieren, weil darauf später auf jeden Fall zugegriffen wird $errorText = ""; // Prüfen, ob $_POST['user'] gesetzt ist if (isset($_POST['user'])) { // Leeres Fehler-Array erstellen $errors = array(); // Wenn $_POST['user'] leer ist, Username ins Array schreiben if (empty($_POST['user'])) $errors[] = "Username"; // Wenn $_POST['pass'] leer ist, Passwort ins Array schreiben if (empty($_POST['pass'])) $errors[] = "Passwort"; // Prüfen, ob es einen Fehler gab if (count($errors) == 0) { // Prüfen, ob die Daten richtig sind if($_POST['user'] == "user" && $_POST['pass'] == "pass") { $_SESSION['user'] = $_POST['user']; header ("Location: http://www.irgend.wo"); exit(); } else $errorText = "Zugangsdaten falsch"; // Fehlertext setzen } else $errorText = "Bitte " . implode (" und ", $errors) . " eingeben"; // Fehlertext setzen } // Wenn $_POST['user'] nicht exsitiert oder wenn es einen Fehler gab if (! isset($_POST['user']) || strlen ($errorText)) { // Wenn ein Fehlertext vorhanden ist, ausgeben. Deshalb auch oben die Initialisierung if (strlen($errorText)) echo "<p>$errorText</p>\n"; echo "<form action='login.php' method='post'> <p>Username: <input type='text' name='user' /></p> <p>Passwort: <input type='password' name='pass' /></p> <p><input type='submit' value='Senden' /></p> </form>"; } ?>
-
Das Einrücken klappt nicht so ganz. Es funktioniert jetzt aber.
login.php
PHP
Alles anzeigen<?php $user = $_POST['user']; $pass = $_POST['pass']; $errorText = ""; if ( isset ( $user ) ) { $errors = array(); if ( empty ( $user ) ) $errors[] = "Username"; if ( empty( $pass ) ) { $errors[] = "Passwort"; if ( count ( $errors ) == 0 ) { if( $user == "user" && "pass" == $pass ) { $_SESSION['eingeloggt'] = TRUE; } if ( $_SESSION['eingeloggt'] == TRUE ) { echo "<p>Hallo ". $user. "</p>"; echo '<ul>'; echo '<li><a href="daten.php">Eigene Daten</a></li>'; echo '<li><a href="logout.php">Logout</a></li>'; echo '</ul>'; }else $errorText = "<p>Zugangsdaten falsch</p>"; }else $errorText = "<p>Bitte " . implode (" und ", $errors) . " eingeben</p>"; } if ( ! isset ( $user ) || strlen ( $errorText ) ) { if ( strlen ( $errorText ) ) echo "<p>$errorText</p>\n"; echo "<form action='login.php' method='post'> <p>Username: <input type='text' name='user' /></p> <p>Passwort: <input type='password' name='pass' /></p> <p><input type='submit' value='Senden' /></p> </form>"; } ?>
daten.php
PHP<?php if ( isset ( $_SESSION['user'] ) ) { echo "Hallo ".$SESSION['user']; } else { echo 'NO'; } ?>
logout.php
PHP<?php $_SESSION = array(); if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); } session_destroy(); echo 'Sie wurden erfolgreich abgemeldet!'; ?>
Bevor ich jetzt ans eingemachte gehe , ein fehler besteht noch. Nämlich im eingeloggten Bereich steht trotz eingeloggt immer der else Fall also NO. Statt Hallo User steht NO...mit den drei obigen codes.
Gruß Nico
-
Ich gebe jetzt auf!!! Du baust definitiv Blödsinn ein und bist nicht in der Lage, ein paar Zeilen Quellcode zu kopieren, die man dir blöderweise auch noch serviert!
-
wieso ich habe es doch schon fast hinbekommen. Es funktioniert ja nu scho fast.... Mal sehen wieweit wir damit die Woche weiterarbeiten. Hätte es gerne alleine hinbekommen aber klappt noch nicht ganz(Kenntnisstand noch nicht ausreichend )
Gruß Nico
-
Schade... Es wist sicherlich nicht Sinn und Zweck woanders selben Thread zu erröffnen aber was bleibt mir übrig.
Ich habe mein bestes gegeben, du anscheinend auch @ bandit600
Kann doch nicht schon das Ende sein...
Viele Grüße
Nico
-
Natürlich ist das das Ende! Wenn du schon ein paar Zeilen hier nicht richtig rauskopieren kannst, dann ist dir nicht zu helfen! Und dass
nicht korrekt ist, habe ich auch schon erklärt, aber du machst es trotzdem wieder. Was soll man dir da noch helfen? Und wie soll man dir noch helfen? Es reicht ja schon nicht, dir fertigen Quellcode zu liefern!!!
Ich habe mein bestes gegeben
Den Eindruck habe ich aber nicht!Es ist schon albern genug, dass sich so ein simpler Login über 30 Posting hinauszieht, denn das sind Grundlagen, die man können sollte und zu denen es auch massenhaft Dokus und Tutorials gibt.
-
Wieso nicht korrekt? Jeder schreibt es anders, man muss später irgendwie auf die Daten zugreifen. Also Erfahrung hin oder her aber bessere Lösung gibts doch gar nicht.
Ältere Tutorials??? Sieht das älter aus was er da erklärt?!
http://www.youtube.com/user/PHPtutorialDeutsch
Also wenn du @bandit600 mein Dozent wärst hätte ich schon sonstwas unternommen
Ich finde das Tutorial von Axel Pratzner gut.
http://www.webmaster-crashkurs.de/
Glaubt ihr ruhig weiterhin das er schlecht ist. Dann lesst bei PHP:net wenn ihr das für besser hält.
Fertiger Quellcode, haha da musste ich lachen. Login der so schon fertig sein soll.
Ich kann schon recht gut PHP und er erzählt was von Grundlagen.
Sorry wenn du jemals anderswo das gleiche liesst. Oder soll ich Pc jetzt ausmachen und sagen OK Ende.... Niemals mein Freund
-
Wenn du in einem Tutorial soetwas
am Anfang liest, dann ist das Tutorial nun mal Scheiße!!! Wenn das Script das erste Mal aufgerufen wird, ist weder $_POST['user'] noch $_POST['pass'] gesetzt, aber es wird trotzdem fröhlich drauf zugegriffen. PHP ist in der Regel gnädig, aber wenn man mal das Error-Reporting hochdreht (was man während der Entwicklung eines Scriptes machen sollte), geht das Gemecker los.
Und wenn du Knaller einfach das session_start(); in daten.php weglässt, dann ist das nicht mein Problem, denn so habe ich das nicht geschrieben.
Ich kann schon recht gut PHP
Dann würdest du an so einem Pippifax nicht scheitern!Also immer schön den Ball flachhalten, wenn man keine Ahnung hat und nicht richtig liest!!!
PS: Unter http://www.php-kurs.com/ steht if/elseif und switch unter "PHP für Fortgeschrittene", ich lach' mich schlapp!!!
-
Wenn du in einem Tutorial soetwas
am Anfang liest, dann ist das Tutorial nun mal Scheiße!!! Wenn das Script das erste Mal aufgerufen wird, ist weder $_POST['user'] noch $_POST['pass'] gesetzt, aber es wird trotzdem fröhlich drauf zugegriffen. PHP ist in der Regel gnädig, aber wenn man mal das Error-Reporting hochdreht (was man während der Entwicklung eines Scriptes machen sollte), geht das Gemecker los.
Und wenn du Knaller einfach das session_start(); in daten.php weglässt, dann ist das nicht mein Problem, denn so habe ich das nicht geschrieben.
Dann würdest du an so einem Pippifax nicht scheitern!
Also immer schön den Ball flachhalten, wenn man keine Ahnung hat und nicht richtig liest!!!
PS: Unter http://www.php-kurs.com/ steht if/elseif und switch unter "PHP für Fortgeschrittene", ich lach' mich schlapp!!!
Alles Klar ich nehme mir das auch zu Herzen was du sagst... scheinst ja kein Anfänger mehr zu sein..
P.S. Das session_start(); steht in der datei daten.php auch nur über dem doctype daher kann sein, ich habe nur PHP kopiert und nicht den ganzen Quellcode meiner Webseite
Gruß Nico
-
Ich: $_SESSION['user'] = $_POST['user'];
Du: $_SESSION['eingeloggt'] = TRUE;
Mir ist das jetzt zu albern und somit verabschiede ich mich aus diesem Thread, denn du bastelst ohne Sinn und Verstand und ignorierst zum Teil die Antworten. Das macht einfach keinen Sinn!!! -
Ich: $_SESSION['user'] = $_POST['user'];
Du: $_SESSION['eingeloggt'] = TRUE;
Mir ist das jetzt zu albern und somit verabschiede ich mich aus diesem Thread, denn du bastelst ohne Sinn und Verstand und ignorierst zum Teil die Antworten. Das macht einfach keinen Sinn!!!Du hast mir ja schon super weitergeholfen, brauch halt etwas länger wenn ich mich erst 2 Monate damit befasse...
Ich werde es halt nochmal von Anfang durchgehen, wieder bauen...und wieder...usw...
Gruß Nico
-
Hier mach mal dieses Tutorial: http://tut.php-quake.net/de/index.html
Schritt für Schritt, Kapitel für Kapitel, dann wird das schon -
Hallo ich habe den Login nun mal nach diesem Tutorial nachgebaut. Es funktioniert aber doch schon recht gut | badnit600. ich versuche nur dir zu folgen...
meine 3 dateien zum login mit logout...
index.php
PHP
Alles anzeigen<?php session_start(); $benutzername = $_POST['benutzername']; $kennwort = $_POST['kennwort']; if ( $benutzername == "username" AND $kennwort == "root" ) { echo "<p>Sie sind eingeloggt</p>"; $_SESSION['eingeloggt'] = TRUE; } if ( $_SESSION['eingeloggt'] == TRUE ) { // auth. echo "<p>Hallo ". date("H:i:s"); echo '<p><a href="daten.php">Eigene Daten</a></p>'; echo '<p><a href="logout.php">Logout</a></p>'; } if ( $_SESSION['eingeloggt'] != TRUE ) { ?> <form action="index.php" method="post"> Benutzername:<br /> <input type="text" name="benutzername" /> <br /> Kennwort:<br /> <input type="password" name="kennwort" /> <br /> <input type="submit" value="einloggen" /> </form> <?php } ?>
daten.php (geheime Seite)
PHP
Alles anzeigen<?php session_start(); if ( $_SESSION['eingeloggt'] == TRUE ) { echo "<h1>Ihre Daten</h1>"; echo '<p><a href="logout.php">Ausloggen</a></p>'; } else { echo "Sie haben keine Berechtigung hier"; } ?>
logout.php
PHP<?php session_start(); session_destroy(); echo "Sie wurden erfolgreich ausgeloggt"; echo '<p><a href="index.php">Einloggen</a></p>'; ?>
Gruß Nico
-
Hallo ist vielleicht noch jemand da der weiter weiß :p wäre nett. Gute nacht
Nico
-
Ich fasse es nicht!!!
Da steht immer noch der Mist mit
Und das habe ich dir auch schon geschrieben:PHP
Alles anzeigen<?php // Initialisierung der Session. // Wenn Sie session_name("irgendwas") verwenden, vergessen Sie es // jetzt nicht! session_start(); // Löschen aller Session-Variablen. $_SESSION = array(); // Falls die Session gelöscht werden soll, löschen Sie auch das // Session-Cookie. // Achtung: Damit wird die Session gelöscht, nicht nur die Session-Daten! if (ini_get("session.use_cookies")) { $params = session_get_cookie_params(); setcookie(session_name(), '', time() - 42000, $params['path'], $params['domain'], $params['secure'], $params['httponly'] ); } // Zum Schluß, löschen der Session. session_destroy(); ?>
Du bist sowas von lernresistent, da hat man echt keinen Bock mehr. Und nochmal, nicht jedes Tutorial ist brauchbar, wenn man dir hier schon Korrekturen liefert und du diese ignorierst, ist diese Thread komplett sinnbefreit!!!Letzter Tipp:
Richtig debuggen1. Man bemerkt, dass ein Skript nicht das tut, was es soll.
2. Man schreibt an den Anfang des Scriptes die Zeile: error_reporting(E_ALL);
3. Man versucht, die Stelle die daran Schuld sein kann, schonmal einzugrenzen. Falls dies nicht geht, wird zunächst das komplette Skript als fehlerhaft angesehen.
4. An markanten Stellen im Skript lässt man sich wichtige Variableninhalte ausgeben und ggf. auch in bedingten Anweisungen eine kurze Ausgabe machen, um zu überprüfen, welche Bedingung ausgeführt wurde. Wichtig bei MySQL Fehlern (...not a valid MySQL result resource...): mysql_error() verwenden oder Abfrage ausgeben und zb mit phpmyadmin testen.
5. Schritt 4 wird so lange wiederholt, bis Unstimmigkeiten im Skript auffallen
6. Damit hat man das Problem (Unstimmigkeit) gefunden und kann versuchen diese zu beheben. Hierzu dienen dann die PHP-Dokumentation und andere Quellen als Ratgeber.
7. Lässt sich das konkrete Problem trotzdem nicht beheben, kann man in Foren um Rat fragen.
8. Das Programm läuft und man kann die Debug-Ausgaben wieder entfernen.Die Ausgaben per var_dump oder echo kann man sich ersparen, in dem man einen Debugger benutzt.
-
Ich will ja nichts sagen, aber sind wir jetzt wieder am Anfang des Threads angelangt?
Wenn du dich nicht Codes von anderen einlässt, dann können wir dir auch schlecht helfen.
Der Code aus dem Tutorial ist viel schlechter als der von bandit um das schon vorweg zu sagen. Du musst dich jetzt auf einen Code einigen den du weiterbauen möchtest, dann muss du deine Probleme nochmal detailliert auflisten und dann kann dir auch geholfen werden.Nächster Punkt: Einrücken
Bei Einrücken ist es wichtig, dass man mit Tabulatoren arbeitet, weil so auch die richtige Darstellung in jedem Editor und Browser sichergestellt ist. Die Tabulator-Taste ist die Taste mit dem Pfeil nach links und nach rechts, schräk links unter der Taste 1 auf deiner Tastatur.Welchen Editor benutzt du? Ich würde dir empfehlen zu Begin mit Notepad++ zu arbeiten, ein simpler guter Editor.
Jetzt zu deinem Quellcode, da du ja anscheinend nicht gute Quellcodes benutzen willst, habe ich mal über deinen Code drübergeschaut:
index.php
- richtige Einrückungen mit Tabs (Tabulatoren)
- Keine Leerzeichen in If Abfragen, die sind da einfach nur überflüssig
- die isset() Funktion in der kurzen If Abfrage oben ist wichtig, da diese Variablen immer gesetzt werden.- Die Abfrage muss 3 = haben, weil Sie einen Bool überprüft
- Diese 2 Zeilen packen den Benutzernamen und das Passwort in die Session, so kannst du auf weiteren Seiten diese Variablen abrufen.
daten.php
- die Überprüfung, ob jemand eingeloggt wird fliegt raus, dafür gibt es Includes
- eingerückt usw.logout.php
- ist ok so für den Anfangeingeloggt.php
- diese Seite wird auf allen weiteren Seiten eingebunden via include() und stellt sicher, dass keiner der nicht eingeloggt ist auch da reinschauen kann.Wenn du Fragen hast musst du Fragen und nicht alles wieder rauslöschen und wieder zum Anfang zurückkehren. So wird das einfach nichts. Wenn du was nicht verstehst, dann frag bitte, sonst macht das hier alles keinen Sinn.
Ich habe dir den ganzen Kram mal zusammen gepackt und in den Anhang gepackt.Ich hoffe, dass bringt dich weiter. Ich hab Ihn auch getestet, er funktioniert auch.
Ich hoffe vorallem, dass ich den Scheiss hier nicht umsonst gemacht habe, weil ich nachvollziehen kann, dass du erstmal simpel anfangen möchtest, aber wenns noch simpler werden soll, dann brauchste garnicht erst mit PHP anfangen.
-