bjbenderTV: Frage zur nutzung von php echo htmlspecialchars

Hallo alle Zusammen, folgendes Anliegen ich Teste zurzeit einige Sachen durch z.B. habe ich ein Formular erstellt in welchen man seinen Namen ausgibt. Dann wird man auf die Nächste Seite weiter geleitet und dort wird einem der Name dann angezeigt. Das ganze habe ich mit htmlspecialchars umgesetzt. Nun möchte ich einen Button einfügen wo man zurück auf die erste Seite kommt das stellt für mich auch noch kein Problem dar. Mein Problem ist das ich nicht Weiß wie ich die Eingaben bzw. Namen wieder im Formular anzeigen lassen kann. Damit man diese wieder bearbeiten kann. Welche dann auf der ersten Seite angezeigt werden sollen.

Und damit bitte ich euch um Hilfestellungen! Ich bedanke mich schon mal im Voraus.

  1. Tach!

    folgendes Anliegen ich Teste zurzeit einige Sachen durch z.B. habe ich ein Formular erstellt in welchen man seinen Namen ausgibt. Dann wird man auf die Nächste Seite weiter geleitet und dort wird einem der Name dann angezeigt.

    Das ist nicht unbedingt ein besonders gutes Design (abgesehen davon, dass ich auch so Webseiten zu programmieren angefangen habe). Wenn deine Anwendung auf der Folgeseite nun einen Fehler in den Eingabedaten feststellt, was macht sie dann? Selbst nochmal das Formular anzeigen oder wieder zum Formular zurückschicken und die Daten hin- und herschicken? Es ist besser, wenn das Formular dieselbe Seite als Ziel hat und so Formular und Verarbeitung an einer Stelle stattfinden. Erst wenn alles validiert und verarbeitet wurde, sollte man zum nächsten Schritt übergehen. Zum Beispiel mit einer Weiterleitung oder einem Weiter-Link in der Bestätigungsausgabe.

    Das ganze habe ich mit htmlspecialchars umgesetzt. Nun möchte ich einen Button einfügen wo man zurück auf die erste Seite kommt das stellt für mich auch noch kein Problem dar. Mein Problem ist das ich nicht Weiß wie ich die Eingaben bzw. Namen wieder im Formular anzeigen lassen kann. Damit man diese wieder bearbeiten kann. Welche dann auf der ersten Seite angezeigt werden sollen.

    Wenn du die Daten nicht bereits pro Seite im DBMS (oder sonstwo) ablegen möchtest, sondern erst alle Eingabeschritte abgearbeitet sehen möchtest, dann kannst du die zwischendurch anfallenden Daten in einer Session zwischenspeichern.

    dedlfix.

    1. Da ich nicht ganz verstehe was du meinst würde ich mal meinen Quellcode schicken.

      Das ist der Formularcode

      <form id="order" action="test.php" target="_blank" method="post" >
       <fieldset>
      
               <input name="name"placeholder="Name" type="text">
               </fieldset>
               <fieldset>
               <input name="prename"  placeholder="Vorname" type="text">
               </fieldset>
               <fieldset>
               <input name="mail"placeholder="Ihre E-Mail" type="email">
               </fieldset>
               <fieldset>
               <input name="City" placeholder="Ihre Stadt" type="text">
               </fieldset>
               <fieldset>
               <input name="PLZ" placeholder="Ihre PLZ" type="text">
               </fieldset>
               <fieldset>
               <input name="Adress" placeholder="Ihre Adresse(Straße,Nr.)" type="text">
               </fieldset>
               <fieldset>
              <input name="telp" placeholder="Ihre Telefonnummer" type="tel">
                </fieldset>
                <fieldset>
                <input name="Art"placeholder="Artikelnummer" type="text">
                        </fieldset>
                <fieldset>
                <textarea name="info" placeholder="Zusätzliche Informationen"></textarea>
                </fieldset>
                <fieldset>
                <button id="submit" type="submit">Bestellung Aufgeben</button>
                <button id="reset"  type="reset">Bestellung Abrechen</button>
                </fieldset><p align="center"></p></p>
       </form>
      

      welcher dann auf dieser Seite verarbeitet wird.

      <form action="test3.php" target="_blank">
      <table width="100%" border="1" cellpadding="0" cellspacing="2">
      
      
       <tr>
        <td>Adresse:</td>
        <td><?php echo htmlspecialchars($_POST['prename']);?>
               <?php echo htmlspecialchars($_POST['name']);?> </td>
       </tr>
       <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
       </tr>
       <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
       </tr>
       <tr>
        <td>&nbsp;</td>
        <td><?php echo htmlspecialchars($_POST['telp']);?><br>
               <?php echo htmlspecialchars($_POST['mail']);?></td>
       </tr>
       <tr>
        <td>&nbsp;</td>
        <td>&nbsp;</td>
       </tr>
      
       <tr>
        <td colspan="2"><button type="submit">Daten ändern</button></td>
       </tr>
      </table>
       </form>
      

      Und dann würde ich das ganz gerne auf die gleiche oder eine neue Seite weiterleiten mit den Daten in einem Input Feld damit man die Daten noch bearbeiten kann.

      Danke schonmal für deine Hilfe!

      1. Tach!

        Da ich nicht ganz verstehe was du meinst würde ich mal meinen Quellcode schicken.

        Die Technik hört auf den schönen Namen Affenformular. Der Affe am anderen Ende muss solange auf der Tastatur rumtippen, bis er eine korrekte Eingabe erzeugt, erst dann gehts es weiter.

        Es ist umständlicher, zwischen den Seiten hin und her zu springen, als auf der Stelle zu springen, bis alles ok ist.

        dedlfix.

        1. Okay den Begriff Affenformular habe ich schon gehört aber ich verstehe nicht wie ich das in meinem Fall umsetzen könnte, da brauch ich dann doch Hilfe bzw. einen Gedanken anstupser.

          Danke nochmal für die Erklärung.

          1. Tach!

            Okay den Begriff Affenformular habe ich schon gehört aber ich verstehe nicht wie ich das in meinem Fall umsetzen könnte, da brauch ich dann doch Hilfe bzw. einen Gedanken anstupser.

            Das Affenformular ist erstmal die Grundlage, wie ein einzelnes Formular umgesetzt werden kann. Wenn du mehrere Formulare brauchst, dann bau jedes einzelne so und verlinke sie lediglich untereinander. Wenn du Daten zwischen zwei Requests speichern möchtest, dann erstell zusätzlich eine Session.

            dedlfix.

            1. Hi, also ich brauche nur ein Formular dies was ich am Anfang gezeigt habe. Und über den Daten Bearbeiten Knopf soll man wieder auf das Formular zurückgeleitet werden. Und im Formular soll dann im input value=daten stehen also z.B. der Name damit man dies bearbeiten kann wie man das umsetzt verstehe ich aber nicht.

              1. Tach!

                also ich brauche nur ein Formular dies was ich am Anfang gezeigt habe. Und über den Daten Bearbeiten Knopf soll man wieder auf das Formular zurückgeleitet werden. Und im Formular soll dann im input value=daten stehen also z.B. der Name damit man dies bearbeiten kann wie man das umsetzt verstehe ich aber nicht.

                Ich hatte die Wikipedia-Seite zum Affenformular verlinkt, da gibt es auch ein Code-Beispiel.

                dedlfix.

                1. Danke für die Verlinkung der Code an sich habe ich verstanden aber bei mir harpert es an der Umsetzung. Da ich den Input Tags namen gegben habe damit Sie auf der nächsten Seite verarbeitet werden nun soll diese Seite ja sozusagen nochmal verarbeitet werden indem diese Seite die informationen nochmal in das Formular einträgt damit man diese dort ändern kann und dann wieder absendet. Nun weiß ich nicht wie <td>Artikel Nr: <?php echo htmlspecialchars($_POST['Art']);?> </td> einen Name geben kann. Das ist mein Problem!

                  1. Hallo bjbenderTV,

                    ein reiner Anzeigetext kann nicht mir einem Namen versehen werden, so dass er bei einem Post mit gesendet wird.

                    Das geht über

                    • <input type="hidden"> plus Textausgabe
                    • ein <input type="..." readonly>, was aber eigentlich ein Missbrauch des input-Konzepts ist und was man besser nicht tut
                    • oder eine Speicherung am Server ($_SESSION oder Datenbank). Damit $_SESSION funktioniert, muss der Server passend konfiguriert werden. Eventuell musst Du einen Session-Handler programmieren.

                    Siehe auch meinen Post von 13:35

                    Rolf

                    --
                    sumpsi - posui - clusi
                    1. Tach!

                      • oder eine Speicherung am Server ($_SESSION oder Datenbank). Damit $_SESSION funktioniert, muss der Server passend konfiguriert werden. Eventuell musst Du einen Session-Handler programmieren.

                      Das eingebaute Session-Handling sollte erstmal ausreichen. Wenn man was einstellen/kontrollieren möchte, dann ist das der session.save_path, dass der auf ein schreibbares Verzeichnis zeigt, das möglichst isoliert für diese Anwendung zur Verfügung steht, und nicht irgendein generelles Verzeichnis, wo jeder drin herumschreiben darf.

                      dedlfix.

                  2. Tach!

                    Nun weiß ich nicht wie <td>Artikel Nr: <?php echo htmlspecialchars($_POST['Art']);?> </td> einen Name geben kann.

                    Wenn ich das richtig verstanden haben, möchtest du die Eingabe irgendwie in diese Tabellenzelle bekommen. Ich würde da die schon genannten Sessions nehmen, Was ins Formular eingertragen und erfolgreich validiert wurde, kommt in die Session. Anderenors, wenn man diese Daten wieder braucht, gibt man den gewünschten Eintrag in der Session wieder aus.

                    dedlfix.

      2. Hallo bjbenderTV,

        dein HTML ist in dieser Form untauglich.

        1. ist es - meine ich - besser, nicht ein Fieldset pro Input zu verwenden. Einen einzelnen Rahmen pro Input? Sehr merkwürdig.
        2. placeholder sind keine Labels. Deine Eingabeelemente müssen eine Beschriftung haben.
        3. ist Table-Layout Technik der 1990er.

        Des weiteren würde ich gerne wissen, welche PHP Dateien das sind, die Du da zeigst, damit man versteht, wie die Abläufe sind. Ist das erste Form in test3.php zu finden, und das zweite Form in test.php? Oder ist das anders gemacht?

        Die Frage, warum man vom zweiten Form auf's erste zurückspringen sollte, möchte ich jetzt nicht aufwerfen. Du baust Testseiten und spielst mit den Möglichkeiten herum, insofern ist „weil ich das will“ erstmal eine valide Antwort. Über gutes UI Design reden kann man immer noch.

        Grundsätzlich gibt es solche UIs ja auch, man nennt das Wizard-Design. Man gibt was auf der ersten Seite ein, drückt Weiter, gibt weitere Dinge ein, drückt Weiter, sagt UPS, drückt zweimal "zurück" und fängt vorn an. Wenn man sowas bauen will, müssen die Daten zwischengespeichert werden.

        Möglichkeit 1: Auf dem Server. Du speicherst die eingegebenen Formulardaten zwischen befüllst die Feldinhalte beim Aufruf der Seite aus dem Zwischenspeicher. Der Zwischenspeicher kann eine PHP Session oder eine Datenbank sein.

        Möglichkeit 2: hidden input. Wenn Du 3 Wizardschritte hast, kannst Du auf jeder Seite die Feldinhalte der übrigen Seiten in hidden input Feldern speichern. Das ist keine triviale Übung und erzeugt - denke ich - eine Menge stumpfer Code-Wiederholung.

        Rolf

        --
        sumpsi - posui - clusi
        1. Hallo Rolf, erstmal danke für deine Ideen. Ich fasse noch einmal den quellcode komplett zusammen. Das ist die orderv.php das ist nur das Formular wo man die Daten eingibt.

          <form id="order" action="test.php" target="_blank" method="post" >
           <fieldset>
          
                   <input name="name"placeholder="Name" type="text">
                   </fieldset>
                   <fieldset>
                   <input name="prename"  placeholder="Vorname" type="text">
                   </fieldset>
                   <fieldset>
                   <input name="mail"placeholder="Ihre E-Mail" type="email">
                   </fieldset>
                   <fieldset>
                   <input name="City" placeholder="Ihre Stadt" type="text">
                   </fieldset>
                   <fieldset>
                   <input name="PLZ" placeholder="Ihre PLZ" type="text">
                   </fieldset>
                   <fieldset>
                   <input name="Adress" placeholder="Ihre Adresse(Straße,Nr.)" type="text">
                   </fieldset>
                   <fieldset>
                  <input name="telp" placeholder="Ihre Telefonnummer" type="tel">
                    </fieldset>
                    <fieldset>
                    <input name="Art"placeholder="Artikelnummer" type="text">
                            </fieldset>
                    <fieldset>
                    <textarea name="info" placeholder="Zusätzliche Informationen"></textarea>
                    </fieldset>
                    <fieldset>
                    <button id="submit" type="submit">Bestellung Aufgeben</button>
                    <button id="reset"  type="reset">Bestellung Abrechen</button>
                    </fieldset><p align="center"></p></p>
           </form>
          

          Dann kommt die test.php in welcher die Daten Wiedergegeben werden sollen.

          <form action="test3.php" target="_blank">
          <table width="100%" border="1" cellpadding="0" cellspacing="2">
          
           <tr>
            <td>Adresse:</td>
            <td><?php echo htmlspecialchars($_POST['prename']);?>
                   <?php echo htmlspecialchars($_POST['name']);?> </td>
           </tr>
           <tr>
            <td>&nbsp;</td>
            <td><?php echo htmlspecialchars($_POST['City']);?><br>
                   <?php echo htmlspecialchars($_POST['PLZ']);?><br>
                   <?php echo htmlspecialchars($_POST['Adress']);?><br>
                   <?php echo htmlspecialchars($_POST['country']);?></td>
           </tr>
           <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
           </tr>
           <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
           </tr>
           <tr>
            <td>&nbsp;</td>
            <td><?php echo htmlspecialchars($_POST['telp']);?><br>
                   <?php echo htmlspecialchars($_POST['mail']);?></td>
           </tr>
           <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
           </tr>
           <tr>
            <td>Artikel Information:</td>
            <td>Artikel Nr: <?php echo htmlspecialchars($_POST['Art']);?>     </td>
           </tr>
           <tr>
            <td>&nbsp;</td>
            <td>&nbsp;</td>
           </tr>
           <tr>
            <td colspan="2"><button type="submit">Adresse ändern</button></td>
           </tr>
          </table>
          

          Dies test3.php soll genau das gleich Formular Darstellen wie die oderv.php nur das dort als value=Name dann die Daten stehen sollen welche man bearbeiten soll. Vielleicht gibt es auch eine leichtere und besser Lösung ich würde das halt gerne so Umsetzen wenn das geht.

          Das ganze soll ein Test für ein Bestell Formular werden. Der Nutzer gibt am Anfang die Daten ein und drückt dann auf Bestellung aufgeben dort wird er auf eine weitere Seite geleitet test.php dort werden ihm die Daten noch mal zusammengefasst. Dort soll er die Möglichkeit haben die Daten zu ändern ohne nochmal komplett von vorne anzufangen. Wen er die Daten alle richtig eingetippt hat soll er wieder auf die test.php kommen wo diese dann alle noch einmal zusammengefasst werden. Danach kann er die Daten absenden welche dann per Email an die gewünschte adresse gehen würden.

          Das ist so der Plan. Ich hoffe du kannst damit etwas anfangen.

          1. Hallo bjbenderTV,

            Das ist so der Plan. Ich hoffe du kannst damit etwas anfangen.

            Naja. orderv.php, test.php und test3.php sollten die gleiche Seite sein.

            Vorschläge:

            • du kannst beim Einstieg in orderv prüfen, ob schon Daten da sind, und diese Daten dann in die Eingabefelder einsteuern. Code wie der folgende ist absolut in Ordnung:
               <input type="text" value="<?= htmlspecialchars($bestellung['name']) ?>">
            
            • die Variable $bestellung kann aus der Datenbank oder aus den Sessiondaten kommen. Für ein Bestellsystem braucht Du ohnehin eine DB. Das Wiedererkennen des Users zwischen den einzelnen Seiten machst Du über die Session-ID, die kann PHP selbstständig vergeben und in einem temporären Keks im Browser notieren.

            • Das Form in orderv.php sollte wirklich ein Affenformular sein. Ein solches Formular kann z.B. zwei Sichten erzeugen: Bearbeitung und Übersicht. Im Bearbeitungsmodus kommt das Eingabe-Form, im Übersichtsmodus kommt ein Anzeige-Form mit den "Zurück" und "Kostenpflichtig bestellen" Buttons.

            • Ob Du aus dem Eingabeform oder aus dem Anzeigeform kommst, kannst Du über die Werte der Submit-Buttons unterscheiden. Dem "Weiter" Button im Eingabeform gibst Du name="submit" und value="weiter", und auf dem Anzeigeform verwendest Du Buttons mit value="zurück" und value="kaufen". Darüber kannst Du die Navigation steuern. Nimm das button-Element, nicht input type="button", dann können sich angezeigter Text und Button-Value unterscheiden.

            • Am Anfang des PHP Codes lädst Du die vorhandenen Eingabedaten. Wenn keine da sind, ok, dann ist eben alles leer. Dann unterscheidest Du - ist $_POST['submit'] vorhanden? Wenn nicht, war es ein GET-Request und Du startest definitiv auf der Bestellseite. Andernfalls guckst Du,

              • ist $_POST['submit'] == "weiter", wird die Anzeigeseite aufbereitet
              • ist $_POST['submit'] == "kaufen", wird die Bestellung ins System übernommen und ggf. zur Bezahlseite weitergeleitet (z.B. mit einem location-header)
              • andernfalls wird die Eingabeseite angezeigt.

            Wenn Du mir jetzt gar nicht folgen konntest, würde ich Dir den Kauf eines PHP Buchs oder die Suche nach PHP Tutorials empfehlen (unser Wiki ist da eher schlechter bestückt) und Dir raten, erstmal ein paar Wochen Selbststudium einzulegen. Ich kann Dir nicht im Forendialog deine Seite schreiben.

            Rolf

            --
            sumpsi - posui - clusi
            1. Da hast du Recht Rolf Dankeschön für deine Hilfe. Klar würde ich eine Datenbank benötigen. Würde ich dies als echten Shop mit Produkten betreiben aber, da dies sozusagen ja nur ein Test ist fällt das schon mal für mich weg.

            2. Hallo Rolf ich habe da noch einmal ein Anliegen ich habe das ganze Formular jetzt komplett überarbeitet mit Sessions und es funktioniert richtig gut dafür bedanke ich mich erstmal bei dir. Nun möchte ich einen Zurück Button einfügen dies habe ich mit Javascript gemacht. Dies funktioniert aber nicht all zu gut nun die Frage geht das auch mit PhP?

              Ich bitte um Hilfe

              bjbenderTV

              1. Hallo bjbenderTV,

                ja, das geht.

                Aber um zu wissen, wie es geht, müsste ich wissen, was du nun gebaut hast.

                Rolf

                --
                sumpsi - posui - clusi
                1. Also das Formular was die Daten sammelt ist gleich geblieben. Nun habe ich die Seite welche alles zusammengefasst abgeändert mit den Sessions hier der Quellcode:

                  <form action="checkout.php">
                  <?php
                  session_start();
                  $name = $_POST['name'];
                  $prename = $_POST['prename'];
                  $email = $_POST['mail'];
                  $city =  $_POST['City'];
                  $PLZ = $_POST['PLZ'];
                  $adress = $_POST['Adress'];
                  $country = $_POST['country'];
                  $tel = $_POST['telp'];
                  $ArtNR = $_POST['Art'];
                  $text = $_POST['info'];
                  
                  if(!isset($name) OR empty($name)) {
                     $name = "Gast";
                  }
                  
                  
                  $_SESSION['name'] = $name;
                  $_SESSION['prename'] =$prename;
                  $_SESSION['mail'] =$email;
                  $_SESSION['City'] =$city;
                  $_SESSION['PLZ'] =$PLZ;
                  $_SESSION['Adress']=$adress;
                  $_SESSION['country']=$country;
                  $_SESSION['telp'] =$tel;
                  $_SESSION['Art'] =$ArtNR;
                  $_SESSION['info'] =$text;
                  
                  
                  echo "Adresse: &nbsp; $prename $name <br> $PLZ, $adress <br>$city<br> $country<br> Tel: &nbsp; $tel<br> E-mail: &nbsp; $email <br> <br> Artikelinfromationen: &nbsp; $ArtNR <br><br>Zusätzliche Infromationen: $text<br>
                  
                  <a href=\"javascript:history.back()\">Zurück</a>
                  
                  <button type="submit">Kostenpflichtig bestellen</button>
                  </form>
                  

                  Wie du am Quellcode sehen kannst habe ich es mit Javascript versucht welches erst gut funktioniert hat. Aber ich würde dies gerne in PHP ab ändern, da es ja immer Menschen gibt welche JS deaktivieren. Und mit dem if möchte ich noch kontrollieren ob alles ausgefüllt war dies funktioniert aber noch nicht so gut und indem Fall ist es nur dafür, da damit der Name als Gast vergeben wird welches ich auf jeden Fall noch ändern muss. Ich hoffe du kannst mir helfen. Danke schon mal!

                  bjbenderTV

                  1. Hallo bjbenderTV,

                    der Monster echo gefällt mir schon mal gar nicht, aber heute wird das bei mir nicht mehr viel.

                    Tipp: mach aus dem Zurück-Link einen Button und verwende das formaction Attribut, um auf die Bestellseite zu verzweigen.

                    Im PHP der Bestellseite lies die Sessiondaten aus und initialisiere die Eingabefelder mit den Sessionwerten.

                    Rolf

                    --
                    sumpsi - posui - clusi
              2. Tach!

                Nun möchte ich einen Zurück Button einfügen dies habe ich mit Javascript gemacht. Dies funktioniert aber nicht all zu gut nun die Frage geht das auch mit PhP?

                Ein Zurück-Button ist bereits im Browser. Wenn du eine Navigation zwischen den Teilen deiner Website haben möchtet, nimm ganz normal Links.

                dedlfix.

                1. Hallo dedlfix, mir ist bewusst das der Browser einen zurück Knopf hat. Aber wie du auch sagtest möchte ich eine Navigation zwischen 2 Seiten herstellen. Dies habe ich auch mit Links versucht dort habe ich das Problem das, dass mit der Session nicht mehr funktioniert das heißt das die Daten des Formulars im Formular nicht mehr wiedergegeben wird. Dies funktioniert aber wenn ich das mit der Browser zurück funktion mache. Vielleicht hast du ja auch noch eine idee.

                  Danke für die Hilfe!

                  bjbenderTV

                  1. Hallo bjbenderTV,

                    das Problem das, dass mit der

                    hä?

                    das Problem, dass das mit der

                    so!

                    das die Daten des Formulars im Formular nicht mehr wiedergegeben wird.

                    (dass die Daten...)

                    Eine Session-ID wird von PHP über einen Session-Cookie von Seite zu Seite weitergeleitet, d.h. wenn Du auf einer Webseite bleibst (z.B. ein Wechsel von example.org/bj/uebersicht.php nach example.org/bj/bestell.php), dann sollte auch der Cookie und damit die Session erhalten bleiben.

                    Vielleicht wird deine Session nicht gestartet? Entweder muss dazu in der php.ini der Schalter session.auto_start auf 1 stehen, oder Du musst die session_start() Funktion aufrufen. Das Speichern der Session findet beim Beenden des PHP-Requests immer automatisch statt.

                    Wenn Du den "Zurück" Button drückst, wird der Server nicht immer kontaktiert, d.h. du siehst Feldinhalte dann möglicherweise aus dem Browser-Cache.

                    Rolf

                    --
                    sumpsi - posui - clusi
                  2. Hallo bjbenderTV,

                    ich habe mich jetzt noch einmal mit der Materie beschäftigt. Um sicher zu sein, dass Du eine Session hast, gib auf der ersten Seite den Wert der Funktion session_id einmal mit echo aus.

                    Wenn nicht: prüfe deine PHP.INI. Was ist für session.auto_start eingestellt? Wenn Du nicht in die php.ini hineinschauen kannst, rufe den Wert mit ini_get ab, oder schreibe Dir eine kleine Seite dieser Art:

                    <?php
                    phpinfo();
                    

                    Damit bekommst Du alle INI-Werte ausgegeben. So eine Seite darf aber niemals auf einem produktiven Webserver stehen, sie verrät Hackern zu viel über dein System.

                    Wenn Du session.auto_start nicht setzen kannst oder willst, dann kannst Du zu Beginn deines PHP-Teils auch session_start() aufrufen, und zwar garniert mit einer Abfrage, ob es überhaupt nötig ist (sonst gibt's eine Fehlermeldung wenn auto_start doch gesetzt ist oder du das zweimal tust):

                    if (session_status() == PHP_SESSION_NONE)
                       session_start();
                    

                    Was bei Sessions auch ein Problem sein kann, ist der Ablageort der Sessions. Per Default ist es /tmp, aber das funktioniert nicht falls Du unter Windows bastelst (so wie ich hier). Da musst Du in der PHP.INI oder vor dem Start der Session den save_path auf etwas sinnvolles setzen (was aber bei auto_start nicht klappt). Unter Windows ist es auch sinnvoll, / statt \ zu schreiben (weil nämlich \ nur als \ funktioniert)

                    Rolf

                    --
                    sumpsi - posui - clusi
      3. @@bjbenderTV

         <fieldset>
        
                 <input name="name"placeholder="Name" type="text">
                 </fieldset>
        

        Ein fieldset ohne legend macht wohl wenig Sinn (auch wenn die HTML-Spec das nicht vorschreibt). fieldset macht hier aber überhaupt keinen Sinn, denn es dient zur Gruppierung mehrerer zusammengehörender Eingabefelder.

        Die HTML-Spec schreibt aber Leerzeichen zwischen Attributen vor (hier zwischen name="name" und placeholder="Name".

        Das placeholder-Attribut macht hier aber überhaupt keinen Sinn (das tut es in den allermeisten Fällen nicht). Eingabefelder brauchen eine richtige Beschriftung – ein label.

        Mach daraus:

        	<label>
        		<span>Name:</span>
        		<input name="name">
        	</label>
        

        Und das bei den anderen Feldern ebenso. type="text" brauchst du nicht angeben. Die anderen Werte wie "email" und "tel" aber.

        Im Stylesheet dann noch:

        label > span { display: block }
        

        Wenn da noch ein Rahmen drumrum soll (wozu eigentlich?):

        label { border: thin solid silver; padding: 0.5em }
        

        "Ihre E-Mail"
        

        „Ihre“ ist überflüssig. Weg damit! Und das bei den anderen Feldern ebenso.

        "Ihre Stadt"
        "Ihre PLZ"
        "Ihre Adresse(Straße,Nr.)"
        

        Du klempst. Sowohl vor ( als auch nach dem Komma gehört ein Leerzeichen.

        „Stadt“ ist keine gute Beschriftung. Sollen Nutzer, die auf dem Land wohnen, nicht bestellen dürfen?

        „Adresse“ ist keine gute Beschriftung; Ort und PLZ (die auch zur Adresse gehören) hast du ja schon abgefragt.

        Du solltest die übliche Reihenfolge einhalten:

        "Straße, Nr."
        "PLZ"
        "Ort"
        

        Diese 3 Felder gehören zusammen, die könnte man in einem fieldset mit <legend>Adresse</legend> gruppieren – muss man aber nicht.

                  <button id="reset"  type="reset">Bestellung Abrechen</button>
        

        Ein Reset-Button macht hier überhaupt keinen Sinn (das tut es in den allermeisten Fällen nicht). Weg damit!

        LLAP 🖖

        --
        „Wer durch Wissen und Erfahrung der Klügere ist, der sollte nicht nachgeben. Und nicht aufgeben.“ —Kurt Weidemann
  2. Liebe(r) bjbenderTV,

    Du möchtest Dich mit Sessions beschäftigen. Wirklich jetzt. Damit kannst Du die Eingaben eines Benutzers zwischen verschiedenen Seitenaufrufen sozusagen in Erinnerung behalten.

    Desweiteren möchtest Du Formulare in HTML mit semantischem Code sinnvoll auszeichnen und mit CSS passend gestalten. Dafür haben wir hier ein Tutorial. Für Formulare und ihr Zusammenspiel mit PHP haben wir auch eins. Die Kenntnis dieser Tutorials setze ich jetzt einfach voraus.

    Mein Problem ist das ich nicht Weiß wie ich die Eingaben bzw. Namen wieder im Formular anzeigen lassen kann.

    Die Eingabefelder kennen eine Möglichkeit der Vorbelegung mit Inhalt (auch mehrzeilig). Mit PHP kann man das erreichen. Hier kommt das Zusammenspiel mit den oben erwähnten Sessions zum tragen, da Du vielleicht dem User anbieten möchtest, dass er einen Schritt zurück geht. Je nachdem wie Du es machst, ist es vielleicht möglich, auf $_POST-Werte zurück zu greifen, oder vielleicht auch nicht. Wenn der User die Seite aber später erneut aufruft, z.B. weil er zwischen zeitlich etwas anderes gemacht hat, dann kann die Session dort weiter machen, wo zuletzt unterbrochen wurde.

    Liebe Grüße,

    Felix Riesterer.