Elegante Lösung für SESSIONs

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Elegante Lösung für SESSIONs

    Hallo,

    ich bin auf der Suche nach einer 'eleganten' oder evtl. sogar DER Lösung zum Benutzen von sessions. Ich habe mir eine Menge Erläuterungen zu den einzelnen PHP-Funktion bzgl. sessions angeschaut, finde aber nirgends eine Information, welche Dinge wirklich nötig sind.

    Vorneweg eine andere Frage: Ich habe einen PHP/MySQL-fähigen Webspace angemietet und auch schon einige PHP-Dateien zum laufen gebracht. Wie finde ich heraus, welche PHP-Version auf dem Server installiert ist?


    Zum eigentlichen Problem: Ich möchte eine Seite haben, die je nach Benutzereingaben anders aussieht. Einfaches Beispiel: eine Photogalerie. Dazu habe ich folgendes Script geschrieben:

    PHP-Code:
    <?
    if(!session_id()){
      session_start();    // Start einer SESSION, wenn noch keine vorhanden ist.
    session_register(pic);
    session_register(picnum);
    }
    settype($pic,"integer");
    settype($picnum,"string");

    switch ($aktion) {

    case "prev":

        if($pic<2)
        {
            $pic = 42;
        }else{
            $pic = $pic - 1;
        }
        $picnum = $pic;
        if($pic<10){
        $picnum="0".$pic;
    }
        break;

    case "next":

        if($pic > 41)
        {
            $pic = 1;
        }else{
            $pic = $pic + 1;
        }
        $picnum = $pic;
        if($pic<10){
        $picnum="0".$pic;
    }
        break;

    case "Direkt":
        $pic = $dirpic;
        $picnum = $dirpic;


    }
    if($pic==0){
    $pic = 1;
    $picnum="01";
    }

    ?>

    </HEAD>
    <BODY>

    <h1>Bilder von Antonia</h1>
    <center>
    <table width="650">
    <tr>
    <td colspan="4"><img src="<?echo $picnum?>.jpg" width="640"></td></tr>
    <tr height="35"><td>
    <FORM METHOD="post" ACTION="<? $_SERVER['PHP_SELF'] ?>">
    <input type="hidden" name="aktion" value="prev">
    <INPUT TYPE="submit" NAME="buttonprev" VALUE="Vorheriges Bild">
    </FORM>

    </td><td>

    Bild <?echo $picnum?> von 42

    </td><td>

    <form>
    <input name="dirpic" type="text" size="2" maxlength="2"><INPUT TYPE="submit" NAME="aktion" VALUE="Direkt">
    </form>

    </td><td>
    <FORM METHOD="post" ACTION="<? $_SERVER['PHP_SELF'] ?>">
    <input type="hidden" name="aktion" value="next">
    <INPUT TYPE="submit" NAME="buttonnext" VALUE="Nächstes Bild">
    </FORM>
    </td></tr>
    </table>
    </center>
    </BODY>
    </HTML>
    Das klappt auch soweit ganz gut. Wird die Seite zum ersten mal geladen, hat die variable $pic ja keinen Wert und wird auf '1' gesetzt.

    Gibt es eine bessere Methode, die einleitenden Zeilen zu schreiben?

    Weiterhin habe ich die Startseite ebenso aufgebaut, aber so modfiziert, dass an Stelle der 'normalen' Buttons eigene eingefügt werden, dazu wurde aus z.B.

    PHP-Code:
    <INPUT TYPE="submit" NAME="buttonnext" VALUE="Nächstes Bild"
    folgendes

    PHP-Code:
    <INPUT TYPE="image" NAME="buttonnext" src="nextpic.gif"
    Nun funktioniert die Seite aber nicht mehr, d.h. der neue Wert der Variable wird nicht mehr übergeben. Der Code für die Startseite sieht folgendermaßen aus:

    PHP-Code:
    <?
    if(!session_id()){
      session_start();
      session_register(rubrik);
      settype($rubrik,"string");
    }


    ?>
    <body>

    <span class="aundp_NO">Antonia Sophie</span>

    [b]<FORM METHOD="get" ACTION="<? $_SERVER['PHP_SELF'] ?>">
    <input type="hidden" name="rubrik" value="asb">
    <input type="image" src="orange/info.gif">
    </FORM>[/b]

    <br><br>

    <span class="aundp_NO">DBC-Forum</span>
    <a href="#"><img src="orange/info.gif" width="18" height="18" border="0"></a></td>

    <?
    if ($rubrik!="") {

    switch ($rubrik) {
    case "asb":
    ?><span class="text">Informationstext zu Antonia und ein Link zur Photogalerie</span><?
    break;

    case "DBC":
    ?><span class="text">Das DBC-Forum ist eine Online-Plattform...undsoweiterundsofort</span><?
    break;

    }
    }
    ?>

    </body>
    </html>
    Wird die Seite geladen, soll keine Information zu einer Rubrik (Antonia ODER DBC-Forum) angezeigt werden. Wenn man dann aber auf das info.gif hinter 'Antonia' klickt, soll die entsprechende Information angezeigt werden, passiert aber nicht.

    Wenn ich die Variablen mit GET übergebe, wird in der URL-Leiste index.php?rubrik=asb korrekt angezeigt, aber der Inhalt fehlt dennoch.

    Was habe ich übersehen?

  • #2
    /me schenkt dir viele \n und <br>
    Sunshine CMS
    BannerAdManagement
    Borlabs - because we make IT easier
    Formulargenerator [color=red]Neu![/color]
    Herkunftsstatistik [color=red]Neu![/color]

    Kommentar


    • #3
      IMHO brauchst du das
      PHP-Code:
      if (!session_id()); 
      gar nicht, solange du diese Datei nicht in einer anderen PHP-Datei inkludierst, die eventuell auch eine session startest.
      An sich musst du die session nämlich sowieso bei jedem Seitenaufruf starten.
      Auf jedenfall wäre es besser (sicherer) vor
      PHP-Code:
      session_start(); 
      noch mit
      PHP-Code:
      session_name("irgendwas"); 
      einen eigenen Session-Namen festzulegen.

      Kommentar


      • #4
        Re: Elegante Lösung für SESSIONs

        Für das Problem mit den Buttons, empfehle ich mal einen Blick auf selfhtml oder einfach print_r($_GET) oder print_r($_POST) (vielleicht noch pre-Tags drum?)

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Also meine Datei beinhaltet jetzt folgenden Start:

          PHP-Code:
          <?
            session_name("mainVisit");
            session_start();
            settype($rubrik,"string");
            print_r($_POST);
            print_r($_SESSION);
          ?>
          Als Ausgabe erhalte ich nun z.B.:

          Code:
          Array ( [rubrik] => asb [x] => 9 [y] => 4 ) Array ( [rubrik] => dbc )
          D.h. ich habe auf den Formular-Button für 'asb' gedrückt (wird ja per POST weitergegeben, aber in $_SESSION ist immer noch der erste Klick 'dbc' gespeichert.

          Wie kann ich diesen Wert beim Anklicken des Formbuttons ändern?

          Kommentar


          • #6
            Original geschrieben von kabeljau
            Wie kann ich diesen Wert beim Anklicken des Formbuttons ändern?
            in dem du den gerade übergebenen wert zuweist ...?
            I don't believe in rebirth. Actually, I never did in my whole lives.

            Kommentar


            • #7
              Hey danke, ich dachte, dass per Formular die Variablen automatisch aktualisiert werden (im POST war es ja immer richtig), aber anscheinend habe ich zuviel erwartet.

              Mit
              PHP-Code:
              $_SESSION[rubrik] = $_POST[rubrik]; 
              klappts jetzt einwandfrei. Danke nochmal...

              Kommentar

              Lädt...
              X