Seite 1 von 2 12 LetzteLetzte
Ergebnis 1 bis 20 von 25
  1. #1
    Mitglied
    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Post PHP Formular Check

    Hallo Zusammen
    Ich habe wieder mal eine Frage an euch, vielleicht könnt ihr mir dabei weiterhelfen. Ich versuche gerade ein Kontaktformular in HTML zu entwerfen. Prüfen und versenden möchte ich dies mit PHP. Das einzige Problem das ich noch habe ist: Wenn man etwas einträgt und z.B. ein Feld leer lässt oder etwas Falsches einträgt und der PHP-Check dies bemerkt und ein Fehler ausgibt sind die anderen Felder auch leer, da das Formular an das PHP-Script abgeschickt wurde. Gibt es nun eine Möglichkeit dies zwischenzuspeichern? Also damit bei einem Fehler nicht wieder das gesamte Formular ausgefüllt werden muss.

    Vielen Dank schon mal..

    Gruss xX_MiKE

  2. #2
    Mitglied
    Registriert seit
    Jun 2009
    Ort
    Im Forum
    Beiträge
    530

    Standard Re: PHP Formular Check

    Falls du die gleiche Datei verwendest um das Script mit PHP zu verarbeiten (action="diesedatei" bzw action="") dann kannst du einfach die Werte in "value" der einzelnen Inputs schreiben lassen (mittels PHP).

    Falls du zum Verarbeiten eine andere Datei verwendest, als die des Formulars, dann benötigst du meines erachtens Cookies oder SESSIONS.

    Dort kannst du die Daten vor der Überprüfung zwischenspeichern und im Fehlerfall wie oben beschrieben die value-Attribute der Input-Tags mit diesen befüllen.

    PHP-Code:
    <?php
    //Verarbeitung...
    //$_POST['name'] wird übermittelt und ein anderes Feld (wieso auch immer) nicht.
    if(isset($_POST['anderesFeld']) && $_POST['anderesFeld'] != "") {
      
    //mach was tolles
    } else {
      echo 
    "Du hast irgendwie Mist gebaut."
    }
    ?>
    <form method="post" action="">
      <input type="text" name="name" value="<?php echo $_POST['name']; ?>" />
      <input type="text" name="anderesFeld" value="<?php echo $_POST['anderesFeld']; ?>" />
    </form>
    EDIT:
    Wenn du das 1:1 umsetzten solltest, sollte ich wohl noch drauf hinweisen, dass PHP NOTICE loggen wird, da manche Indexe von $_POST nicht definiert worden sind. Dies kann allerdings auch zu WARNINGs führen. ERRORs werden aber nicht entstehen.
    Ist halt nur ein Minimalbeispiel.

  3. #3
    Werbekritiker Avatar von StaTiC
    Registriert seit
    May 2003
    Beiträge
    14.143

    Standard Re: PHP Formular Check

    jedes html Element hat ein value-Attribut
    im fehlerfall trägst du dort einfach alle übermittelten werte ein.

    ui zu langsam.

  4. #4
    Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    2.700

    Standard Re: PHP Formular Check

    Fast so wie Roin das beschrieben hat, nur einem kleinen, aber entscheidenden Unterschied:

    PHP-Code:
    <input type="text" name="field" value="<?php echo htmlspecialchars($_POST['field']); ?>"/>
    <textarea name="field2"><?php echo htmlspecialchars($_POST['field2']); ?></textarea>
    Die Maskierung der Werte mit htmlspecialchars() ist dabei wichtig da ansonsten im ersten Fall enthaltene " und im zweiten Fall enthaltene < und > das Formular zerstören würden, & verursacht in beiden Fällen Schwierigkeiten. Die Funktion wandelt diese Zeichen in die ungefährlichen html-Entities um die für den Browser dann keine besondere Bedeutung mehr haben.

  5. #5
    Mitglied
    Registriert seit
    May 2009
    Ort
    CH
    Beiträge
    264

    Standard Re: PHP Formular Check

    Muss es denn zwingend mit PHP geprüft werden? Mithilfe von Javascript wäre kein Reload nötig und sömit müssten die eingetragenen Werte auch nicht in URL, Sessions oder Cookies übergeben werden.

  6. #6
    Mitglied
    Registriert seit
    Mar 2007
    Beiträge
    2.700

    Standard Re: PHP Formular Check

    Der Test in PHP ist in JEDEM FALL notwendig. Den Test mittels Javascript kann man zusätzlich durchführen, man kann sich aber nur bei der serverseitigen Variante darauf verlassen, dass die Daten tatsächlich valide sind. Zudem sind weiterführende Tests, wie z.B. ob der Mailserver überhaupt existiert, eh ausschließlich serverseitig möglich.

  7. #7
    Mitglied
    Registriert seit
    Jun 2009
    Ort
    Im Forum
    Beiträge
    530

    Standard Re: PHP Formular Check

    Zitat Zitat von Exterminans Beitrag anzeigen
    Fast so wie Roin das beschrieben hat, nur einem kleinen, aber entscheidenden Unterschied
    Wie gesagt. Nur ein Minimalbeispiel. Ich habe ja nicht behauptet, dass die Ausgabe fehlerfrei verlaufen würde ;-)
    Aber hast du schon Recht, hätte ich vielleicht drauf hinweisen sollen.

  8. #8
    Werbekritiker Avatar von StaTiC
    Registriert seit
    May 2003
    Beiträge
    14.143

    Standard Re: PHP Formular Check

    javascript darf die Arbeit nur erleichtern, aber niemals der serverseitigen Sprache die Arbeit abnehmen.

  9. #9
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Standard Re: PHP Formular Check

    Und dazu kommt noch Javascript kann einfach im Browser deaktiviert werden. Somit wäre der Check auch umsonst..

    Aber vielen Dank für die Hilfe. Ihr seid super. Dämlich dass ich nicht selbst auf diese Idee gekommen bin..

    Aber ich habe schon das nächste Problem. Wenn ich so ein Input-Feld nun aus einer Datenbank lesen möchte, verarbeitet er den PHP-Script bei value nicht.

    HTML-Code:
    <input type="text" name="vorname" value="<?php echo $_POST['vorname'] ?>"
    Also wenn ich dies aus der DB auslese, steht danach im Textfeld dieser Code
    PHP-Code:
    "<?php echo $_POST['vorname'?>"
    Wie kann ich solchen PHP-Code aus einer DB auslesen?

  10. #10
    yabayaba Avatar von C10H15N
    Registriert seit
    Jun 2005
    Ort
    /dev/null
    Beiträge
    251

    Standard Re: PHP Formular Check

    Zitat Zitat von xX_MiKE Beitrag anzeigen
    Wie kann ich solchen PHP-Code aus einer DB auslesen?
    Anstatt es in einem INSERT-Query einzutragen liest du es einfach mit SELECT FROM aus?
    Oder ich verstehe nicht ganz was du meinst

  11. #11
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Standard Re: PHP Formular Check

    Zitat Zitat von C10H15N Beitrag anzeigen
    Anstatt es in einem INSERT-Query einzutragen liest du es einfach mit SELECT FROM aus?
    Oder ich verstehe nicht ganz was du meinst
    Du verstehst nicht genau was ich meine Aber ich habe es vielleicht auch zu wenig genau beschrieben.
    Das Problem ist nicht das auslesen an sich, sondern beim Auslesen wird der PHP-Abschnitt vom Input-Feld als String in einer PHP-Variable gespeichert und später auch als String ausgegeben. Also er wird nicht verarbeitet. Verstehst du mein Problem?

  12. #12
    yabayaba Avatar von C10H15N
    Registriert seit
    Jun 2005
    Ort
    /dev/null
    Beiträge
    251

    Standard Re: PHP Formular Check

    Ich glaube

    Das bedeutet eigentlich, dass dein Webserver die Datei nicht als PHP-Script erkennt und stattdessen als HTML rendert (steht das so tatsaechlich exakt im HTML?)

    Das koennte dann an der Endung liegen. Also, falls es nicht ist, mach ".php" draus.

  13. #13
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Standard Re: PHP Formular Check

    Es wird ja bereits aus einer PHP-Datei ausgeführt. Aber das Problem ist, dass der PHP-Script den Inhalt der DB in einen String ablegt. Doch in diesem String ist auch noch ein Stück PHP-Script.
    Dieser wird jedoch nicht ausgeführt, da er im Script als String gespeichert wurde.

    Verstehst du was ich meine?

  14. #14
    yabayaba Avatar von C10H15N
    Registriert seit
    Jun 2005
    Ort
    /dev/null
    Beiträge
    251

    Standard Re: PHP Formular Check

    Nein in der Datenbank sollte kein PHP-Code stehen, sondern der tatsaechliche Wert (den der Server/PHP ja eigentlich parsen sollte).
    Aber ich kann auch nur spekulieren, da ich nicht genau weiss wie es bei dir codemaessig aussieht

  15. #15
    Mitglied
    Registriert seit
    Jun 2009
    Ort
    Im Forum
    Beiträge
    530

    Standard Re: PHP Formular Check

    Zitat Zitat von xX_MiKE Beitrag anzeigen
    Dieser wird jedoch nicht ausgeführt, da er im Script als String gespeichert wurde.
    Das ist nur in Ausnahmewällen möglich. Der PHP-Intepreter auf dem Webserver führt (eigentlich) jedem PHP-Code aus, der ihm vorgesetzt wird, wenn er es kann (gibt ja auch ERRORS usw).
    Somit ist es sehr unwahrscheinlich, dass er <?php .... ?> in einem String speichert.
    Außer, wenn das HTML-Formular, welches du verwendest in einer Datei ausgegeben wird, die nicht vorher durch den PHP-Intepreter läuft.
    In den meisten Fällen reicht ein umbenennen der Dateiendung in .php statt .htm(l).
    Du könntest allerdings auch mit htaccess html Dateien durch den Intepreter laufen lassen, was allerdings normalerweise nicht notwendig sein dürfte.

    Wird denn auch in deinem Browser "<?php ... ?>" in den Inputfeldern angezeigt?
    Falls du das Script mittels PHP in der gleichen Datei verarbeiten möchtest, solltest du Den ausführenden Teil vor jeglicher Ausgabe machen, sodass dir auch die Möglichkeiten von header() und ähnlichen Funktionen offen stehen. Zudem vermeidest du dadurch eine fehlerhafte Ausgabe, da ansonsten die Dateien möglicherweise noch nicht wichtig aufbereitet sind.

    Oder haben wir wieder etwas falsch verstanden?

    €:
    uiii diesmal war ich zu langsam

  16. #16
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Standard Re: PHP Formular Check

    Ich glaube irgendwo habe ich einen Denkfehler.

    Also hier mal die verkürzte Version der Datei index.php
    HTML-Code:
    <?php
      
      $abfrage = mysql_query("SELECT * FROM content WHERE page='$id'");
      
      $row = mysql_fetch_assoc($abfrage);
      $content = $row['content'];
      $title = $row['title'];
    
    ?>
    <!DOCTYPE html>
    <html>
      <head>
      </head>
      <body>	
    		<div id="content" class="small">
    			<h2><?php echo $title; ?></h2>
    			<?php echo $content; ?>
    		</div>
    	</body>
    </html>
    Diese Abfrage liest nun diesen Text aus der DB.

    HTML-Code:
    <input type="text" name="vorname" value="<?php echo $_POST['vorname'] ?>"
    Und im Textfeld steht dann: <?php echo $_POST['vorname'] ?>
    Also dies wird vom Webserver nicht verarbeitet, da es als String in der Variable $content steht. Also es wird einfach als Text an die Webseite weitergegeben.
    Könnt ihr mir folgen?

  17. #17
    Mitglied
    Registriert seit
    Jun 2009
    Ort
    Im Forum
    Beiträge
    530

    Standard Re: PHP Formular Check

    Wenn du PHP und HTML Code in deiner Datenbank speichenr willst udn gemeinsam in einer Variable hast und somit ausführen willst, musst du entweder deine Strings nach eindeutigen Merkmalen durchsuchen die PHP-Code kennzeichnen (<?php ?>). Und anschließend mit eval() ausführen lassen.
    Ich halte es allerdings nicht für sinnvoll die Daten, besonders den eigentlichen HTML-Auszeichnungscode in einer DB zu speichern. Ich würde den erst mit PHP zusammensetzten lassen, jenachdem was ich in der DB finde. Ich würde also nur "aliase" vergeben, die ich dann mit entsprechenden PHP-Funktionen ersetzten lasse, falls ich überhaupt etwas derartig in einer Datenbank speichern würde.
    Es wäre meines Erachtens sinnvoller, derartigen Code direkt in der Datei zu speichern.

    Falls du damit erreichen willst, dass immer nur die index.php geladen werden muss.
    Schreib dir entweder einer "ini.php" die alles ausführt, was auf jeder Seite verwendet wird oder passe mittels htaccess die Anzeige der URI usw an.

    Ansonsten würde mich interessieren, für welches Vorhaben deine Umsetzungsweise notwendig und sinnvoll wäre?

  18. #18
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Standard Re: PHP Formular Check

    Also sollte man nicht den ganzen HTML-Code in einer DB speichern?

    Also nur Aliase vergeben und diese dann mit preg_replace ersetzen lassen? Oder wie soll ich das anstellen?

    Notwendig ist es natürlich nur da ich den gesamten Content in einer DB abgelegt habe, aber dies kann ich natürlich anpassen. Und für sinnvoll halte ich es immer weniger, wenn ich hier so mit euch schreibe. Eher sogar schon unsinnig.

  19. #19
    Mitglied
    Registriert seit
    Jun 2009
    Ort
    Im Forum
    Beiträge
    530

    Standard Re: PHP Formular Check

    Zitat Zitat von xX_MiKE Beitrag anzeigen
    Also sollte man nicht den ganzen HTML-Code in einer DB speichern?
    Meines Erachtens nicht. Das belastet (je nach Content) die Datenbank nur noch mehr und ergibt, falls du den Content von anderen Nutzern erstellen lässt, bei nicht ausreichender Contentüberprüfung eine Sicherheitslücke.

    Zitat Zitat von xX_MiKE Beitrag anzeigen
    Also nur Aliase vergeben und diese dann mit preg_replace ersetzen lassen?
    Wenn deine Seiten keine klaren Aufbaustrukturen haben, ja.
    Falls deine Seite allerdings immer nur das gleiche Formular enthält, mit den gleichen Input-Tags usw., dann würde sich anbieten, diese auch mit PHP zu erzeugen und nur noch mit den entsprechenden value-Werten zu füllen.

    Zitat Zitat von xX_MiKE Beitrag anzeigen
    Notwendig ist es natürlich nur da ich den gesamten Content in einer DB abgelegt habe
    Wieso? Einfach nur mal zum Ausprobieren oder steckt da ein spezielles Projekt von dir dahinter? Hast du gedacht, es sei performanter oder etwas dergleichen?
    Wenn die Daten bereits in einer Datei stehen, wird weniger Zeit benötigt, als wenn diese erst noch aus einer Datenbank geholt werden müssen.

    Zitat Zitat von xX_MiKE Beitrag anzeigen
    Und für sinnvoll halte ich es immer weniger, wenn ich hier so mit euch schreibe. Eher sogar schon unsinnig.
    Habe ich das richtig verstanden? Du findest es unsinnig, hier deine Frage zu stellen? Wieso tust du es dann?

  20. #20
    Mitglied

    (Threadstarter)


    Registriert seit
    Mar 2011
    Ort
    Switzerland
    Beiträge
    36

    Standard Re: PHP Formular Check

    Hallo Roin
    Ich habe mir gedacht ein DB-Zugriff wäre schneller, als alles durch PHP zusammenbauen lassen. Und der Content wird nur von mir selbst erstellt.

    Okei, habe verstanden. Demnach löse ich diese Probleme einfach mit preg_replace.
    Nein, die Seite besteht aus drei Unterseiten (Home, Bilder und Kontakt-Formular).

    Einfach mal zum ausprobieren (: und um meine Kenntnisse von PHP, HTML, Javascript und MySQL zu erweitern Ja, ich dachte es sei performanter, wie bereits oben beschrieben.

    Nein, das hast du komplett falsch verstanden. Ich meinte, ich finde finde es langsam unsinnig den ganzen Content in einer DB abzulegen.
    Die Frage hier zu stellen war ganz und gar nicht unsinnig, eher das Gegenteil, denn hier im Board bekommt man immer schnell und auch meist hilfreiche Antwortet.
    Ihr habt mich auch wirklich weitergebracht. Vielen Dank nochmal an alle

  21.  
     
     
Seite 1 von 2 12 LetzteLetzte

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •