Problem mit session

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Problem mit session

    Guten Morgen allerseits,

    ich hab hier einen Mailer gebastelt. Alles läuft gut. Mail wird verschickt. Nur der Admin Bereich will nicht.
    Wenn man sich einloggt und die Kontaktadresse ändert, kommt der Fall, dass das Passwortfeld leer ist.
    Naja, macht euch ein Bild von dem Chaos
    DER MAILER

    Das Passwort ist passwort

    Sessions hab ich eingefügt, aber funktioniert trotzdem nicht so ganz
    Falls der Code benötigt wird, einfach sagen

    MfG
    pik

  • #2
    beschreib dein problem mit hilfe von code-schnipsel. was funktionier wann genau nicht, und welcher code macht ärger.
    anhand eines links und deiner beschreibung kann man wirklich nichts dazu sagen... ich zumindest nicht
    **********
    arkos
    **********

    Kommentar


    • #3
      Re: Problem mit session

      Original geschrieben von pik
      Falls der Code benötigt wird, einfach sagen
      Was sollen wir denn ohne anfangen, insbesondere da du ja auch keine konkrete Frage stellst?
      Gruss
      H2O

      Kommentar


      • #4
        Also die Adresse kann man ändern, aber der zurück Link funzt ned. Jetzt musst du also 1. dafür sorgen, dass nach einem erfolgreichen Login eine Session Var entsprechend gesetzt wird, dass du 2. die Session ID immer mitschickst (Cookie oder URL) und das du 3. beim Aufruf der admin.php prüfst ob die Login Session Var des Users nicht vielleicht doch schon gesetzt ist. In diesem Falle musst du dann auf die PW Prüfung verzichten.
        Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

        [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
        Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

        Kommentar


        • #5
          Also, ich stelle euch mal den Code vor:

          admin.php
          OffTopic:

          <?php
          require "../conf/conf.php";
          session_start();
          session_register("admin");
          ?>
          <html>
          <head>
          <title>Adminbereich</title>
          <style type="text/css">
          <!--
          body
          {
          font-family:Georgia;
          font-size:14;
          background-color:gray;
          }

          hr
          {
          color:white;
          }
          -->
          </style>
          <meta name="author" content="ClubVaio">
          </head>
          <body text="white" bgcolor="#FFFFFF" link="white" alink="white" vlink="white">
          <br><br><br>
          <hr><br>
          <?php

          $fp = fopen("../adresse.txt","r");
          if ($fp)
          {
          $zeile = fgets($fp, 100);
          fclose($fp);
          }
          else
          {
          echo "Datei wurde nicht gefunden";
          }

          if($_POST['admin'] == $adminpw)
          {
          echo "<fieldset><legend>Admin Center</legend>";
          echo "<table border='1' cellspacing='0' cellpadding='0' align='center' bgcolor='black'>";
          echo " <tr>";
          echo " <td width='100' colspan='2' align='center'>Willkommen, $adminname</td>";
          echo " </tr>";
          echo " <tr>";
          echo " <td align='center' width='300'>Momentane Kontakt E-Mail:</td>";
          echo " <td align='center' width='300'>$zeile</td>";
          echo " </tr>";
          echo " <tr>";
          echo " <td align='center' width='300'>E-Mail ändern:</td>";
          echo " <td align='center'>";
          echo " <form action='../mail/mailchange.php' method='post'>";
          echo " <input type='Text' name='newmail' value='' size='20' maxlength='20'>";
          echo " <input type='Submit' name='submit' value='Ändern'>";
          echo " </form>";
          echo " </td>";
          echo " </tr>";
          echo " <tr><td align='center' colspan='2'><a href='logout.php'>Logout</a></td></tr>";
          echo "</table></fieldset>";
          }
          else
          {
          echo "<table border='1' cellspacing='0' cellpadding='0' align='center' bgcolor='black'>";
          echo " <tr>";
          echo " <td width='250' colspan='2' align='center'>Falsches Passwort</td>";
          echo " </tr>";
          echo "</table>";
          }
          ?>
          <br>
          <hr>
          </body>
          </html>



          mailchange.php
          OffTopic:

          <?php
          require "../conf/conf.php";
          session_start();
          ?>
          <html>
          <head>
          <title></title>
          <style type="text/css">
          <!--
          body
          {
          font-family:Georgia;
          font-size:14;
          background-color:gray;
          }

          hr
          {
          color:white;
          }
          -->
          </style>
          <meta name="author" content="ClubVaio">
          </head>
          <body text="white" bgcolor="#FFFFFF" link="white" alink="white" vlink="white">
          <br><br><br><hr><br>
          <?php
          if($newmail == "")
          {
          $newmail = "-";
          }
          else
          {
          $newmail = $newmail;
          }

          $fp = fopen("../adresse.txt","w");
          if ($fp)
          {
          flock($fp,2);
          fputs ($fp, $newmail);
          flock($fp,3);
          fclose($fp);
          echo "<fieldset><legend>Adresse ändern</legend>";
          echo "<h3 align='center'>Kontak Adresse geändert zu <u>".$newmail."</u></h3>";
          echo "<p align='center'><a href='../admin/admin.php'>Zurück</a></p></fieldset>";
          }
          else
          {
          echo "Datei nicht gefunden oder ist beschädigt";
          }

          ?>
          <br><hr>
          </body>
          </html>



          Welcher Code Probleme bereitet, hab ich nicht feststellen können.
          Ich meine, meine Session ist nicht korrekt
          Zuletzt geändert von pik; 03.10.2007, 19:21.

          Kommentar


          • #6
            Solch unformatierten Code sehe ich mir nicht genauer an. Benutze also bitte PHP-Tags und kürze ihn auf die relevanten Stellen (mindestens das ganze style-Zeugs interessiert hier niemanden). Nur folgendes zu
            session-register()

            Anmerkungen
            Achtung
            Wenn Sie wollen, dass ihr Script unabhängig von der Einstellung von register_globals funktioniert, müssen Sie stattdessen das Array $_SESSION verwenden, weil $_SESSION-Einträge automatisch registriert werden. Wenn Sie in Ihrem Script session_register() verwenden, funktioniert es nicht in Umgebungen, in denen die PHP-Anweisung register_globals deaktiviert ist.
            register_globals: Wichtiger Hinweis: Seit PHP 4.2.0 ist die Standardeinsteillung für die Konfigurationsoption register_globals off. Die PHP Community ermutigt Alle, sich nicht auf diese Option zu verlassen und Alternativen wie superglobals zu verwenden.
            Zuletzt geändert von H2O; 04.10.2007, 08:51.
            Gruss
            H2O

            Kommentar


            • #7
              Ich würde mal hier ansetzen
              PHP-Code:
              //erstmal ganz oben in deinem Code in admin.php
              $_SESSION['verified'] = false;
              //Prüfung des PW
              if($_POST['admin'] == $adminpw || $_SESSION['verified'] === true){
                
              $_SESSION['verified'] = true;
                [...]
              }
              //weiter unten
              echo '<form action="../mail/mailchange.php?'.strip_tags(SID).'" method="post">';
              //und in mailchange.php
              echo '<p align="center"><a href="../admin/admin.php?'.strip_tags(SID).'">Zurück</a></p></fieldset>'
              Du musst immer sicherstellen, dass die Session ID zwischen den beteiligten Seiten hin- und hergeschickt wird.

              Gruss

              tobi
              Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

              [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
              Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

              Kommentar


              • #8
                Einspruch!!
                Cookies im Browser einschalten, dann gehts auch ohne das unsichere SID Gedöns.

                Und:
                Nicht die SID händisch anhängen! Schon gar nicht eine Get Variable an ein Post Formular... Wenn man sich sowas angewöhnt, kann und wird das auf Dauer zu schwer zu findenen Fehlern führen.
                Dafür wurden session.use_trans_sid und auch http://de2.php.net/de/output_add_rewrite_var erfunden!!

                ------------
                $newmail = $newmail; // flüssiger als Wasser
                Und nicht register_globals=Off tauglich. Bitte kundig machen und das komplette Script auf einen modernen Stand bringen.
                Zuletzt geändert von combie; 04.10.2007, 10:27.
                Wir werden alle sterben

                Kommentar


                • #9
                  Danke jahlives...
                  Aber mit SID´s hatte ich noch nicht viel zu tun... bin noch sozusagen ein PHP-Anfänger.
                  Werde mir mal deinen Vorschlag zur Hilfe nehmen.

                  @combie: Ich habe Cookies immer an ... trotzdem hab ich Probleme mit diesem Skript.

                  @H2O: Es ist mein zweiter Beitrag in diesem Forum. Werde mich bessern Versprochen

                  MfG
                  pik

                  EDIT: Ok, hab das Problemchen - eventuell - gelöst.
                  Hab ein hidden-Feld eingefügt, das das Passwort wieder an admin.php übergibt.
                  Jetzt die Frage: Ist es möglich das Passwort als md5 für value einzutragen?
                  Zuletzt geändert von pik; 05.10.2007, 15:43.

                  Kommentar


                  • #10
                    Hab ein hidden-Feld eingefügt, das das Passwort wieder an admin.php übergibt.
                    Falscher Ansatz! PW niemals auch nicht gehashed an den Client senden. Dafür gibt es Sessions um solche heiklen Infos auf dem Server zu halten. Ausserdem musst du ja nicht das PW in der Session speichern, sondern nur den Zustand des Logins (true oder false).

                    Gruss

                    tobi
                    Gutes Tutorial | PHP Manual | MySql Manual | PHP FAQ | Apache | Suchfunktion für eigene Seiten

                    [color=red]"An error does not become truth by reason of multiplied propagation, nor does truth become error because nobody sees it."[/color]
                    Mohandas Karamchand Gandhi (Mahatma Gandhi) (Source)

                    Kommentar

                    Lädt...
                    X