Michael W.: session_register()

Hallo,

Ich habe mich jetzt den ganzen tag damit beschäftigt und ich bekomme das warenkorb system nicht auf die reihe (ich brauche normalerweise um etwas auf die reihe zu kriegen eine halben tag).

gibt es denn nicht ein einfaches beispiel script wo ich es mir abschauen kann ?

und wegen diesen session_start() muss das vor jedes script auf jeder seite wo ich die session halten möchte ?
und warum überschreibt das script wenn ich reloade - dafür ist doch die session da oder nicht ?

ich möchte im prinzip folgendes:

seite1.php:

link1 - bei klick -> get text1 to array on seite1.php
link2 - bei klick -> get text2 to array on seite1.php

button - bei klick -> array übergeben an seite2.php

seite2.php:

array auslesen

ihr wisst doch was ich meine ...

Bitte helft mir
Danke

  1. » Ich habe mich jetzt den ganzen tag damit beschäftigt und ich bekomme das warenkorb system nicht auf die reihe (ich brauche normalerweise um etwas auf die reihe zu kriegen eine halben tag).

    Soso :)

    und wegen diesen session_start() muss das vor jedes script auf jeder seite wo ich die session halten möchte ?

    Ja.

    und warum überschreibt das script wenn ich reloade - dafür ist doch die session da oder nicht ?

    Kannst das auch mal präzise formulieren? Was überschreibt es?

  2. Hallo Michael,

    ich mache dann mal den Anfang (es wird bestimmt noch mehr Stimmen dazu geben, bzw. einige Nachfragen):

    gibt es denn nicht ein einfaches beispiel script wo ich es mir abschauen kann ?

    Ich geb' mal eiunen Hinweis auf ein allgemeines Session-Tutorial, das scheint mir erstmal nötig: http://develnet.org/tech/tutorials/1.1.html, villeicht kennt ja jmd. eines, das Sessions anhand eines Warenkorbes erklärt...

    und wegen diesen session_start() muss das vor jedes script auf jeder seite wo ich die session halten möchte ?

    Ja.

    und warum überschreibt das script wenn ich reloade - dafür ist doch die session da oder nicht ?

    Hmm? Was überschreibt das Skript? Die Variablen in der Session oder was meinst Du?

    ich möchte im prinzip folgendes:
    seite1.php:
    link1 - bei klick -> get text1 to array on seite1.php
    link2 - bei klick -> get text2 to array on seite1.php

    button - bei klick -> array übergeben an seite2.php

    seite2.php:

    array auslesen

    Also Deine Links könnten nach folgendem Schema aufgebaut sein: aufrufende Datei ($PHP_SELF)?add=Produktid, also z.B. <a href="seite1.php?add=12">Tolles Produkt</a>

    Die Seite wird daraufhin geladen und der Parameter add befindet sich in dem array $_GET und lässt sich mit $_GET["add"] auslesen und somit auch in der Session registrieren.

    Der Button: Dazu muss natürlich ein Formular vorhanden sein, welches beim Klick auf den Button aufgerufen wird. Am besten in einem "hidden"-Field die Session-ID gleich an die aufgerufene Seite mit übergeben.
    Die gespeicherten Session-Variablen sind dann (nach eröffneter Session, also session_start() ;-) ), auf der neuen Seite verfügbar und zwar (ab PHP 4.1 (?)) in dem Array $_SESSION (wenn register_globals auf on stehen).

    Du siehst etwas komplexer und ich kann Dir aus dem Stehgreif auch kein Warenkorbsystem hier hinmalen. Hast Du denn überhaupt schon mal versucht eine Variable per Session von a.php nach b.php zu bekommen?

    Gruss, stefan

    1. Ich geb' mal eiunen Hinweis auf ein allgemeines Session-Tutorial, das scheint mir erstmal nötig: http://develnet.org/tech/tutorials/1.1.html, villeicht kennt ja jmd. eines, das Sessions anhand eines Warenkorbes erklärt...

      da war ich schon

      Also Deine Links könnten nach folgendem Schema aufgebaut sein: aufrufende Datei ($PHP_SELF)?add=Produktid, also z.B. <a href="seite1.php?add=12">Tolles Produkt</a>
      Die Seite wird daraufhin geladen und der Parameter add befindet sich in dem array $_GET und lässt sich mit $_GET["add"] auslesen und somit auch in der Session registrieren.

      genau so hatte ich es mir auch gedacht, nur das wenn ich auf den 2 oder 3 link geklickt hab er dann die alten überschrieben hat. da müsste man im prinzip nur einen counter einbauen, oder, so dass es immer eine neue variable ist $save = $add.$counter;

      Hast Du denn überhaupt schon mal versucht eine Variable per Session von a.php nach b.php zu bekommen?

      da bin ich doch gerade dabei ...

      Michael W.

      1. genau so hatte ich es mir auch gedacht, nur das wenn ich auf den 2 oder 3 link geklickt hab er dann die alten überschrieben hat. da müsste man im prinzip nur einen counter einbauen, oder, so dass es immer eine neue variable ist $save = $add.$counter;

        Musst Du gar nicht. Du liest einfach zu Beginn des PHP-Skriptes die bisher gespeicherten Variablen in der Session aus. Eine davon sollte $cart[] sein, der Du dann den Inhalt von $add übergibst (beim ersten Aufruf natürlich beide leer, was Du berüksichtigen musst). In den neuen PHP-Versionen wird $_session["cart"] dann sogar ohne weiteres Zutun aktualisiert.

        Also etwa so (Rohkost!):
        session_start();

        $tmp_cart[]=$_SESSION["cart"];

        if (isset($_GET["add"])) { $tmp_cart[]=$_GET["add"]; $_SESSION["cart"]=$tmp_cart; }

        $add kann dann in der Folge ruhig überschrieben werden.

        btw: Ein Warenkorb ist definitv _nicht_ der leichteste Einstieg, sich mit Sessions auseinander zu setzen!

        Welche PHP-Version nutzt Du?

        1. btw: Ein Warenkorb ist definitv _nicht_ der leichteste Einstieg, sich mit Sessions auseinander zu setzen!

          ja OK, aber ich habe es inzwischen geschafft ein array mit einer session an eine ander seite zu übergeben.

          Welche PHP-Version nutzt Du?

          die bei triod und dann bei unique hosting. Ob das jetzt PHP3 oder 4 ist weiß ich nicht - ich gehe bei beiden von PHP4 aus.

          1. die bei triod und dann bei unique hosting. Ob das jetzt PHP3 oder 4 ist weiß ich nicht - ich gehe bei beiden von PHP4 aus.

            Es geht um feinere Abstufungen, da PHP ab Version 4.1.2 oder so, das Handling der globalen Variablen geändert hat...

            1. die bei triod und dann bei unique hosting. Ob das jetzt PHP3 oder 4 ist weiß ich nicht - ich gehe bei beiden von PHP4 aus.

              Es geht um feinere Abstufungen, da PHP ab Version 4.1.2 oder so, das Handling der globalen Variablen geändert hat...

              aha. es ggibt doch einen befehl um zu gucken welche version drauf ist oder ?

              ich habe mal versucht deine befehle umzusetzen allerdings kann ich nix mit anfangen:

              <?php
              session_start();

              $tmp_cart[] = $_SESSION["cart"];
              if (isset($_GET['nr']))
              {
              $tmp_cart[] = $_GET['nr'];
              $_SESSION["cart"] = $tmp_cart;
              }
              echo $_SESSION;
              ?>
              <br>
              <br>
              <br>
              <a href="karte.php?nr=001">001</a>
              <a href="karte.php?nr=002">002</a>
              <a href="karte.php?nr=003">003</a>
              <br>
              <br>
              <a href="liste.php">weiter ...</a>

              ????

              Danke