Beiträge von JR Cologne

    Du musst halt versuchen, die Keys zu erhalten und darfst kein Eintrag löschen, wenn der Fehler nicht vorhanden ist, sondern einfach nur gleich einem leeren String oder null setzen.

    Im Idealfall baust du dir natürlich sowas in die Richtung auf: https://github.com/alexgarrett/violin

    Alternativ würde ich einfach mit einem assoziativen Array arbeiten.

    Um was genau geht es denn? Dann kann man da vielleicht spezifischer drauf eingehen.

    Jep, habe ich ja auch schon drauf hingewiesen.

    Habe mich nur dummerweise von abbringen lassen, da Stef ja schrieb, dass die Werte bis zur Subtraktion vorhanden sind. Damit meinte er allerdings die Eigenschaften der Klasse und nicht die lokalen Variablen $ankunftstag bzw. $abfahrtstag. Mein Fehler, nicht gut genug aufgepasst.

    Wobei es mich wundert, dass PHP da kein Fehler schmeißt... Sollte doch eigentlich etwas in die Richtung Class not found produzieren.

    Das ist schön und gut, nur leider kann ich damit wenig anfangen, wenn ich nicht genügend Infos habe bzw. dies nicht mit eigenen Augen sehen kann.

    Was meinst du genau mit "ohne function und Eigenschaft weiterverarbeiten"?

    Wie interagierst du mit der Klasse?

    Ich habe dir mal ein paar Kommentare im Code hinterlassen...

    Hast du schon die unterschiedlichen Werte der verschiedenen Variablen mittels var_dump() überprüft?

    Damit hast du Recht. Und selbst 1200px ist für den Text schon zu breit. Wenn du möchtest, das viele Besucher gerne deine Artikel lesen solltest du das gesamte Layout vielleicht noch einmal überdenken. Die meisten Inhaltsorientierten Blogs nutzen einen von 600 bis 850px breiten Textcontainer. Das wäre also 1200px breite abzüglich 1/3 Sidebar. Oder halt generell etwas schmaler.

    Außerdem sehe ich keine Suchfunktion. Das solltes du noch mit einbinden.

    Du hast zwar recht, aber mein Fokus liegt nicht unbedingt auf dem Blog.

    Ich werde ohnehin nur ca. alle 2 Wochen einen Artikel veröffentlichen. Soll mehr meine Portfolio-Website ergänzen und steht damit nicht im Mittelpunkt.

    Außerdem bin ich kein Freund von großen Sidebars und Co, da damit der Content ein wenig seine zentrale Rolle verliert. So liegt der Fokus zu 100 Prozent auf dem Text sowie den Bildern.

    Die Suchfunktion gibt es u.a. aus technischen Gründen nicht. Ich nutze für die Website kein CMS wie WordPress, sondern Jekyll. Eigentlich ist meine Website also statisch.

    Werde erstmal die nächsten Monate ausprobieren, ob ein richtiger Blog überhaupt was für mich ist und dann steige ich wahrscheinlich auf WordPress um. Wenn ich soweit bin, werde ich deine Tipps also gerne berücksichtigen. Aktuell passt das aber noch nicht so wirklich.

    hmm, das einzige wo ich sagen würde, ist auf der Startseite -> Über mich ist enorm viel Text?

    Ansonste wirkt alles so riesig wenn du verstehst was ich meine.

    Aber ist natürlich Ansichtssache :)

    Das stimmt. Der Text ist tatsächlich ein wenig lang. Werde den noch mal überarbeiten.

    Dass alles so riesig ist, ist bewusst so.

    Bin kein großer Fan von geringen Schriftarten und Co, besonders weil es dann später auf dem Handy zu klein wird und der Lesbarkeit schadet das ja auch nicht, oder?

    Größere Auflösungen habe ich mir noch gar nicht so wirklich angeschaut, da mein Monitor nur eine Full-HD-Auflösung hat.

    Hast du für den speziellen Fall einen Vorschlag? Der Grund für die Begrenzung auf 1200px ist hauptsächlich, dass der Text sonst sehr lang wird und dann schwer zu lesen wird.

    Wegen der Rechtschreib- und Grammatikfehler werde ich die Texte noch mal durchschauen. Danke für den Hinweis.

    Bzgl. Schreibstil: Wo ist der deiner Meinung nach besonders unpassend oder im negativen Sinne ausgeprägt?

    Habe halt stellenweise durchaus auch bewusst ein wenig unprofessionell geschrieben, um die Texte nicht so langweilig klingen zu lassen.

    Die Artikel, die jetzt in Zukunft im Blog erscheinen werden, haben dann einen professionelleren Stil. Zumindest werde ich das versuchen. :D

    Edit: Du hattest deine Beispiele ja aus dem Text der Webdesign JR Übungsprojekt Ressource. Ich habe den Text mal ordentlich mithilfe dieses Tools überarbeitet sowie die Fehler korrigiert. Würdest du sagen, es ist jetzt besser? Bin mir nicht sicher, inwiefern das Tool was taugt. :D

    Auch den Text auf der Startseite habe ich ein wenig gekürzt, wobei es sein kann, dass ich mich da auch nochmal intensiver dran setze.

    Schönen guten Abend,

    ich habe in den letzten Monaten an meiner eigenen Website gearbeitet und am Dienstag war sie dann soweit, in die große weite Welt freigelassen zu werden: https://jr-cologne.de/

    Der wesentliche Zweck der Website ist eine Art zentrale Anlaufstelle für meine Online-Aktivitäten im Bereich Webentwicklung und Co zu sein.

    Dementsprechend setzt sich meine Website aus einem Portfolio, einer Ressourcen-Sammlung sowie einem Blog zusammen.

    Wer interessiert ist, kann einfach mal vorbeischauen. Des Weiteren könnt ihr hier gerne auch ein wenig Feedback dazu hinterlassen. [Blockierte Grafik: http://www.coding-board.de/styles/default/xenforo/clear.png]

    Gruß
    JR Cologne

    Ok, ich gehe das mal nach und nach durch und bin dabei jetzt auch mal etwas pingeliger:


    1. Die if-Bedingung sowie die letzte Fehlerausgabe

    PHP
    if ($_POST['von'] !="" and $_POST['mail'] != "" and $_POST['nachricht'] !="") {
        //
    } else {
        echo "Bitte füllen Sie alle Felder aus!";
    }   

    Das "Hauptproblem" ist hierbei deine Abfrage, ob die Felder leer sind. Das funktioniert zwar, kann man aber schöner mit der Funktion empty() lösen. Auch würde ich den Und-Operator "&&" statt "and" benutzen.

    Des Weiteren solltest du nicht einfach nur Text ausgeben, sondern diesen auch in HTML-Tags packen. Ein einfaches <p> oder <p><strong> reicht da völlig aus.

    Genauso ist es in dem Fall überflüssig, die doppelten Anführungszeichen zu nutzen, da sich innerhalb des Strings z.B. keine Variable befindet, die PHP interpretieren muss.

    Grobe Faustregel für Anführungszeichen bei Strings:

    Einfacher Text mit HTML -> einfache Anführungszeichen ('), da der String dann nicht interpretiert wird, was unnötige Arbeit wäre.

    Text, HTML und Co mit eingebetteter Variable -> doppelte Anführungszeichen ("), weil eine Variable interpretiert werden muss, damit sie nicht einfach als Text ausgegeben wird, sondern der Inhalt aus der Variable in den String eingebaut wird.

    Mein Code-Vorschlag:

    PHP
    if ( !empty($_POST['von']) && !empty($_POST['mail']) && !empty($_POST['nachricht']) ) {
        //
    } else {
        echo '<p>Bitte füllen Sie alle Felder aus!</p>';
    }

    2. Das Setzen der ganzen Variablen / Vorbereitung für den Mail-Versand

    Bei den hardgecodeten Variablen musst du schon mal nichts ändern, außer wieder die Geschichte mit den Anführungszeichen.

    Gut, beim Betreff könnte man noch für den Fall, dass du irgendwann mal Umlaute oder spezielle Sonderzeichen oder so in deinem Betreff hast, etwas einfügen, was dann für eine richtige Darstellung sorgt. Das sähe dann so aus: $betreff = '=?UTF-8?B?' . base64_encode($betreff) . '?=';

    Was bei dir auf jeden Fall noch geändert müsste, sind dann die Header bzw. in deinem Fall hast du nur From eingebaut.

    Ich würde dir in jedem Fall zu folgenden Headern raten:

    PHP
    $headers = implode("\r\n", [
        'MIME-Version: 1.0',
        'Content-type: text/plain; charset=utf-8',
        "From: {$from}",
        "Reply-To: {$from}",
        "Subject: {$betreff}",
        'X-Mailer: PHP/' . phpversion()
    ]);

    Das Ganze nutzt ein Array, das dann durch die Funktion implode() in einen String umgewandelt wird.

    Besonders wichtig ist zuvor aber noch, dass du die E-Mail überprüfst, und das Escapen der Formular-Daten darfst du nicht vergessen.

    Ich nutze dafür z.B. Folgendes:

    PHP
    htmlspecialchars(stripslashes(trim($value)));

    Die Kombi aus den drei Funktionen sorgt dafür, dass unnötige Leerzeichen und Maskierungszeichen entfernt und Sonderzeichen in HTML-Codes umgewandelt werden, um XSS-Attacken zu verhindern.

    Zur E-Mail-Überprüfung kannst du folgende Funktion nutzen:

    PHP
    filter_var($email, FILTER_VALIDATE_EMAIL);

    Gut, da das vermutlich viel war, habe ich mal Kommentare im Code hinterlassen.

    Mein Code-Vorschlag:

    3. Die E-Mail versenden sowie finale Ausgabe

    PHP
    mail($empf, $betreff, $text, $from);
    echo "Vielen Dank für Ihre Anfrage";

    Hier gibt es lediglich zu kritisieren, dass du, wenn das Versenden schief geht, keine Fehlermeldung ausgibst.

    Code-Vorschlag:

    PHP
    if (mail($empf, $betreff, $text, $from)) {
        echo '<p>Vielen Dank für Ihre Anfrage</p>';
    } else {
        echo '<p>Beim Versand der E-Mail ist ein Fehler aufgetreten!</p>';
    }


    So, und jetzt alles zusammen:

    So, ich hoffe, ich habe nichts vergessen, keine Fehler eingebaut und dich jetzt nicht komplett überfordert.

    Es gibt zwar immer noch Möglichkeiten, den Code zu verbessern, aber so hast du schon mal eine ganz gute Basis.

    JR Cologne was bedeutet Backend-Validierung ?

    Stef wie gesagt ich kenne mich nicht aus, was bestehen denn für Risikos

    Das wusste ich nicht.

    Backend-Validierung bedeutet, dass die Anfrage des Users auf dem Server per PHP überprüft wird.

    Bei einem Kontaktformular wäre das Wichtigste eine Prüfung der E-Mail sowie das Escapen der Daten, um Cross-Site-Scripting-Attacken zu verhindern.

    Am besten zeigst du nochmal deinen kompletten Code, dann kann ich den mal auf potenzielle Sicherheitslücken untersuchen.

    Zum Verständnis ist vielleicht das hilfreich: https://www.php-kurs.com/cross-site-scr…unterbinden.htm