PHP - Admin-Bereich


  • mortician
  • 1817 Aufrufe 9 Antworten

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • PHP - Admin-Bereich

    Hi!
    Hab mal wieder ein Problem in Sachen php.
    Wäre nett, wenn ihr mal wieder helfen könntet :D.
    Undzwar habe ich folgendes Problem.
    Ich habe eine adminlogin.php wo ein Formular vorkommt, welches
    die Werte "username" und "password" abfragt.
    Das Formular wird abgeschickt zur Datei: admin.php
    Die admin.php speichert (wenn das Formular ausgeführt wurde) den username und das passwort in einer Session.
    Nun wird überprueft ob username und password dem passwort entsprechen, welches ich fuer den Bereich gewählt habe.
    Falls der username und das passwort richtig sind kommt eine mysql_abfrage etc.
    Doch wenn ich von dieser admin.php seite 2 aufrufe (aufrufen lasse) übernehmen die Sessions das Passwort nicht.
    Wäre nett wenn ihr mir helfen koenntet.

    Inhalt adminlogin.php:

    PHP-Quellcode

    1. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    2. <html>
    3. <head>
    4. <?php require('config.php'); ?>
    5. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    6. <title>Unbenanntes Dokument</title>
    7. </head>
    8. <body>
    9. <center>Admin-Bereich</center>
    10. <?php
    11. echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\">",
    12. "<form action=\"admin.php\" ",
    13. "method=\"post\">",
    14. "<tr>",
    15. "<td>Name:</td>",
    16. "<td><input name=\"username\" type=\"text\"></td>",
    17. "</tr><tr><td>Passwort:</td><td><input name=\"password\" type=\"password\"></td></tr><tr><td></td><td><input type=\"submit\" value=\"Login\" name=\"submit\"></form></table>";
    18. ?>
    19. </body>
    20. </html>
    Alles anzeigen


    Inhalt admin.php:

    PHP-Quellcode

    1. <?php
    2. $zugangsusername = "loginname";
    3. $zugangspassword = "loginpw";
    4. if ($submit AND $username==$zugangsusername AND $password==$zugangspassword) {
    5. session_start();
    6. $_SESSION['username'] = $username;
    7. $_SESSION['password'] = $password;
    8. $_SESSION['submit'] = $submit;
    9. }
    10. ?>
    11. <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    12. <html>
    13. <head>
    14. <?php
    15. require('config.php'); ?>
    16. <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
    17. <title>Unbenanntes Dokument</title>
    18. </head>
    19. <body>
    20. <center>Admin-Bereich</center>
    21. <?php
    22. if ($_SESSION['username']==$zugangsusername AND $_SESSION['password']==$zugangspassword AND $_SESSION['submit']) {
    23. $vb = mysql_connect($host,$user,$pw);
    24. mysql_select_db('k1k0');
    25. $eintraege_pro_seite = 10;
    26. $seite = $_GET['seite'];
    27. if (!isset($seite)) {
    28. $seite = 1;
    29. }
    30. $start = $seite * $eintraege_pro_seite - $eintraege_pro_seite;
    31. $result = mysql_query("SELECT * FROM gbook_tempel ORDER BY datum DESC LIMIT $start, $eintraege_pro_seite",$vb);
    32. $result2 = mysql_query("SELECT * FROM gbook_tempel ORDER BY datum DESC",$vb);
    33. $allezeilen = mysql_num_rows($result2);
    34. $seitenanzahl = $allezeilen / $eintraege_pro_seite;
    35. for ($a=0;$a<$seitenanzahl;$a++) {
    36. $b = $a + 1;
    37. if ($seite==$b) {
    38. echo "$b ";
    39. } else {
    40. echo "<a href=\"?seite=$b\">$b</a> ";
    41. }
    42. }
    43. for ($i=0;$i<mysql_num_rows($result);$i++) {
    44. $gaestebuch[$i] = mysql_fetch_object($result);
    45. echo "<table border=\"0\" cellspacing=\"0\" cellpadding=\"0\" align=\"center\">",
    46. "<tr><td width=\"200\">#",
    47. $gaestebuch[$i]->id,
    48. "</td><td></td></tr>",
    49. "<tr><td>Name:</td><td><input type=\"text\" name=\"name\" value=\"",
    50. $gaestebuch[$i]->name,
    51. "\"></td></tr>",
    52. "<tr><td>Betreff:</td><td><input type=\"text\" name=\"betreff\" value=\"",
    53. $gaestebuch[$i]->betreff,
    54. "\"></td></tr>",
    55. "<tr><td>Email:</td><td><input type=\"text\" name=\"email\" value=\"",
    56. $gaestebuch[$i]->email,
    57. "\"></td></tr>",
    58. "<tr><td>Homepage:</td><td><input type=\"text\" name=\"homepage\" value=\"",
    59. $gaestebuch[$i]->homepage,
    60. "\"></td></tr>",
    61. "<tr><td>Text:</td><td><textarea name=\"eintrag\">",
    62. $gaestebuch[$i]->eingabe,
    63. "</textarea></td></tr>",
    64. "<tr><td><input type=\"submit\" name=\"submit\" value=\"Bestätigen\"></td><td><input type=\"reset\" value=\"Alles Löschen\"></td></tr>",
    65. "</table><br><br>";
    66. }
    67. } else {
    68. echo "Die von Ihnen angegebenen Login-Daten sind nicht korrekt!";
    69. }
    70. ?>
    71. </body>
    72. </html>
    Alles anzeigen


    Also das Problem.
    Die Session werden schon übernommen für die admin.php.
    Doch wenn es um eine Seitenangabe geht streikt das script.
    ALso auch wenn es heisst admin.php?seite=1.
    Wäre euch mal wieder dankbar!
    mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Ich würde mal sagen, das du bei jedem klick auf eine andere Seite die ganzen Logindaten wieder überprüfst... also müsstest du die Variablen beim Link auf die nächste Seite auch mitschicken (was irgendwie überflüssig ist)
    man muss ja nicht die Daten überprüfen, die du schon mal überprüft hast :rolleyes: - und die SESSION wird auch jedesmal neu gesetzt... oder nicht?
    wenn die bei jedem klick neu gesetzt wird, brauchst du ja keine SESSION mehr...

    PHP-Quellcode

    1. echo "<a href=\"?seite=$b&username=$username&password=$password\">$b</a> ";


    die überprüfung würde ich allerdings nur einmal durchführen, das heisst, solange die SESSION nicht gesetzt ist.

    Falls das nicht richtig ist, soll es einer der Gurus hier korrigieren :)
    ich bin auch nur ein hobby-bastler...
    mein PC . . meine Blackliste . . Download mit FlashFXP
    [SIZE="2"]im moment NICHT aktiv, PN's werden warscheinlich nicht gelesen^^[/SIZE]
  • Kuhl ich dank dir.
    Hattest ein & vergessen.
    Dank dir nochmals... eigentlich simple... hätte ja sogar "ich" drauf kommen müssen.
    Na egal.
    @ mod : noch nicht closen.
    thx nochmals ^^
    mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • Beginn die admin.php doch einfach mal so:

    PHP-Quellcode

    1. <?php
    2. $loggedin = false;
    3. $user = "alphabet";
    4. $pw = "abc";
    5. session_start();
    6. if (isset($_REQUEST['submit']))
    7. {
    8. if (isset($_REQUEST['username']) && isset($_REQUEST['password']))
    9. if ($_REQUEST['username'] == $user && $_REQUEST['password'] == $pw)
    10. {
    11. $_SESSION['username'] = $user;
    12. // password schenken wir uns mal, unnötig
    13. $loggedin = true;
    14. }
    15. }
    16. else if ($_SESSION['username'] == $user)
    17. $loggedin = true;
    18. [...]
    19. if ($loggedin)
    20. mysql_connect(usw, usf);
    Alles anzeigen

    Ist nur ein Vorschlag zum erläutern des Prinzips ^^

    Btw Passwörter schreibt man nicht in get-Variablen … die Lösung würde ich gleich verwerfen.
  • Hi!
    @ woodooman:
    Ich dachte ja es funktioniert.
    Tut es auch.
    Aber nur wenn ich Cookies akzeptieren...
    Hast du ne Lösung wie es auch geht, wenn Cookies deaktiviert werden?!
    Wäre echt geil.
    Habe echt wenig Ahnung von Sessions...
    Nur ich denke mal das man mit der SID arbeiten muss.
    Aber wie genau .. keinen Plan.
    mfg mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • abend,
    also mal kurz zum thema SESSION...
    GANZ am anfang der datei musst du die session starten

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. ....
    4. ...
    5. ..
    6. /*mysql abfrage / abgleich */
    7. /*für solch einen admin bereich ... braucht man z.b. */
    8. $_SESSION['id']=...;
    9. $_SESSION['user']=...;
    10. $_SESSION['group']=...;
    11. ...
    12. ..
    13. ...
    14. session_destroy(); /* löscht alle sessions wieder > als logout */
    15. OR
    16. unstet_session['???']; /* individuel löschen */
    17. ?>
    Alles anzeigen
    das sind die wichtigesten sachen zum thema session .. wenn nicht google einfach mal ... tut.php-q.net

    g8 or00to
  • Hi!
    Ich hab mal ne insgesamte Frage zu meinem Script.
    Ich will es nochmal neuschreiben.
    Die adminlogin.php bleibt natürlich.
    Nun wie säh es aus wenn ich die admin.php so machen würden?!:

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. $user = testuser;
    4. $pw = testpw;
    5. $_SESSION['username'] = $username;
    6. $_SESSION['password'] = $password;
    7. if ($_SESSION['username'] == $user && $_SESSION['password'] == $pw]) {
    8. echo "Login erfolgreich!";
    9. } else {
    10. if (!isset($submit)) {
    11. echo "Sie müssen sich vorhher einloggen um den Admin-Bereich zu betreten!";
    12. }
    13. if ($_SESSION['username'] != $user && $_SESSION['password'] != $pw]) {
    14. echo "Username bzw. Passwort sind nicht korrekt!";
    15. }
    16. }
    17. ?>
    Alles anzeigen


    Und dann da wo der Teil echo "Login erfolgreich!"; steht dann den Teil für den Admin-Bereich einpacke müsste es doch funktionieren oder?!
    Ist so auch alles klar mit den Sessions?!
    Wenn ich nun bei erfolgreichem Login zu einer 2. Seite verlinken will, wie muss ich dann verlinken, dass die Sessions mit übernommen wurden?
    So wie woodooman es schon erwähnt hat?! Wie muss die 2. Seite genau aussehen nach diesem Beispiel?!
    Ich danke euch nochmals, mortician
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]
  • das wäre sehr sinnvoll ^^ den benutzernamen und das passwort in der url mitschicken ist immer gut ^^
    wird oft bei high security sachen eingesetzt ^^
    die session wird local auf dem pc des users gespeichert. du musst nur auf jeder seite wieder abfragen ob die session variable auch richtig ist.
    wenn sich user auch abmelden können sollen (ist das deutsch?) benutzt du einfach die funktion session_destry() und gut ist.
    Schon ist die session variable beim user leer und er muss sich wieder anmelden bevors weiter gehen kann ^^
    Signatur entsprach nicht den Boardregeln.
    ->gelöscht by lukas2004
  • ALso wäre in meinem Beispiel folgendes richtig:
    admin.php

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. $user = testuser;
    4. $pw = testpw;
    5. $_SESSION['username'] = $username;
    6. $_SESSION['password'] = $password;
    7. if ($_SESSION['username'] == $user && $_SESSION['password'] == $pw]) {
    8. echo "Login erfolgreich! <a href=\"schutz.php?username=$username&password=$password\"";
    9. } else {
    10. if (!isset($submit)) {
    11. echo "Sie müssen sich vorhher einloggen um den Admin-Bereich zu betreten!";
    12. }
    13. if ($_SESSION['username'] != $user && $_SESSION['password'] != $pw]) {
    14. echo "Username bzw. Passwort sind nicht korrekt!";
    15. }
    16. }
    17. ?>
    Alles anzeigen


    schutz.php

    PHP-Quellcode

    1. <?php
    2. session_start();
    3. $user = testuser;
    4. $pw = testpw;
    5. if ($_SESSION['username'] == $user && $_SESSION['password'] == $pw) {
    6. echo "Hier geschützter Inhalt!";
    7. } else {
    8. [etc]..
    9. }
    10. ?>


    Soweit ich glaube wäre es richtig.
    Nun noch eine kurze Frage. Undzwar arbeiten doch Foren... soweit ich das mitbekommen mit weiterführenden Links immer mit der ID der Session oder nicht?!
    Also wenn ich mich irgendwo einlogge seh ich in der Adresszeile nicht zb username=user&password=pw sonder immer zahlen etc.
    Soweit ich weiss sind es ID's.
    Kann man das in meinem "kleinen" Beispiel auch mit einbringen?!
    Das wäre die letzte Frage.
    Dank euch beiden nochmals....
    mortician

    //EDIT
    Das Script funktioniert.
    Aber nur wenn ich Cookies aktivieren.
    Bei Deaktivierung funktioniert das Script nicht.
    Habt ihr ne Ahnung?!

    //EDIT²
    Hab mir selbt beholfen.
    Alles wunderbar.
    Googel half ^^

    @Mod: plZ Close
    An den Mithelfern nochmals fetten Dank!
    [size=1][FONT="Courier New"]###############_###_####_
    #_ __ #___ _ _| |_(_)__(_)__ _ _ _###############new uploads: [1] [2] [3] [4] [5] [6] [7] [8]
    |#'##\/ _ \ '_|##_| / _| / _` | ' \
    |_|_|_\___/_|##\__|_\__|_\__,_|_||_|###############Bis 28. Sept. weg[/FONT][/size]