Beiträge von Andrew Applephobie

    Vergiss dass es den Stern hinter "SELECT" gibt, gib *immer* die Spalten an die du brauchst.

    alles klar!

    Ich würde es weniger als "gute Idee" ansehen sondern eher als Pflicht …

    ich habe nur kurz nachgelesen, aber scheint sogar rechtlich notwendig zu sein. Danke für den Tipp!

    Wie schon in #16 geschrieben: entweder dem form-Element die Attribute action="#newsletter" und id="newsletter" (statt »newsletter« kann da natürlich auch was anderes stehen) verpassen oder eigene Seite für die Newsletteranmeldung machen.

    Funktioniert super!! :-D


    Vielen vielen Dank für die großartige Hilfe ->Toller Typ, tolles Forum :-)

    Vor dem Speichern abfragen ob es Datensätze es mit der Adresse gibt, wenn ja -> Fehlermeldung. Alternativ kannst du auch prüfen ob das execute fehlschlägt oder nicht (mit deinem Unique-Index wird jeder weitere Eintrag eine Adresse einzutragen ja fehlschlagen, das lässt sich abfangen).


    Übrigens: du denkst an sowas wie Double-Opt-in damit nicht jeder beliebige Adresse da eintragen kann die vielleicht gar keinen Newsletter haben wollen?

    Danke die Abfrage hat mit einem SELECT * FROM Statement super funktioniert. Der Newsletter macht bereits das was ich mir vorgestellt habe!

    Die Double-Opt-in Funktion ist eine gute Idee und schaue ich mir die kommenden Tage an..


    Eine Frage habe ich noch..

    Der Newsletter ist in der Fußzeile integriert. Wird eine E-Mail Adresse eingegeben, läd die Seite neu - Dadurch wird der User wieder hoch zum Start geleitet.

    Was muss ich tun damit zB. bei einer falschen Eingabe der User unten beim Newsletter bleibt?

    Wie m.scatello schon schrieb: du hast das mit dem Affenformular noch nicht begriffen. Außerdem hast du schon wieder Code kopiert ohne ihn zu lesen/zu verstehen - sonst hättest du nämlich den Kommentar "Registrierung ausführen..." gesehen: der muss natürlich durch den Code für die Speicherung der Daten ersetzt werden. Auch die Zeile »$statement->execute(array($mail));« in der newsletter.php zeigt dass du es noch nicht wirklich verstanden hast: ich habe bereits mehrfach geschrieben, dass ein umkopieren von $_POST['mail'] nicht nötig ist, du verwendest aber trotzdem immer noch $mail statt $_POST['mail'].

    Ich bin dann erstmal raus hier, eine Antwort gibt es erst wieder wenn deutlich wird, dass das Verständnis da ist.

    Hallo :-) Das Prinzip von einem Affenformular ist jetzt klar -> wiederhole den Vorgang so lange bis die Eingabe korrekt ist.

    Auch die Themen "Registrierung ausführen" und "$_Post" konnte ich Lösen und das Newsletter-Formular funktioniert wie es soll.


    Falls ihr es mir erlaubt, hätte ich noch eine Frage:

    • Gibt es eine Möglichkeit, zu überprüfen ob in der DB eine E-Mail Adresse bereits vorhanden ist, um doppelte Einträge zu verhindern?
      # Der User soll eine Fehlermeldung bekomme
      # Als Teillösung habe ich in phpmyadmin die Spalte 'mail' auf Index: Unique gestellt, um dort den Doppeleintrag zu verhindern


    Wie m.scatello schon schrieb: du hast das mit dem Affenformular noch nicht begriffen. Außerdem hast du schon wieder Code kopiert ohne ihn zu lesen/zu verstehen - sonst hättest du nämlich den Kommentar "Registrierung ausführen..." gesehen: der muss natürlich durch den Code für die Speicherung der Daten ersetzt werden. Auch die Zeile »$statement->execute(array($mail));« in der newsletter.php zeigt dass du es noch nicht wirklich verstanden hast: ich habe bereits mehrfach geschrieben, dass ein umkopieren von $_POST['mail'] nicht nötig ist, du verwendest aber trotzdem immer noch $mail statt $_POST['mail'].

    Ich bin dann erstmal raus hier, eine Antwort gibt es erst wieder wenn deutlich wird, dass das Verständnis da ist.

    "Registrierung ausführen..." habe ich gesehen, nur noch keine Übergabe an die db zusammenbekommen.

    Und ja, warum ich die Zeile in der Newsletter ändern soll habe ich nicht verstanden - wird vermutlich auch noch dauern bis ich den Code 100% lesen und verstehen kann und werde. Ich habe eh erwähnt dass ich mir php noch gar nicht angeschaut habe um gleich alles zu verstehen.


    Danke trotzdem für Deine Geduld und Hilfestellung.

    Du hast mir sehr viel weitergeholfen :-) LG

    hm.. jetzt ist action=".php" aber wirklich weg.

    Ich würde lügen wenn ich das Gegenteil behaupten würde. Das habe ich schon vorher erwähnt gehabt.


    ... ich auch :-P

    Ich würde davon abraten: die Seite beachtet das EVA-Prinzip nicht. Schau dir mal das Beispiel bei SELFHTML an, ganz optimal ist das (wegen dem die()) auch nicht aber definitiv besser als das bei php-kurs.

    Ok, gesagt getan und das Script übergibt zumindest die Daten weiter an die Datenbank. Aber..


    - Nach der Registrierung werde ich wieder auf eine weiße Seite mit der Fehlermeldungen bzw. Erfolgsmeldung weitergeleitet die eigentlich aus der newsletter.php stammt.

    - Sollte bei einem Fehler, die Fehlermeldung nicht direkt beim Formular angezeigt werden?

    - Oder nach einem erfolgreichen registrieren eine Weiterleitung auf die Startseite geschähen?

    - Sonderzeichen wie ', oder < und > im Eintrag werden immer noch an die db übertragen, ist das normal?

    Bildschirmfoto 2021-01-04 um 03.42.12.png


    Bildschirmfoto 2021-01-04 um 03.55.50.png


    Ich kenne deine aktuellen Dateien nicht, irgendwas "verknüpfen" musst du aber nicht: es gibt halt eine Datei in der die komplette Verarbeitung der Daten sowie das Formular steht. Vielleicht hilft die entsprechende Seite im Wiki von SELFHTML bzw. die dort verlinkte Seite bei php.de beim Verständnis.

    Es gibt auf dem Server nur 2 Dateien und einen Ordner für Bilder und css.

    Das Affenformular und die Verarbeitung der Daten sind in der index.php.

    In der newsletter.php befindet sich das prepared statement.


    Also vorweg Danke für Deine Geduld und Hilfestellung. Ich habe schon ein schlechtes Gewissen vor lauter Fragen :-D

    Die Seite welche ich baue ist mein erstes Projekt (bereits fertig) und mehr oder weniger als eine 1-Seite Landingpage für Events gedacht bis ich dann fitter im programmieren bin - bis jetzt programmiert in HTML & CSS. Das einzige was zum klicken gedacht war, ist der Ticket-Kauf Button und selbst der leitet dann auf eine externe Seite unseres Ticket Partner weiter. Deswegen bitte um Nachsicht wenn ich mich bei PHP und SQL etwas unwissend anstelle. Deine Infos sauge ich jedenfalls auf, suche im Netz nach Informationen und speichere mir auch jeden einzelnen Link ab. Die Materie ist interessant und ich bin Wissbegierig! :-)

    Um das zu testen brauchst du ein input mit type=text (oder ohne type-Attribut) - bei type=email sorgt der Browser schon dafür dass da eine E-Mail-Adresse drin steht, allerdings kannst du dich nicht darauf verlassen das der Browser die Prüfung übernimmt: Formulare lassen sich manipulieren bzw. nachbauen, die Daten können also auch von wo anders her kommen.

    stelle ich type=text (oder ohne) ein, dann bekomme ich eine weiße Seite nach der ' Eingabe. Aber gut, zumindest weiß ich jetzt auf was ich achten muss und kann selbst noch ein wenig herum probieren.

    So wie ich es in der Code-Zeile geschrieben habe: htmlspezialchars() wird nur auf die Variable mit den Daten angewandt.

    Hopsa, das habe ich übersehen.

    Zur Verständnis: Mein Code hat mit htmlspezialchars() den kompletten echo String eingebunden.

    Du hingegen nimmst nur die Variable - so würde ich es mir erklären - weil diese an die DB weitergeleitet wird und durch htmlspezialchars() nicht manipuliert werden kann!?

    Falscher Ansatz. Vergiss die Weiterleiterei. Das ist ja gerade der Vorteil bei Affenformularen: die Fehlerbehandlung findet in einem Script statt, irgendwelche Weiterleitungen sind nicht nötig. Wenn das Script nach dem Abschicken des Formulars wieder aufgerufen wird, wird geprüft ob die Daten ok sind. Wenn ja werden sie gespeichert, wenn nein, wird eine Fehlermeldung ausgegeben und anschließend wieder das Formular (einschließlich bereits eingegebener Daten). Beschäftige dich mit dem Thema EVA-Prinzip.

    Ich habe hier ein Affenformular gefunden.

    Kann ich es verwenden wenn ich es auf mein Formular anpasse?

    Ich brauche kann für die Überprüfung die Punkte für den Nachname durch Mail ersetzen und die Punkte für "Anzahl" weglassen.

    Aber Frage, wie verknüpfe ich dann das Affenformular mit der newsletter.php? Oder reicht es wenn am Server eine affenformular.php -Datei liegt?

    Was noch dazukommen wird ist eine DSGVO-Zustimmung...

    Die beiden Zeilen mit prepare und execute sind völlig ok und können so bleiben (laut #13 funktioniert das Speichern ja auch). Das "Problem" ist der while-Block danach: da versuchst du mit fetch() irgendwelche Daten zu holen ohne vorher mit SELECT welche abgefragt zu haben. Was an der Stelle richtig ist weiß ich nicht: du hast noch nicht verraten was nach dem Speichern überhaupt passieren soll. Und wenn du irgendwo Code kopierst: du musst den dann schon auch verstehen, sonst kommst du nie auf einen grünen Zweig, immer nur irgendwo Fetzen zusammen zu kopieren funktioniert nicht.

    Ich habe meine Quelle oben editiert.

    Abfragen will ich gar nichts. Es soll nur ein Eintrag in die DB gemacht werden, deswegen habe ich die Select * From Abfrage durch ein INSERT INTO ersetzt.

    Mir ist nicht ganz klar wie du die "auffinden" willst. Um zu sehen ob ein Code für SQL-Injection anfällig ist, reicht es idR wenn man mal ein ' in das entsprechende Eingabefeld eingibt und sich dann den daraus entstehenden Query anschaut - aber mit prepared Statements bist du da auf der sichern Seite.

    so, jetzt habe ich das Formular mit dem anfälligen script als eigene homepage am lokalen Server angelegt. Die Eingabe kommt auch in der db an, aber sobald ich ein ' oder es zB. mit order+by versuche kommt folgendes....

    Bildschirmfoto 2021-01-03 um 17.30.36.png

    Als Tipp am Rande: um auf alte Versionsstände zurückgreifen zu können ist eine Versionsverwaltung wie git ganz hilfreich - nur als Hinweis für die Zukunft.

    Super und danke für den Tipp. Bis jetzt mache ich meine Backups täglich selber und lege unbrauchbare Scripte in einen Ordner ab :-D

    Jein. Klar kannst du den kompletten String durch htmlspecialchars() jagen - bei den festen Texten ist es aber unnötig. Ich weiß nicht was du mit "$text Variable" meinst, aber wie schon gesagt, das Umkopieren von Werten aus $_POST (bzw. auch $_GET) ist und war schon immer völlig überflüssig:

    Code
    1. echo 'E-Mail: ' . htmlspecialchars($_POST['mail']) . ' erfolgreich registriert!';

    Ok, dann weiß ich leider nicht wieder der Code korrekt aussehen soll

    Der jetzige Text ist noch schlechter, in der Ausgabe die beim Browser landet steht kein Link.

    Und wenn die Fehlermeldungen am Ende der Seite stehen, kannst du als Ziel des Formulars auch eine ID als Ziel angeben (action="newsletter" und id="newsletter" für das Formular) - ich würde vom Formular im Footer aber eher auf eine extra Seite verweisen welche Fehlermeldungen bzw. Erfolgsmeldung ausgibt (das Formular im Footer verweist also auf die extra Seite, das (bei Fehlern nochmal ausgegebene) Formular auf der Extraseite verweist auf sich selbst.

    Die Idee mit der Ziel Weiterleitung habe ich schon begonnen. Aktuell ist es auch so, dass ab dem Absenden des Formulars eine weiße Seite (so wie Du sagst) mit der Fehlermeldungen bzw. Erfolgsmeldung ausgegeben wird. Da eine Extraseite erstellt und auf die dann umgeleitet, damit es dann für den Benutzer freundlicher aussieht

    Das kommt darauf an was du nach dem INSERT überhaupt vorhast. Der while-Block sieht mir auch eher danach aus als wäre er blind irgendwo zusammenkopiert - eine while-Schleife ist nämlich völlig überflüssig wenn es nur einen anzuzeigenden Datensatz gibt … Vielleicht lernst du erstmal weiter Grundlagen …

    Ich verstehe Deine Frage nicht, das INSERT soll den Eintrag in die Datenbank übernehmen!?
    Der Code ist tatsächlich kopiert und angepasst. Kannst Du mir bitte Zeigen wie das Script sauber aussehen soll?

    Ich verstehe dein Verständnisproblem nicht.

    Verzeihe mir meine Fragen, aber es wäre ein Wunder nach 2 Tagen php/sql herum probieren schon alles zu verstehen.

    mein Verständnisproblem bezieht sich auf die injection welche ich nicht auffinden konnte. Da ich das alte Script abgespeichert habe, werde ich zu einem späteren Zeitpunkt nochmal darauf zurückkommen und mich versuchen

    Jein. Das Speichern der Daten bzw. die Übergabe der Daten an die Datenbank ist richtig (mit benannten Parametern (deswegen hatte ich PDO empfohlen) in den prepared Statements wäre der Code noch besser lesbar aber so ist es auch ok) - du hast aber den Kontextwechsel nach HTML nicht beachtet: die beiden echo-Zeilen geben Daten in den HTML-Code aus, Ausgaben müssen hier deswegen mit htmlspecialchars() behandelt werden.

    Funktioniert das so wie ich es beim zweiten echo versucht habe?
    Oder müsste ich den Text in eine $text Variable umwandeln und erst dann mit htmlspecialchars($text) behandeln?

    Außerdem:

    - warum verwendest du auf einmal $_GET? bleib (in diesem Fall) bei $_POST

    - das Umkopieren von Daten aus $_GET/$_POST war schon immer überflüssig - du kannst auch direkt Daten aus $_POST an execute übergeben

    - das "die" ist keine benutzerfreundlichen Fehlerbehandlung

    - das fetch() wird wohl so nicht funktionieren (hab es jetzt nicht ausprobiert) da du vorher keine Daten abgefragt hast

    - das war nur zum ausprobieren für die Injection, was aber eh nichts gebracht hat.

    - Der Text in "die" war nur ein 0815-placeholder damit etwas da steht.

    Ich versuche noch eine Weiterleitung zum footer, wo sich das Newsletter-Formular befindet wird zu bauen.

    - Danke, für die Info. Ich wüsste jetzt nur nicht was ich damit machen soll

    Ja, das was in $mail steht muss entschärft werden.

    Auch wenn ich (vermutlich) dieses Problem unten mit meiner zweiten Antwort beseitigt haben, möchte ich Dich trotzdem bitte fragen wie ich diese Lücke überhaupt auffinde. Ok SQL-Injection aber wie?? Führe ich die Injektion schon im Eingabefeld, oder erst nach Absenden des Formulars durch? Wie komme ich zu einer Fehlerausgabe? mit " ' ", oder "order by" komme ich zu keinem Fehler

    Link als Bsp.: http://localhost:8888/send.php…mann%40test.at&btn=Senden


    Schrieb ich doch: richtig wäre die Stelle an der die Adresse als Teil des HTML-Codes ausgegeben wird (was allerdings garnicht passiert), falsch ist in der validate-Funktion (die ohnehin Unsinn ist).

    Ich bin gerade ein wenig happy und das tolle daran ist dass die DB tatsächlich mit Wert $mail befüllt wird.

    Ist der Code jetzt passend und safe?

    Korrekt. Eben, die Datenbank soll mit Mails befüllt werden, nicht mit HTML-Code - und du kannst nicht wissen als was irgendwelche Daten in Zukunft mal ausgegeben werden sollen. (Und ja, mir ist bewusst dass in den meisten Fällen in E-Mail-Adressen keine Zeichen vorkommen werden die von htmlspecialchars() verändert würden, aber das Prinzip der korrekten Behandlung von Kontextwechseln sollte *immer* angewendet werden)

    Verstanden!

    Mach es dir nicht unnötig schwer: verwende genau eine Datei (Stichwort Affenformular von oben) und behandle dort alle Fälle, einschließlich aller zu behandelnden Fehlerfälle - du willst nicht wirklich für jeden Fehlerfall eine eigene Fehlerseite erstellen (die hier auch den Nachteil haben dass bereits eingegebene Daten nicht übernommen werden).

    Ok! Dann werde ich mir Informationen über das Affenformular raussuchen und umsetzen versuchen

    Vielen lieben Dank!

    VS Code zeigt deinen Syntaxfehler (das fehlende Semikolon) bereits an - der Fehler ist in deinem Code in #9 immernoch/wieder drin! Ansonsten habe ich den Server von VS Code noch nicht benutzt, ich verwende immer den lokalen Indianer. Übrigens: in PHP-Dateien die aussschließlich PHP-Code enthalten lässt man das ?> am Ende weg.

    btw: "Standard" schreibt sich schon immer mit "d" am Ende.

    Stimmt, "wieder" ausgebessert.

    Danke, ich werde das ?> in Zukunft weglassen.


    Dann eigne dir erstmal die Grundkenntnisse an - dazu die zu vermitteln ist das Forum nicht da.

    Das möchte und werde ich ich bestimmt noch machen!


    An der Stelle an der ein Wert in einen SQL-Query eingebaut wird und um Zeichen zu "entschärfen" die in SQL eine spezielle Bedeutung haben.

    Ok, hier kann ich momentan nur Raten, aber ich denke der eingebaute Wert in der Tabelle Newsletter wäre VALUES ('$mail').

    Deswegen wäre hier eine Entschärfung nötig, richtig?

    Code
    1. $sql = "INSERT INTO newsletter(mail) VALUES('$mail')";


    Das einfachste wäre übrigens prepared Statements zu verwenden, das macht die Behandlung des Kontextwechsels einfacher/lesbarer - da würde ich aber PDO statt mysqli für den Datenbankzugriff empfehlen.

    ... Danke ich werde mich durchgooglen!


    Der Satz ist etwas durcheinander geraten. Aber der Autor des Videos verwendet zwar die richtige Funktion (htmlspecialchars()) für den Kontextwechsel nach HTML aber leider an der völlig falschen Stelle (in der validate-Funktion). So wird Inhalt der für die Ausgabe in HTML aufbereitet wurde so in der Datenbank gespeichert - aber was ist wenn der Inhalt mal als Text (z.B. in einer Mail) ausgegeben werden soll? Dann hast du da die HTML-Zeichen drin und die Mail wird u.U. etwas seltsam aussehen …

    Was ist die falsche Stelle und was wäre die richtige Stelle?

    Der angesprochene Inhalt ist in diesem Fall die eingetragene E-Mail Adresse, korrekt? Wenn ja, dann reicht es wenn die Datenbank mit Mails befüllt wird - eine Text Ausgabe ist nicht nötig!


    Korrekt, ja. Zwingend ist es nicht, aber es ist benutzerfreundlicher: der Kot[sic!] aus dem Video leitet bei einem Fehler (z.B. leeres Feld) einfach kommentarlos auf das Formular weiter wobei auch schon korrekt eingegebene Inhalte einfach verworfen werden - findest du das benutzerfreundlich? Ja, ein Formular so zu gestallten dass es benutzerfreundlich ist, ist etwas aufwendiger aber die Bedienbarkeit darf niemals leiden nur weil es für den Programmierer aufwendiger ist.

    In send.php Zeile 15-18 wird eine Weiterleitung definiert, wenn Eingabe 'empty'. Momentan ist dies auf index.html vorgesehen, aber dazu werde ich noch eine eigene Fehlerseite erstellen :-)


    Nein! Das label-Element *muss* da hin, braucht aber einen Text als Beschriftung (nein, das placeholder-Attribut ersetzt diese nicht!). Das h3 ist (hier) die Überschrift des Formulars, hat aber mit der Beschriftung des Eingabefeldes nichts zu tun. Dein input mit type=submit wäre übrigens gerne ein richtiger <button> - gibt auch mehr Freiheiten mit der Beschriftung.

    ich vermute du wolltest *braucht keinen Text als....* schreiben
    ... jetzt ist er ein richtiger Button

    Code
    1. <section class="news">
    2. <h3>Jetzt registrieren</h3>
    3. <form action="send.php" method="post">
    4. <label for="mail"></label>
    5. <input type="text" name="mail" placeholder="Enter your E-Mail...">
    6. <button class="news-button" type="submit" name="btn">Abschicken</button>
    7. </form>
    8. </section>


    Auf Internetseiten sollte immer und überall UTF-8 verwendet werden (nicht nur in der Datenbank, auch die Scripte), damit ist jedes Zeichen abgedeckt welches du mal brauchen könntest. Eingestellt wird das beim Erstellen von Tabellen (oder auch Datenbanken), in Adminer gibt es dafür ein select "Kollationen" bzw. auf Spaltenebene bei den Optionen (unter phpMyAdmin wird das ähnlich heißen, aber das verwende ich schon länger nicht mehr). Bei schon bestehenden Tabellen lässt sich das auch ändern, ggf. muss es aber für die Spalten auch extra geändert werden. Als SQL direkt geht das natürlich auch, da musst du das hinter COLLATE entsprechend angeben - aber du wirst es ja vermutlich ohnehin über eine Admin-Oberfläche machen.

    Die Datenbank und Tabelle sind auf UTF-8 eingestellt.

    Ich verstehe dein Problem nicht wirklich. Fehlermeldungen werden in die php_error.log geschrieben (abhängig von den Einstellungen, die Datei kann auch andere Namen haben), wenn display_errors eingeschalten ist, werden die Fehler gleichzeitig auch ausgegeben. Mit der Konsole hat das erstmal nichts zu tun (wenn auch die unter Zuhilfenahme von tail ganz praktisch sein kann).


    Unwissenheit ist mein Problem gewesen, ich programmiere mit VS Code und nutzte bis vor meinem ersten Posting immer nur Live Server als Vorschau-Plugin. Dass da Standart solche Fehlermeldungen nicht angezeigt werden war mir nicht ganz bewusst, deswegen ging ich nach jonas seiner Antwort davon aus so eine "funktionierendes reporting" programmieren zu müssen :-D die lokale Lösung ist zB. MAMP bzw. für "go-live-gehen" dann ein Webserver wo so eine php.ini-Datei bereits vorhanden ist! - Also wieder etwas gelernt, Dankeschön euch beiden! :-)

    So läuft das nicht. Du musst schon konkreter werden was genau du nicht verstehst (auch dass ich bzw. jemand anderes bei dem Artikel nachbessern kann), so wäre es ziemlich sinnlos irgendwas erklären zu wollen.

    Nachdem ich keine wirklichen PHP und MySQL Kenntnisse habe tu ich mich von Grund auf schwer.

    Bitte nicht die Geduld mit mir verlieren!

    Finger weg von dem Video! Es ist enthält eine gefährliche Sicherheitslücke: der Autor hat das Prinzip von Kontextwechseln nicht verstanden und behandelt den Kontextwechsel zu SQL nicht (und den zu HTML an der falschen Stelle).

    Dazu kommen dann noch Dinge wie kein Affenformular (kein Muss, aber das Prinzip vereinfacht imho die Verarbeitung von Formulardaten), fehlende Beschriftung der Formularfelder (label-Element ist vorhanden, hat aber keine Verbindung zum input; bei dir ist die Verbindung da, aber die Beschriftung fehlt) und die Verwendung von latin1 als Zeichenkodierung statt UTF-8.

    - Wo soll ein Kontextwechsel zu SQL durchgeführt werden und warum?

    - Wo befindet sich für den Kontextwechsel die falsche Stelle zu HTML

    - Ein Affenformular soll überprüfen (in meinem Fall) ob bei 'mail' eine gültige Eingabe vorhanden ist und sonst den Vorgang so oft neu wiederholen lässt bis der Wert passt, korrekt? Ist es zwingend, oder einfach nur Benutzerfreundlicher?

    - Das Label-Element war Sinnfrei und hätte dort nicht hingehört. Als "Beschriftung" wird ein H3-Element verwendet

    - Kodierung passt nicht weil und wie korrigiere ich es?


    Zur Übersicht nochmal alle Schnipsel

    HTML: index.html
    1. <section class="news">
    2. <h3>Jetzt registrieren</h3>
    3. <form action="send.php" method="post">
    4. <input type="text" name="mail" placeholder="Enter your E-Mail...">
    5. <input class="news-button" type="submit" name="btn">
    6. </form>
    7. </section>

    Ich würde das ganz zuoberst auf die Todo-Liste schieben. In einem Entwicklungsserver gehört das error_reporting immer an.

    Über MAMP habe ich die php_error.log Datei in der mir die auftretenden Fehler in einer Konsole angezeigt werden. Wie ich selbst so ein funktionierendes reporting erstelle ist mir noch ein Rätsel bzw. fehlt mir da noch viel an Wissen :-)


    Es gibt Zwei Arten des reportings:

    - direkt im Browser

    - in der Konsole

    ... ist das korrekt?



    Finger weg von dem Video! Es ist enthält eine gefährliche Sicherheitslücke: der Autor hat das Prinzip von Kontextwechseln nicht verstanden und behandelt den Kontextwechsel zu SQL nicht (und den zu HTML an der falschen Stelle).

    Dazu kommen dann noch Dinge wie kein Affenformular (kein Muss, aber das Prinzip vereinfacht imho die Verarbeitung von Formulardaten), fehlende Beschriftung der Formularfelder (label-Element ist vorhanden, hat aber keine Verbindung zum input; bei dir ist die Verbindung da, aber die Beschriftung fehlt) und die Verwendung von latin1 als Zeichenkodierung statt UTF-8.


    Den Link Kontextwechsel habe ich mir durchgelesen, aber momentan ist es noch viel "Bahnhof" für mich dabei. Ich bin für jede weitere Erklärung sehr dankbar!


    LG & einen guten Rutsch falls man sich Heute nicht mehr liest :-)

    mit dem HTML-Tag <img> kannst Du Bilder einfügen.

    Um ein Bild hochladen zu können, verwende diesen Tag und gib die Zielquelle an.


    In meinem bspl. lade ich das Bild "testbild.jpg" aus dem Ordner "bilder" hoch.

    Das Bild hat eine Breit von 947px und Höhe von 820px.

    Kann das Bild nicht geladen werden, dann wird als alternativ Text "mein-bild" angezeigt.

    HTML
    1. <img src="/bilder/testbild.jpg" width="947" height="820" alt="mein-bild">

    LG, Andrew

    Hallo Community!


    Ich bastle an meiner ersten Homepage in HTML geschrieben und bin soweit auch schon fertig. Nun möchte ich für die Besucher eine Möglichkeit schaffen sich für einen Newsletter anzumelden. Dazu habe ich ein PHP-Script auf Youtube gefunden, welches ich nachbauen versucht habe.


    Ich arbeite derzeit noch alles local und nutze als Webserver MAMP

    Wenn ich auf den Button absenden klicke werde ich zwar auf send.php weitergeleitet, bekomme vom Browser aber eine Fehlermeldung - siehe Screenshot!

    Könnt ihr mir bitte sagen was ich falsch mache und wie ich den Fehler beheben kann?


    Vielen Dank u. LG,

    Andrew


    localhost.png

    http error 500.png



    HTML: index.html
    1. <section class="news">
    2.     <h3>Jetzt registrieren</h3>
    3.     <form action="send.php" method="post">
    4.         <input type="text" name="mail" placeholder="Enter your E-Mail...">
    5.         <input class="news-button" type="submit" name="btn">
    6.     </form>
    7. </section>
    PHP: send.php
    1. <?php
    2. if (isset($_POST['email'])) {
    3. include 'db_conn.php'
    4. echo "Hello!";
    5. }else {
    6. header("Location: index.html");
    7. }
    8. ?>