Ankündigung

Einklappen
Keine Ankündigung bisher.

Eine 1 im Browser, keine 1 im Code...

Einklappen

Neue Werbung 2019

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

  • Eine 1 im Browser, keine 1 im Code...

    Hallo erstmal.

    Nachdem ich zwar schon ein paar Sachen mit PHP gemacht habe, aber meistens unter Anleitung und auch nie von vorne sondern eher von mittendrin, habe ich beschlossen, ich schnapp mir mal mein PHP Einsteigerbuch und arbeite das mal von vorne nach hinten durch.

    So weit so gut. Ich bin nun an einem Punkt, wo man eine "Passwortabfrage" programmiert. Ich würd das zwar nie so nutzen, aber wie gesagt, ich wollte von Seite 1 bis zur letzten

    Also, die Abfrage besteht aus 4 Dateien:

    1. Passwort.htm. Diese Datei enthält lediglich ein kleines Formular um den Namen und das Passwort eingeben zu könne:

    Code:
    <html>
    <head>
    <title>Passwort</title>
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    
    <form method="post" action="auswertungpass.php">
     Username: <input name="user"><br>
     Passwort: <input name="pass" type="password"><br>
     <input type="submit" value="Senden">
     </form>
    
    
    </body>
    </html>
    2. auswertungpass.php. Diese Datei prüft halt, ob die eingegebenen Daten den von mir in der #up.php eingegebenen entsprechen:

    Code:
    <?php
    include("#up.php");
    
    $user = $_POST['user'];
    $pass = $_POST['pass'];
    
    if ($user == $user_ok and $pass == $pass_ok)
    {
     echo include("#geheim.inc");
    }
    else
    {
     echo "Leider hast du ein falsches Passwort und/oder einen falschen Username eingegeben... :'-(";
    }
    ?>
    3. #up.php:

    Code:
    <?php
      $user_ok = "Nilpferd";
      $pass_ok = "hippo";
    ?>
    Und zu guter Letzt:

    4. #geheim.inc. Diese Datei enthält die Ausgabe, die nach einer korrekten Eingabe von Name und Passwort erfolgt:

    Code:
    <html>
    <head>
    <title>Glückwunsch! Du hast diese höchst geheime Seite erreicht ;)</title>
     <style type = "text/css">
    <!--
     h1 {text-align: center; font-size: 40}
     p  {text-align: center; font-size: 22; color: red}
    -->
    </style>
    
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    
    <h1>Es funktioniert!</h1>
    <p>Die Passwortabfrage wäre dann damit auch erledigt.</p>
    </body>
    </html>
    Das funktioniert auch alles so wie es soll. ABER:
    Sobald ich im Browser die letzte Seite erreicht habe (also die Seite nach korrekter Eingabe), steht eine 1 unterhalb der von mir definierten Ausgabe.
    Hier mal der Code, den ich über Seitenquelltext anzeigen vom Browser bekomme:

    Code:
    <html>
    <head>
    <title>Gl&uuml;ckwunsch! Du hast diese h&ouml;chst geheime Seite erreicht ;)</title>
     <style type = "text/css">
    <!--
     h1 {text-align: center; font-size: 40}
     p  {text-align: center; font-size: 22; color: red}
    -->
    </style>
    
    </head>
    <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    
    <h1>Es funktioniert!</h1>
    <p>Die Passwortabfrage w&auml;re dann damit auch erledigt.</p>
    </body>
    
    </html>1
    Wie ihr sehen könnt, ist der Code identisch mit meinem, abgesehen von der 1 nach dem schließenden HTML Tag. Ich hab wirklich keine Ahnung wo die herkommt.

    Ich bin jede meiner Dateien mehrmals durchgegangen, auch mit Suchfunktion, ausser den 1en in den H1 Tags gabs keine.

    Ich hoffe ihr könnt mir da weiterhelfen.

    Danke schonmal

    -Stranger


  • #2
    Willkommen Stranger!

    echo include("#geheim.inc");

    Include liefert einen boolschen Returnwert, den echo implizit in String umwandelt.
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Vielen Dank erstmal. Ich hab hier auch die PHP 5 Schnellreferenz von Markt und Technik, aber auch da fand ich den Hinweis von dir nicht drin. Das hab ich jetzt zum ersten mal gehört mit dem boolschen Wert.

      Ich hab jetzt folgendes gemacht:

      Die auswertungpass.php:

      Code:
      <?php
      include("#up.php");
      
      $user = $_POST['user'];
      $pass = $_POST['pass'];
      
      if ($user == $user_ok and $pass == $pass_ok)
      {
       include("#geheim.inc");
       echo $ausgabe;
      }
      else
      {
       echo "Leider hast du ein falsches Passwort und/oder einen falschen Username eingegeben... :'-(";
      }
      ?>
      und meine #geheim.inc:

      Code:
      <?php
      
      $ausgabe = "
      <html>
      <head>
      <title>Glückwunsch! Du hast diese höchst geheime Seite erreicht ;)</title>
       <style type = 'text/css'>
      <!--
       h1 {text-align: center; font-size: 40}
       p  {text-align: center; font-size: 22; color: red}
      -->
      </style>
      
      </head>
      <body text='#000000' bgcolor='#FFFFFF' link='#FF0000' alink='#FF0000' vlink='#FF0000'>
      
      <h1>Es funktioniert!</h1>
      <p>Die Passwortabfrage wäre dann damit auch erledigt.</p>
      </body>
      </html>"
      
      ?>
      ich hab also aus dem HTML Code, der in der geheim.inc stand einen PHP Code gemacht und den gesamten PHP Code innerhalb von der geheim.inc in die Variable $ausgabe gepackt. Dann die geheim.inc in die auswertungpass.php integriert und nur noch die variable ausgeben lassen.

      Ist das eine gute Lösung? Wie gesagt, steh noch recht am Anfang, viel mehr als nen paar if Abfragen und Schleifen hab ich noch nicht groß gemacht / machen müssen (das aber dafür reichlich )

      Danke nochmal, mein Tag ist gerettet


      EDIT: Ok, die Frage, ob die Lösung gut ist hat sich erledigt. Ich hab vergessen, dass durch das include der php Modus verlassen wird... Naja, Anfänger halt

      Danke nochmal.

      Kommentar


      • #4
        Lass die Raute weg und nenn inc in php oder inc.php um, diese Stuempertricks fuer den Browser sind wirklich nicht mehr zeitgemaess.
        "Mein Name ist Lohse, ich kaufe hier ein."

        Kommentar


        • #5
          Habe ein ähnliches Problem

          Hallo erstmal,

          ich habe ein ganz ähnliches Problem.
          Ich includiere ein Datei (parameter.inc) in eine *.php Datei.

          In der parameter.inc steht foldendes:

          PHP-Code:
           <?php
           $variable1 
          "abs";
           
          $variable2 "xyz";
           
          ?>
          Die *.php sieht wie folgt aus.

          PHP-Code:
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <?php
          require_once("parameter.inc");
          ?>
          <html>
          <head>
            usw....
          In der Datei die dann im Browser ausgegeben wird stehen immer die gleichen Steuerzeichen:

          Code:
          <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
          <html>
          <head>
             usw....
          Woher kommen die 3 Steuerzeichen ("")? Ich weiß mir keinen Rat mehr. HILFE

          Vielen Dank für die Hilfe.
          Karsten

          Kommentar


          • #6
            Fix geraten: "parameter.inc" wurde mit UTF-8-BOM abgespeichert:
            Byte Order Mark – Wikipedia
            "Mein Name ist Lohse, ich kaufe hier ein."

            Kommentar


            • #7
              Vielen Dank für die super schnelle Hilfe.

              Ja du hast recht. Mit Hilfe eines HEX-Editors konnte ich die 3 Steuerzeichen sehen. Ich kann es zur Zeit leider noch nicht ausprobieren.

              Aber vielen Dank.
              Karsten

              Kommentar


              • #8
                Lass die Raute weg und nenn inc in php oder inc.php um, diese Stuempertricks fuer den Browser sind wirklich nicht mehr zeitgemaess.
                Wie gesagt, ich wollt halt ganz von Vorn anfangen. Also mach ichs erstmal wies im Buch steht. Ich würd das wie gesagt so eh nicht einsetzen, da find ich die htacces Variante besser.

                Trotzdem danke für den Tipp.

                -Stranger

                Kommentar


                • #9
                  Wenn das so
                  PHP-Code:
                  echo include("#geheim.inc"); 
                  im Buch steht, dann solltest du dieses rasch wegschmeissen.
                  Zitat von Stranger
                  da find ich die htacces Variante besser
                  Ist dafür viel weniger sicher
                  Gruss
                  L

                  Kommentar


                  • #10
                    Zitat von lazydog Beitrag anzeigen
                    Ist dafür viel weniger sicher
                    Du meinst damit die Passwörter, welche mittels des Crypt-Mechanismusses kodiert wurden, oder?

                    Er möchte den Zugriff aber sowieso gänzlich verbieten. Und ich wüsste nicht was an einem "Deny from all" in der .htaccess so unsicher sein soll.

                    Man hat zwei Möglichkeiten:

                    Man vebietet den Zugriff auf die einzelnen zu schützenen Dateien:
                    Code:
                    <Files geheim.htm>
                    order deny,allow
                    deny from all
                    </Files>
                    
                    <Files up.inc>
                    order deny,allow
                    deny from all
                    </Files>
                    Oder man legt alle zu schützenden Dateien in einem gemeinsamen Ordner ab, auf den man von außen überhaupt nicht mehr zugreifen kann. PHP kann das aber trotzdem noch.
                    Code:
                    Order deny,allow
                    Deny from all
                    Ich finde die .htaccess-Lösung am saubersten.
                    Noch schöner wäre es natürlich, wenn man den Zugriff direkt mit den Unix-Rechten verhindern könnte. Allerdings könnte man dann auch nicht mehr über PHP drauf zugreifen.

                    Kommentar


                    • #11
                      Zitat von Griffith Beitrag anzeigen
                      Er möchte den Zugriff aber sowieso gänzlich verbieten.
                      Darum übt sie/er sich mit einem Login-System
                      Gruss
                      L

                      Kommentar


                      • #12
                        Schon, aber wovon ich sprach ist, wie man die geheim.htm und up.inc am besten vor Zugriffen von außen schützt - sprich Zugriffen, die nicht über PHP selbst gehen.

                        Sodass man nicht mehr die geheime geheim.htm Webseite sehen kann und auch nicht mehr die Passwörter einsehen kann.

                        Im Gegenzug zu der Variante mit "#up.inc" oder der "up.php.inc" oder der Variante mit der PHP-Konstante.

                        Den Schutzmechanismus von HTTP selbst kann er sowieso nicht nutzen, wenn er ein eigenes Login-Formular haben möchte.

                        Kommentar

                        Lädt...
                        X