FUNKTIONEN anwenden?????!!!!

  • Wer kann mir weiterhelfen: ich muss meine kundenklasse um eine methode erweitern,die ein Name und ein Passwort entgegennimmt aus dem anmeldeformular anmelden.php.
    das formular hab ich, aber bei der auswertung scheitere ich, da bei Benutzer "Admin" und Passwort "Hallo" soll der Wert 2 als Kundennummer in dem Member $KndNr in class_kunde.php gesetzt werden.
    Für andere Benutzer soll der timestamp gesetzt werden. bei erfolgreicher anmeldung, also wenn die Methode getKundennummer() 2 liefert, soll ein formular zur Dateiupload erscheinen.


    anmelden.php:


  • Guten Morgen :)


    1. Satzzeichen sind keine Rudeltiere (Thread-Titel)
    2. Ich komme mit deiner Klasse irgendwie nicht wirklich zu Recht.. was genau soll die mal können? Weil bisher kann sie nicht wirklich viel (Mal davon abgesehen, dass es glaube ist auch nicht besonders Klug ist im Konstruktor etwas zurück zu geben.. )
    3. Allgemein aber für deine Anmelde-Funktion: Schreib Sie neu und mache aus ihr eine Statische Funktion die 2 Parameter ($username, $password) erwartet.
    Es ist nämlich eigentlich nicht so ganz im Sinne der Erfindung gewesen, wenn man in einer Klasse sich dann auf solche Superglobale verlässt. Wir wollen die Klasse später in andere Projekten einsetzten können, ohne das wir an der Klasse selbst ein Zeichen ändern müssen.
    Naja.. In der Funktion überprüfst du dann die Parameter auf ihre Richtigkeit. Bei Erfolg gibst du einen neuen User zurück (return new static();) oder false.


    4. Meinst du mit anwenden wie du deine jetztige Funktion aufrufen solltest? o.O

    PHP
    1. <span class="syntaxdefault">$user </span><span class="syntaxkeyword">= new </span><span class="syntaxdefault">kunde</span><span class="syntaxkeyword">();<br /></span><span class="syntaxdefault">$user</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">anmelden</span><span class="syntaxkeyword">();<br /><br /></span><span class="syntaxcomment">//::> Meine Statische Methode:<br /></span><span class="syntaxdefault">$user </span><span class="syntaxkeyword">= </span><span class="syntaxdefault">kunde</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">anmelden</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"name"</span><span class="syntaxkeyword">], </span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"pass"</span><span class="syntaxkeyword">]);<br />if(</span><span class="syntaxdefault">$user </span><span class="syntaxkeyword">!== </span><span class="syntaxdefault">false</span><span class="syntaxkeyword">){<br /> echo </span><span class="syntaxstring">'Herzlich Willkommen :)'</span><span class="syntaxkeyword">;<br />} </span><span class="syntaxdefault"></span>

    Meine Variante hat übrigens noch den Vorteil, dass nicht jeder sofort ein "Kunde" is, sondern erst wenn er sich richtig eingeloggt hat :D

  • ja das anwenden ist richtig, danke :D
    aber wie würdest du die funktion anmelden erstellen???
    public function anmelden()
    { $username = "Admin";
    $password = "Hallo";
    if ($_POST['benutzer']== $username and $_POST['kennwort']== $password)
    {
    return new static();
    }
    else
    { false;} ungefähr so??????? :D

  • Statische Methoden deklariert man mit "static" in der Funktionsvorschrift:

    PHP
    1. <span class="syntaxdefault">public </span><span class="syntaxkeyword">static function </span><span class="syntaxdefault">anmelden</span><span class="syntaxkeyword">() { ... } </span><span class="syntaxdefault"></span>


    In wie weit hast du dich denn schon mit der Objektorientierten Programmierung auseinandergesetzt?
    Weißt du, wie man Methoden Parameter übergibt?


    Außerdem instantiierst du in einer Methode eine Klasse wie sonst auch, also nicht "new static()" (wie auch immer du darauf kommst) sondern ganz normal mit "new kunde()".


    Benutze für deinen Code, auch wenn es nur wenig ist, bitte so wie vorher den code-Tag.


    PS: Satzzeichen werden auch nicht zu Rudeltieren, wenn man ganz fest daran glaubt :wink:

  • Sören? Hast du dir meinen Post überhaupt mal durchgelesen? .__.
    Ich habe ihm das mit dem static gesagt (So kann man es nämlich auch machen :) ) und ich habe die Rudeltiere schon erwähnt! :D
    Gerade fühle ich mich von dir Ignoriert :(


    seven : Ich habe dir eigentlich schon alles ziemlich genau beschrieben.. :/
    Wie groß ist deinn Wissen überhaupt in PHP? Parameterübergabe ist das einfachste.. :/

  • anmelden.php


    class_kunde.php


    OK soweit klappt alles super :D aber wie kriege ich eine 2 in meine Kundennummer, wenn ich das
    Anmeldeformular in ein Webshop einfüge, soll nach der Bestellung und Registrierung mit Admin und Hallo eine 2 als Kundennummer in dem Member $KndNr gesetzt werden. Für alle anderen Angaben soll
    als Kundennummer der timestamp gesetzt werden :D

  • Natürlich, in deinem Code "klappt alles super" und ich bin mir sicher du hast auch DIE Ahnung, warum du das gerade genau so gemacht hast und vor allem Dingen, was du da gemacht hast :)


    Deswegen hast du auch einfach mal Blindlings das kopiert, was ich dir eben Schemenhaft dargestellt habe :)
    Ich meine.. es macht super viel Sinn, wenn ich ein Objekt erzeuge und es anschließend direkt wieder mit etwas anderem Überschreibe.. (und warum übergibst du den Rückgabewert von isset? O.o)
    Tut mir Leid, aber so wird das 0.


    Aber ich habe heute meine netten 5 Minuten, daher schreibe ich dir sogar mal fix eine Kleinigkeit, aber bitte ließ meine Kommentare im Quelltext durch :(

    PHP
    1. <span class="syntaxdefault"></span><span class="syntaxcomment">/* Unsere Klasse */<br /></span><span class="syntaxdefault">class kunde </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">    <br />    private $kundennummer</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    <br />    public function __construct</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$kndNr</span><span class="syntaxkeyword">)</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">        $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">kundennummer </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> $kndNr</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    <br />    public function getKundennummer</span><span class="syntaxkeyword">(){<br /></span><span class="syntaxdefault">        return $this</span><span class="syntaxkeyword">-></span><span class="syntaxdefault">kundennummer</span><span class="syntaxkeyword">;<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    <br />    <br />    </span><span class="syntaxcomment">//::> Unsere Anmeldefunktion<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// Erwartet 2 Parameter, einmal den Benutezrnamen und einmal das Passwort<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// Wenn wir der Admin sind ist unser Kunden-Objekt mit der Kundennummer 2<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// Andernfalls mit dem Zeitstempel<br /></span><span class="syntaxdefault">    public static function anmelden</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$username</span><span class="syntaxkeyword">,</span><span class="syntaxdefault"> $password</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">        if</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$username </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"admin"</span><span class="syntaxdefault"> </span><span class="syntaxkeyword">&&</span><span class="syntaxdefault"> $password </span><span class="syntaxkeyword">==</span><span class="syntaxdefault"> </span><span class="syntaxstring">"Hallo"</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">            return new static</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">2</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">            return new static</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">time</span><span class="syntaxkeyword">());<br /></span><span class="syntaxdefault">        </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    </span><span class="syntaxkeyword">}<br /></span><span class="syntaxdefault">    <br /></span><span class="syntaxkeyword">}<br /><br /><br /><br /></span><span class="syntaxcomment">/* Unsere andere Datei */<br />//::>  Verwende require anstelle von requiere_once, da es schneller geht.<br /></span><span class="syntaxdefault">require </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"class_seite.php"</span><span class="syntaxkeyword">);<br /></span><span class="syntaxdefault">require </span><span class="syntaxkeyword">(</span><span class="syntaxstring">"class_kunde.php"</span><span class="syntaxkeyword">);<br /><br /></span><span class="syntaxcomment">//:: Wurde unser Formular abgesendet?<br /></span><span class="syntaxkeyword">if(isset(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"action"</span><span class="syntaxkeyword">])){<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">//::> Dann versuchen wir uns einzuloggen<br /></span><span class="syntaxdefault">    </span><span class="syntaxcomment">// Und brauchen natürlich nur die Benutzereingaben zu übergeben<br /></span><span class="syntaxdefault">    $user </span><span class="syntaxkeyword">=</span><span class="syntaxdefault"> kunde</span><span class="syntaxkeyword">::</span><span class="syntaxdefault">anmelden</span><span class="syntaxkeyword">(</span><span class="syntaxdefault">$_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"benutzer"</span><span class="syntaxkeyword">],</span><span class="syntaxdefault"> $_POST</span><span class="syntaxkeyword">[</span><span class="syntaxstring">"kennwort"</span><span class="syntaxkeyword">]);<br />}<br /><br /></span><span class="syntaxcomment">//::> Wenn unsere kunde::anmelden-Funktion etwas anderes als false zurück gegeben hat (also Erfolgreich war)<br /></span><span class="syntaxkeyword">if(</span><span class="syntaxdefault">$user </span><span class="syntaxkeyword">!==</span><span class="syntaxdefault"> false</span><span class="syntaxkeyword">){<br /></span><span class="syntaxdefault">    echo </span><span class="syntaxstring">'<h3> Anmeldung war erfolgreich. </h3><br />        <br />        <form enctype="multipart/form-data" action="auswertung.php" method="POST"><br />            Datei aussuchen: <input name="userfile" type="file"  /><br />            <input type="submit" name="action" value="Senden"/><br />        </form>'</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> else </span><span class="syntaxkeyword">{<br /></span><span class="syntaxdefault">       echo </span><span class="syntaxstring">'<br />        <h1>Bitte Anmelden</h1><br />        <form method="post" action="'</span><span class="syntaxkeyword">.</span><span class="syntaxdefault">$_SERVER</span><span class="syntaxkeyword">[</span><span class="syntaxstring">'PHP_SELF'</span><span class="syntaxkeyword">].</span><span class="syntaxstring">'"><br />            <p>Benutzername: <br/><br />                <input type="text" name="benutzer" size="20"  /><br />            </p><br />            <p>Kennwort: <br/><br />                <input type="password" name="kennwort" size="20" /><br />            </p><br />            <input type="submit" value="Anmelden" /><br />        </form>'</span><span class="syntaxkeyword">;<br />}</span><span class="syntaxdefault"> </span>


    Kurz zu Parameter übergabe, wir können Funktionen anweisen Parameter entgegen zu nehmen.
    So können wir z.B. später unsere Anmelde-Funktion auch verwenden wenn wir die Daten sonst wo her nehmen wollen.
    Hierzu müssen wir einfach beim definieren der Funktionen in die Klammern nach dem Funktionsnamen $variabeln eintragen mit denen wir dann in unsere Funktion arbeiten können.

  • Leider hab ich nicht DIE Ahnung :D
    aber wieso verwendest du nicht mehr??? ich muss noch viel lernen.

  • Sarkkan
    Doch, ich habe deinen Thread gelesen. :)


    Ich dachte, die Methode in seinem Code danach sollte static sein, er wisse aber nicht wie und das mit dem new static() bei dir habe ich wohl überlesen, wusste nicht, das es so auch geht. (Hab in PHP noch nichts mit Singletons gemacht)


    Das mit den Satzzeichen war als Wiederholung von deinem gedacht, sie werden auch nicht zu Rudeltieren, wenn man sie weiterhin als solche verwendet.


    Sollte nicht so rüberkommen, dass ich deins nicht gelesen habe.