Ankündigung

Einklappen
Keine Ankündigung bisher.

Namen und Passwort in PHP

Einklappen

Neue Werbung 2019

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

  • Namen und Passwort in PHP

    Hallo alle zusammen.

    Zurzeit bearbeite ich eine Aufgabe die meinem Lernheft behandelt wird. Nun habe ich ein Problem und komme einfach nicht weiter. Ich hoffe mir kann jemand helfen. Es werden vier Aufgaben verlangt.

    Folgende Aufgaben sind gegeben:

    1. Erweitern Sie die Klasse „kunde“ um die Methode „anmelden“, die einen Namen und ein Passwort entgegennimmt.
    Für das Name-Passwort-Paar -„Admin“/„Hallo“ soll der Wert 1 als Kundennummer in dem Member „$KndNr“ der Kundenklasse gesetzt werden.
    Für alle anderen Angaben soll als Kundennummer wieder der Unix-Timestamp in die Kundennummer-Variable eingetragen werden.

    2. Erweitern Sie den Konstruktor und den Destruktor der „kunden“-Klasse zum Lesen und Setzen der Session-Variablen „$_SESSION['id']“ nach dem Vorbild der Klasse „sitzungsSeite“.
    In dieser Session-Variablen muss die Kundennummer aus dem „kunden“-Objekt abgelegt werden.
    Die Klasse "sitzungsSeite" wurde im Lernheft erstellt(INFO) hat aber mit den eigentlichen Aufgaben nichts zu tun.

    3. Erstellen Sie ein PHP-Programm für eine Webseite, basierend auf den Klassen „seite“ und der soeben weiterentwickelten Klasse „kunde“ mit einem Anmeldeformular zur Eingabe eines Namens und eines Passwortes. Die Seite soll angezeigt werden, wenn der Administrator noch nicht angemeldet ist bzw. wenn die Methode „getKundennummer()“ den Wert 1 liefert. Bei erfolgreicher Anmeldung des Administrators soll ein Formular ausgegeben werden, um eine Datei – letztlich die Datei „artikeldaten.xml“ – auf den Webserver übertragen zu können.

    4.Integrieren Sie in das PHP-Programm der Aufgabe 3 eine (klassische) Funktion (keine Methode einer Klasse), in der die übertragene Datei (aus Aufgabe 3) auf ihren Typ („text/xml“) geprüft und abgespeichert wird, wenn kein Fehler auftritt. Eine Seite mit einer Fehler- oder Erfolgsmeldung muss ausgegeben werden.

    So nun zu meinem Problem:

    Ich habe meine Klasse "Kunde" , "Seite" , "Index" ( Also mein Hauptprogramm.) und eine Klasse "pruefen" erstellt. Es wird mir auch alles ganz gut angezeigt. Ich kann mich als Admin anmelden und die übertragene Datei (Aufgabe 4) prüfen lassen. Funktioniert einwandfrei! Gebe ich allerdings nicht den richtigen benutzer Namen und das richtige Passwort an, werde ich trotzdem auf die Upload Seite verwiesen, was ja nicht sinn der Sache sein soll. Ich werde al die notwendigen Skripte mitschicken in der Hoffnung jemand hat die Zeit und Lust mir zu helfen. DANKE

    Das erste Skript ist meine index.php,
    das zweite ist die Klasse "Kunde",
    dritte die Klasse "Seite",
    vierte ist die pruefen.php
    PHP-Code:
    require_once ("class_kunde_esa.php");
    session_start();
    session_destroy();
    require_once (
    "class_seite_esa.php");

    $kunde = new kunde;

         if (isset(
    $_POST['benutzer'])  && isset($_POST['password']))       
         {
           
    $kunde->anmelden($_POST['benutzer'] , $_POST['password']);
         }
         
         if (isset(
    $_POST['benutzer']) && isset($_POST['password']))
         {
           print 
    "<h1>Willkommen</h1>";
             print 
    "<h3>Datei hochladen:</h3>";    
           print 
    "<form action='pruefen_esa.php' method='post' enctype='multipart/form-data'>";
           print 
    "<p><input type='file' name='artikeldaten'  size='25' /></p>";
           print 
    "<p><input type='submit' value='Senden' /></p></form>";
         } 
         else 
         {
           print 
    "<h1>Login Bereich</h1>";
           print 
    "<form action='index_esa.php' method='post'>";
           print 
    "<p><input name='benutzer' /> Benutzer</p>";
           print 
    "<p><input type='password' name='password' /> Passwort</p>";
           print 
    "<p><input type='submit' value='Login' /></p>";
           print 
    "</form>";
         } 
    PHP-Code:
    class kunde
    {
      private 
    $KndNr;
        
      public function 
    __construct()
      {
        
    session_start();
        if(!isset(
    $_SESSION['id']))
        {
         
    $_SESSION['id'] = $this->KndNr;
        }
      }  
      
      
      public function 
    getKundenNummer()
      {
        return 
    $this->KndNr;
      }
      
      public function 
    anmelden($name$password)
      {
        if(
    $_POST['benutzer'] == "Admin" && $_POST['password'] == "Hallo")
        {
          
    $this->KndNr 1;
        }
        else
        {
          
    $this->KndNr time();
        }
      }
      
      public function 
    destruct()
      {
        
    $_SESSION['id'] = $this->KndNr;
      }
     

    PHP-Code:
    class seite 

      private 
    $titeltext

      public function 
    kopf() 
      { 
        print 
    "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.01//EN\""
               
    " \"http://www.w3.org/TR/html4/strict.dtd\">\n"
        print 
    "<html>\n"
        print 
    "<head>\n"
        print 
    "<meta http-equiv=\"content-type\""
                   
    "content=\"text/html; charset=utf-8\">\n"
        if (
    $this->titeltext != ""
        print 
    "<title>".$this->titeltext."</title>\n"
        print 
    "</head>\n"
        print 
    "<body>\n"
      } 

      public function 
    setTitel($text
      { 
        
    $this->titeltext $text
      } 

      public function 
    inhalt($daten
      { 
        foreach (
    $daten as $value
        { 
           print 
    $value."\n"
        } 
      } 


      public function 
    fuss() 
      { 
        print 
    "</body>\n"
        print 
    "</html>\n"
      } 

    PHP-Code:
    print "<p>Zur Kontrolle:<br />";

    print 
    "Dateiname: "
      
    $_FILES["artikeldaten"] ["name"] . "<br />";
    print 
    "Dateityp: "
      
    $_FILES["artikeldaten"] ["type"] . "<br />";  
    print 
    "Abgelegter Dateiname: "
      
    $_FILES["artikeldaten"] ['tmp_name'] . "<br />";
    print 
    "Dateigroeße: "
      
    $_FILES["artikeldaten"] ["size"] . "<br />";
      
    $id explode(".",$_FILES["artikeldaten"]["name"]);
    $text $id[count($id)-1];
    print 
    "Dateiendung: $text<br />";
      
    if(
    $_FILES["artikeldaten"]["size"]>&& $text=="xml")
    {
      
    copy($_FILES["artikeldaten"]["tmp_name"],"artikeldaten.xml");
      print 
    "<p><font size=5>Datei wurde erfolgreich &uuml;bertragen!</font><br />";
    }
    else
    {
      print 
    "<p><font size=5>ERROR: Keine XML-Datei oder Datei nicht vorhanden!</font>";



  • #2
    genau diese aufgabe wurde hier bereits beantwortet

    http://www.php.de/php-einsteiger/106...dennummer.html
    apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

    Kommentar


    • #3
      PHP-Code:
        public function anmelden($name$password
        { 
          if(
      $_POST['benutzer'] == "Admin" && $_POST['password'] == "Hallo"
          { 
            
      $this->KndNr 1
          } 
          else 
          { 
            
      $this->KndNr time(); 
          } 
        } 
      Auf jeden Fall unsauber/falsch: Du übergibst Parameter, prüfst dann aber $_POST direkt.
      Debugging: Finde DEINE Fehler selbst! | Gegen Probleme beim E-Mail-Versand | Sicheres Passwort-Hashing | Includes niemals ohne __DIR__
      PHP.de Wissenssammlung | Kein Support per PN

      Kommentar


      • #4
        Zitat von hausl Beitrag anzeigen
        Auf jeden Fall unsauber/falsch: Du übergibst Parameter, prüfst dann aber $_POST direkt.
        diese datei ist aus einem Hochschulheft, man muss die verwenden.. die leute auf der Schule haben keine Ahnung von PHP sind aber lehrer

        EDIT: ach ich habe doch die lösung der Aufgabe gefunden

        https://www.dropbox.com/sh/b5pbekwm2...JGyhm9zba?dl=0

        ich bin mir nicht sicher aber ich glaube dort sind alle Aufgaben aus dem PDF erledigt(und aus neuen PDFs die noch dazu kommen)
        apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

        Kommentar


        • #5
          Hallo BlackScorp. Danke für deine links. Habe ich mal schnell überflogen. Werde es mir bei Gelegenheit mal in Ruhe anschauen. Ja die Tutoren haben, glaube ich nicht wirklich Ahnung von dem was Sie da machen. Und das fällt mir auf, obwohl ich ein absoluter Anfänger bin.....jedenfalls habe ich mir was VallyH geschrieben hat schonmal angesehen und fühle mich sehr ähnlich...hänge schon nen schlappen Monat an den Aufgaben. Und wenn man glaubt man hat etwas geschafft, kommt vom Tutor ABER! Jedenfalls danke ich dir und hoffe deine links bringen mich ein Stück weiter.

          Kommentar


          • #6
            Hey hausl. Auch dir schönen Dank für deine Anmerkung. Nur wie BlackScorp schon sagte muss ich mich leider an diese blöden Hefte der Fernschule halten. Deshalb habe ich auch nocheinmal alle Fragen aufgeschieben, da wir uns genau danach richten sollen und müssen! Habe schon mit ein Paar Leidensgenossen diesbezüglich gesprochen und alle sagten mir wenn man sich nicht genau an die Aufgabenstellung hält gibts Punktabzüge! Wie würdest d es denn machen, wenn es unsauber/falsch ist?

            Kommentar


            • #7
              PHP-Code:
               public function anmelden($name$password)  
                {  
                  if(
              $name == "Admin" && $password == "Hallo")  
                  {  
                    
              $this->KndNr 1;  
                  }  
                  else  
                  {  
                    
              $this->KndNr time();  
                  }  
                } 
              Der Aufruf im Script wäre dann:
              PHP-Code:
              $objekt->anmelden($_POST['name'],$_POST['password']); 

              Kommentar


              • #8
                [OffTopic]Sorry, aber Hochschulen sind doch an Rahmenlehrpläne und weitere Bedingungen gebunden. Wenn sowas allgemein bekannt ist, sollte man sich mal bei der zuständigen Einrichtung beschweren. Seinerzeit haben wir das in Bezug auf andere Dinge auch gemacht und Erfolg gehabt ( zust. Einrichtung bei uns: IHK ).[/OffTopic]

                @TessaKavanagh: Bleibt unsauber, da die Werte aus $_POST nicht gefiltert werden.
                Competence-Center -> Enjoy the Informatrix
                PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                Kommentar


                • #9
                  So gesehen ist das ganze Script für die Katz. Die Prüfung würdest du aber in der Methode abhandeln, die scheint aber kein Gegenstand der Aufgabenstellung zu sein. Ich wollte nur verdeutlichen das es keinen Sinn macht $Name und $Password zu übergeben wenn man dann $_POST['name'] und $_POST['password'] abfragt.

                  Kommentar


                  • #10
                    Alle POST-Variablen zu prüfen kann ein Grundsatz sein. Nur im konkreten Fall, wo dies nur für ein Stringvergleich genutzt wird, verstehe ich grad nicht wo dies zu Problemen führen sollte.

                    Edit: Mal davon abgesehen, das ich an solchen Stellen immer mit typesicheren Vergleichen arbeiten würde:
                    PHP-Code:
                    if($name === "Admin" && $password === "Hallo"
                    PHP-Klassen auf github

                    Kommentar


                    • #11
                      Zitat von jspit Beitrag anzeigen
                      Alle POST-Variablen zu prüfen kann ein Grundsatz sein. Nur im konkreten Fall, wo dies nur für ein Stringvergleich genutzt wird, verstehe ich grad nicht wo dies zu Problemen führen sollte.
                      kein Problem direkt, die Aufgabe lautet, $_POST variablen an die anmelden funktion zu übergeben, wenn username admin ist und password hallo ist, dann setze die userId auf 1, ansonsten ist userid der aktuelle timestamp

                      PHP-Code:
                        public function anmelden($name$password
                        { 
                          if(
                      $_POST['benutzer'] == "Admin" && $_POST['password'] == "Hallo"
                          { 
                            
                      $this->KndNr 1
                          } 
                          else 
                          { 
                            
                      $this->KndNr time(); 
                          } 
                        } 
                      siehst du nun das Problem?
                      apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                      Kommentar


                      • #12
                        Nö, immer noch nicht. Genau das macht doch der Code von TessaKavanagh. Was ist daran "unsauber" ?
                        PHP-Klassen auf github

                        Kommentar


                        • #13
                          PHP-Code:
                            public function anmelden($name$password
                            { 
                              if(
                          $_POST['benutzer'] == "Admin" && $_POST['password'] == "Hallo"
                              { 
                                
                          $this->KndNr 1
                              } 
                          phpstorm wuerde sagen, unused $name,$password , da muesste $name == 'Admin' stehen
                          apt-get install npm -> npm install -g bower -> bower install <package> YOLO https://www.paypal.me/BlackScorp | Mein Youtube PHP Kanal: https://www.youtube.com/c/VitalijMik

                          Kommentar


                          • #14
                            Jo, das hat TessaKavanagh allerdings breits so gemacht...
                            Competence-Center -> Enjoy the Informatrix
                            PHProcks!Einsteiger freundliche TutorialsPreComposed Packages

                            Kommentar


                            • #15
                              Zitat von TessaKavanagh Beitrag anzeigen
                              PHP-Code:
                               public function anmelden($name$password)  
                                {  
                                  if(
                              $name == "Admin" && $password == "Hallo")  
                                  {  
                                    
                              $this->KndNr 1;  
                                  }  
                                  else  
                                  {  
                                    
                              $this->KndNr time();  
                                  }  
                                } 
                              Der Aufruf im Script wäre dann:
                              PHP-Code:
                              $objekt->anmelden($_POST['name'],$_POST['password']); 
                              Hallo TessaKavanagh. An welcher Stelle würde denn der Aufruf im Skript erfolgen?
                              PHP-Code:
                              $objekt->anmelden($_POST['name'],$_POST['password']); 

                              Kommentar

                              Lädt...
                              X