Startseite
  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche
Startseite › Forum › Drupalcenter.de › Module › Modul-Entwicklung ›

[Gelöst] SESSION wird nicht korrekt aus DB gelesen

Eingetragen von Torakas (4)
am 22.05.2014 - 09:59 Uhr in
  • Modul-Entwicklung
  • Drupal 6.x

Hi Leute,

ich bin seit mehr als 2 Tage an einem Thema an dem ich bald an meinem Verstand zweifel weil es nicht so funktioniert wie es eigentlich sein sollte.

Ich schreibe derzeit an einem Code der innerhalb eines Contents ausgeführt werden soll. Dieser Code soll nur überprüfen ob die Node bzw. der Alias Pfad mit einem GET Parameter aufgerufen wurde und verändert dann so einen Link im Text des Artikels.

Wenn also der Beitrag mit einem GET Parameter aufgerufen wird dann wird dieser in die $_SESSION geschrieben und danach die selbe Seite mittels drupal_goto ohne GET Parameter neu geladen. Dabei liest der Code aus der aktuellen $_SESSION die den geschrieben GET Parameter und setzt den Link entsprechend um.

Das schreiben in die Session funktioniert einwandfrei, jedenfalls kommt in die Drupal Tabelle "sessions" mit dem korrekten Wert an (In der user Tabelle gibt es einen User mit uid = 0, dies ist geprüft).

Beim Neuladen bzw. Refresh der Seite wird aber der Wert nicht korrekt aus der Session gelesen. Der Wert ist meinstens ein alter aus den vorherigen versuchen. Ich habe zum Teil den Browser Cache im verdacht, aber diesen habe ich bereits abgeschaltet bzw. habe die Seite komplett neu laden lassen (Cache leeren und vollständig aktualisieren z.B. in Google Chrome).

Hier mal der PHP Code:

<?php
    drupal_set_html_head
('<meta http-equiv="expires" content="0" />');
   
drupal_set_html_head('<meta http-equiv="cache-control" content="no-cache" />');
   
drupal_set_html_head('<meta http-equiv="pragma" content="no-cache" />');

   
// Drupal Globale Variable abrufen
   
global $base_url;
   
    echo
"Aktuelle Session PID: ".$_SESSION['mpid']."\n";
   
   
$pid = 0;
   
$url = "https://www.example.de?pId=";
   
   
// Wenn die Seite mit GET Parameter aufgerufen wird dann liefert
    // die Funktion am Ende "/index.php". Dies muss entfernt werden.
   
$currentpath = str_replace("/index.php", "", drupal_get_path_alias($_GET['q']));
   
   
// mpid bereits angelegt?
   
if (!isset($_SESSION['mpid'])) {
       
        echo
"Write init PID to Session: ".$pid."\n";
       
$_SESSION['mpid'] = $pid;
    }
   
    if (isset(
$_GET["pid"]))
    {
       
//GET Parameter pid gesetzt
       
$pid = (int)$_GET["pid"];
       
       
$_SESSION['mpid'] = $pid;
        echo
"Write _GET PID to Session: ".$_SESSION['mpid']."\n";
       
       
// Lade die aktuelle Seite neu ohne GET Befehl.
       
drupal_goto($base_url.'/'.$currentpath, "");
    }
    elseif (isset(
$_POST["pid"]))
    {
       
//POST Parameter pid gesetzt
       
$pid = (int)$_POST["pid"];
       
       
$_SESSION['mpid'] = $pid;
    }
    else
    {
       
// PID aus der Session lesen
       
$pid = $_SESSION['mpid'];
        echo
"Get PID from session : ".$pid."\n";
    }

    echo
"Current pid: ".$pid."\n";

    switch (
$pid) {
        case
1: // xyz
           
$partnerId = "xyz"; break;       
        default:
           
$partnerId = "abc"; break;
    }   
?>


<a href="<?php echo $url.$partnerId; ?>">Das ist ein Beispiel.&nbsp;&nbsp;</a>

Ich hoffe das mir jemand helfen kann, ich bin wirklich am verzweifeln das es nicht klappt. Bitte verzeiht auch wenn dies nicht der korrekt bereich ist, habe kein anderen passenden bereich gefunden.

Danke schon mal für Eure Hilfe.

Gruß,
Torakas

‹ [gelöst] Hook_Node_Presave und automatischer Titel/URL-Alias [Gelöst] SESSION wird nicht korrekt aus DB gelesen ›
  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Torakas, leider ist

Eingetragen von Hyp1 (1463)
am 22.05.2014 - 10:08 Uhr

Hallo Torakas,

leider ist nicht ersichtlich, wo oder wie Du den obigen code ausführst.
Verwende mal Firebug um zu sehen, ob die obige Seite aus dem Browser Cache geladen wird (Status 304).
Wird die Seite vom Server geladen sollte der HTTP Status 200 sein.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Robert, werde ich mal

Eingetragen von Torakas (4)
am 22.05.2014 - 11:55 Uhr

Hallo Robert,

werde ich mal prüfen. Schreibe später dazu das Ergebnis.

Wenn ich ein neuen Betrag (Inhalt) erstelle dann kann ich Textkörper je nach dem was in Eingabeformat definiert ist (Full HTML oder PHP code) den PHP Code hinzufügen. Natürlich wurde es in diesem Fall das Eingabeformat auf PHP code gestellt und der PHP Code von oben mit reinkopiert.

Ich versteh halt auch nicht warum der Browser bei der Seite auf den Cache zugreift obwohl im Header die Ablaufzeit auf 0 Sekunden steht und das es nicht zwischengespeichert werden soll.

Gruß,
Torakas

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hi, der Browser sendet

Eingetragen von Hyp1 (1463)
am 22.05.2014 - 12:29 Uhr

Hi,

der Browser sendet üblicherweise einen HEAD Request (mit dem modified Datum der im lokalen Cache befindlichen Datei)
an den Server.
Ist das Datum gleich wie das Datum der im Cache befindlichen Datei meldet der Server 304 not modified.
Das wiederum bedeutet der Browser lädt die Datei aus dem lokalen Cache.

Eine Möglichkeit wäre in Deinem Code wenn Du einen Zeitstempel an Deinen URL hängst.

Zitat:

drupal_goto($base_url.'/'.$currentpath.'&'.time(), "");

Der Browser hält das dann für einen anderen URL und lädt Sie dadurch immer vom Server.

MfG

Robert

  • Anmelden oder Registrieren um Kommentare zu schreiben

Hallo Robert, mit dem

Eingetragen von Torakas (4)
am 22.05.2014 - 15:12 Uhr

Hallo Robert,

mit dem "&".time() läd er immer die Seite neu bei drupal_goto, das ist korrekt. Die PID ID ändert sich immer wieder so wie übergeben auch nach dem goto.

Der sind die Daten in die Session zu schreiben war es eigendlich das die PID Information nicht verloren geht wenn der Gast User doch vielleicht mal durch die anderen Beträge geht um sich umzuschauen. Sollte er dann wieder auf die Seite mit dem Link kommen soll der Link anhand der gespeicherten PID angepasst werden. Da aber durch das Menu der Alias aufgerufen wird und der Server wohl meldet das die Seite sich nicht verändert hat wird eine falsche Information aus dem Cache des Browsers geladen in der natürlich die falsche PID steht.

Ich weiss nicht ob dies der richtig Weg ist um die Information zu speichern bzw. kann man dem Server/Drupal sagen das diese Seite grundsätzlich neu geladen werden soll.

Wenn ich auf dem Holzweg bin, auch wegen dem Seiten Reload problem und Du/Ihr eine Idee habt wie man das lösen könnte wäre ich sehr danke für einen Tip bzw. kleines Beispiel bzw. Link zu einem Beispiel.

Gruß,
Torakas

  • Anmelden oder Registrieren um Kommentare zu schreiben

[Gelöst] SESSION wird nicht korrekt aus DB gelesen

Eingetragen von Torakas (4)
am 23.05.2014 - 09:15 Uhr

Hi zusammen,

ich habe selber die Lösung gefunden.

Es liegt nicht nur am Browser Cache sondern das Drupal auch die Seiten Cached, was ja auch gut ist und den Webserver nicht so belastet. Wenn man aber einzelne Seiten nicht gecache haben will kann man entweder das Module CacheExclude installieren und die URL eintragen oder man schreibt direkt im PHP Code oben folgendes rein damit der Cache dort wo der Code verwendet wird nicht verwendet wird.

$GLOBALS['conf']['cache'] = false;

wünsche allen ein schönes Wochenende.

Gruß,
Torakas

  • Anmelden oder Registrieren um Kommentare zu schreiben

Benutzeranmeldung

  • Registrieren
  • Neues Passwort anfordern

Aktive Forenthemen

  • für drupal11 ein Slider Modul
  • [gelöst] W3CSS Paragraphs Views
  • Drupal 11 neu aufsetzen und Bereiche aus 10 importieren
  • Wie erlaubt man neuen Benutzern auf die Resetseite zugreifen zu dürfen.
  • [gelöst] Anzeigeformat Text mit Bild in einem Artikel, Drupal 11
  • Social Media Buttons um Insteragram erweitern
  • Nach Installation der neuesten D10-Version kein Zugriff auf Website
  • Composer nach Umzug
  • [gelöst] Taxonomie Begriffe zeigt nicht alle Nodes an
  • Drupal 11 + Experience Builder (Canvas) + Layout Builder
  • Welche KI verwendet ihr?
  • Update Manger läst sich nicht Installieren
Weiter

Neue Kommentare

  • melde mich mal wieder, da ich
    vor 2 Wochen 3 Tagen
  • Hey danke
    vor 2 Wochen 3 Tagen
  • Update: jetzt gibt's ein
    vor 2 Wochen 4 Tagen
  • Hallo, im Prinzip habe ich
    vor 3 Wochen 1 Tag
  • Da scheint die Terminologie
    vor 3 Wochen 2 Tagen
  • Kannst doch auch alles direkt
    vor 3 Wochen 6 Tagen
  • In der entsprechenden View
    vor 3 Wochen 6 Tagen
  • Dazu müsstest Du vermutlich
    vor 3 Wochen 6 Tagen
  • gelöst
    vor 6 Wochen 2 Tagen
  • Ja natürlich. Dass ist etwas,
    vor 6 Wochen 3 Tagen

Statistik

Beiträge im Forum: 250233
Registrierte User: 20457

Neue User:

  • ByteScrapers
  • Mroppoofpaync
  • 4aficiona2

» Alle User anzeigen

User nach Punkten sortiert:
wla9461
stBorchert6003
quiptime4972
Tobias Bähr4019
bv3924
ronald3857
md3717
Thoor3678
Alexander Langer3416
Exterior2903
» User nach Punkten
Zur Zeit sind 0 User und 23 Gäste online.

Hauptmenü

  • » Home
  • » Handbuch & FAQ
  • » Forum
  • » Übersetzungsserver
  • » Suche

Quicklinks I

  • Infos
  • Drupal Showcase
  • Installation
  • Update
  • Forum
  • Team
  • Verhaltensregeln

Quicklinks II

  • Drupal Jobs
  • FAQ
  • Drupal-Kochbuch
  • Best Practice - Drupal Sites - Guidelines
  • Drupal How To's

Quicklinks III

  • Tipps & Tricks
  • Drupal Theme System
  • Theme Handbuch
  • Leitfaden zur Entwicklung von Modulen

RSS & Twitter

  • Drupal Planet deutsch
  • RSS Feed News
  • RSS Feed Planet
  • Twitter Drupalcenter
Drupalcenter Team | Impressum & Datenschutz | Kontakt
Angetrieben von Drupal | Drupal is a registered trademark of Dries Buytaert.
Drupal Initiative - Drupal Association