Mit $_POST valiabeln über mehrere Links hinweg speichern?

  • Hallo erstmal,

    ich bin doch noch "recht" unerfahren was php angeht, doch ich lerne schnell.

    Jetzt versuche ich mich an einer website, mit der es möglich ist, kleine grußkarten zu erstellen. Man kann das layout, text, farben und fotos auswählen udn zusammenstellen. die dabei eingegebenen daten sollen mittels POST übergeben werden. Natürlich funktioniert der generator über 4 seiten hinweg, der user fügt also weitere daten hinzu (text), klickt auf weiter, fügt einen anderen wert hinzu (hintergrundfarbe).

    Zum Schluss möchte ich dann die werte in einer Datenbank ablegen.

    Nun muss ich aber erstmal soweit kommen, dass die werte bis zum abspeichern im letzten Schritt erhalten bleiben. Kann mir da jemand weiterhelfen?

    Also Kurzform:

    Wie speichere ich Daten und Werte über mehrere Seiten hinweg?


    Gruß

    max

  • Zwei Möglichkeiten:
    1.) mit Sessions
    http://de.php.net/session
    2.) mit hidden-Feldern für die Formulare auf den Folgeseiten, über die du die bisher eingegebenen Daten weiter übergibst.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Wobei gesagt werden sollte, dass das mit Session eleganter zu lösen ist. Zumal man damit auch ein "Zurück" problemlos hinbekommt.

  • Dankeschön, also sessions...

    was ist das? ich habe mich jetzt ein wenig belesen und muss sagen: das klingt recht kompliziert...

    Muss ist dort erst scripte auf meinem server installieren und cockies speichern lassen?

    Ob Ihr mir vllt. den grundbefehl zeigen könntet?

    unter: http://de.php.net/manual/de/session.configuration.php

    sind ja so viele Befehle aufgelistet und ich weis nicht, welche ich davon benutzen soll.


    vielen Dank

    Gruß

    Max

  • Ein Testbeispiel

    Siehe http://tut.php-quake.net/de/sessions.html

  • Du schreibst an den Anfang deines Skriptes, VOR jeder ausgabe ein

    PHP
    session_start();

    Danach hast du den $_SESSION Array verfügbar der auch über mehrere Seitenaufrufe hinweg gespeichert wird.

    Nach dem Abschicken eines Formulars speicherst du die eingegebenen Werte im session-array und hast sie darüber dann auch auf den Folge-Seiten zur Verfügung:

    PHP
    $_SESSION['feld1'] = $_POST['feld1'];
    $_SESSION['feld2'] = $_POST['feld2'];
    usw.

    Ist also gar nicht so kompliziert wie es aussieht. :)

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Habe das Beispiel gerade auf meinen server geladen:

    Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /var/www/web120084/html/ecards/session1.php:8) in /var/www/web120084/html/ecards/session1.php on line 9


    so also ich denke das problem ist, dass sessions nicht aktiviert sind. hab n linux server und session.auto_start ist auf OFF :(

    wie kann ich das umstellen? oder liegt es doch woanders ?

  • Nein es liegt nicht daran, dass du keine Sessions aktiviert hast, sondern daran, dass du vorher schon eine Ausgabe an den Browser hattest.
    session_start(); <-- das muß ganz am Anfang deiner Datei stehen, auch keine Leerzeilen oder -zeichen davor.
    Edit: session.auto_start <-- das ist egal, das hat nichts mit der Verfügbarkeit von sessions zu tun, sondern nur damit wie sie gestartet werden. Wenn das auf "ON" steht brauchst du halt das session_start(); nicht.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • Die Antworten richtig lesen hilft manchmal. ;)


    PHP
    <?php session_start(); ?>
    <html>
    <head>
    <title>meine seite</title>
    </head>
    <body>
    lorem ipsum
    </body>
    </html>

    So ist's gemeint ;)
    die Erste Zeile:

    PHP
    <?php session_start(); ?>


    muss in jeder Datei in der du die Variablen benutzen möchtest auch an erster Stelle sein :idea:

    Der frühe Vogel fängt den Wurm,
    aber die zweite Maus bekommt den Käse.

  • danke super leute also das beispiel hat schonma geklappt :) mal gucken wie es weitergeht

    also erstmal vielen dank...ich werd später sicher wieder nicht weiterkommen... ich versuchs mal ;)


  • muss in jeder Datei in der du die Variablen benutzen möchtest auch an erster Stelle sein


    Nein, muss nicht!

    PHP
    <?php
    
    
       $var1 = 1;
       $var2 = 2;
       $var3 = 3;
       $var4 = 4;
    
       session_start();
    ?>

    Wichtig ist, vor irgendeiner Ausgabe, und sei es nur ein Leerzeichen!

  • Nein, muss nicht!

    PHP
    <?php
    
    
       $var1 = 1;
       $var2 = 2;
       $var3 = 3;
       $var4 = 4;
    
       session_start();
    ?>

    Wichtig ist, vor irgendeiner Ausgabe, und sei es nur ein Leerzeichen!

    Richtig. Wenn man z.B. objektorientiert programmiert müssen klassendeklarationen VOR dem session_start(); stehen, wenn man Objekte in der Session speichern will. Andernfalls könne diese nicht wieder intialisiert werden.

    "Programming today is a race between software engineers
    striving to build bigger and better idiot-proof programs,
    and the universe trying to build bigger and better idiots.
    So far, the universe is winning."
    Rick Cook

  • ach noch was: was ist eigentlich, wenn der user cockies deaktiviert hat?? wird dann automatisch eine zufallszahl generiert und an die url gehängt oder muss ich das noch einbauen??