CMS_LINK fügt Contenido-ID hinzu

Gesperrt
MAE
Beiträge: 11
Registriert: Di 24. Jun 2003, 14:29
Kontaktdaten:

CMS_LINK fügt Contenido-ID hinzu

Beitrag von MAE » Mo 30. Jun 2003, 09:08

Hallo zusammen,

hab ein Problem mit dem CMS_LINK Platzhalter (wie andere auch, leider im flaschen Thread geposted: http://www.contenido.de/forum/viewtopic.php?p=4846#4846).

Wenn man mit CMS_LINK im Editor einen Link definiert, dann wird offensichtlich die Contenido-ID mit in die URL eingebaut.

In der Klasse "session" (File session.inc) findet man eine Funktion url die beim Ersetzen von CMS_LINK gerufen wird:

Code: Alles auswählen

  function url($url) {
  	
    // Remove existing session info from url
    $url = ereg_replace(
      "([&?])".quotemeta(urlencode($this->name))."=".$this->id."(&|$)",
      "\\1", $url);

    // Remove trailing ?/& if needed
    $url=ereg_replace("[&?]+$", "", $url);

    switch ($this->mode) {
      case "get":
        $url .= ( strpos($url, "?") != false ?  "&" : "?" ).
                urlencode($this->name)."=".$this->id;
      break;
      default:
        ;
      break;
    }
Kann mir jemand sagen wozu hier am Ende diese Switch Anweisung steht, die ist nämlich dafür verantwortlich dass die Links entsprechend erweitert werden.

Bsp.:

Code: Alles auswählen

http://localhost/xxxxxx/cms/front_content.php?idcatart=64&contenido=ed8fe7286c671abd6403d9212c5219b8

Joerg
Beiträge: 11
Registriert: Di 17. Sep 2002, 17:08
Kontaktdaten:

Re: CMS_LINK fügt Contenido-ID hinzu

Beitrag von Joerg » Mo 30. Jun 2003, 12:21

Hallo 'MAE',
MAE hat geschrieben:Kann mir jemand sagen wozu hier am Ende diese Switch Anweisung steht, die ist nämlich dafür verantwortlich dass die Links entsprechend erweitert werden.
Die Session-Klasse der PHPLib in session.inc speichert die SessionID in cookies - wenn der Browser cookies akzeptiert. Falls das nicht der Fall ist, wird die SessionID an die URL angehängt.

Viele Grüße,
Joerg

MAE
Beiträge: 11
Registriert: Di 24. Jun 2003, 14:29
Kontaktdaten:

Beitrag von MAE » Mo 30. Jun 2003, 12:22

Stimmt genau, jetzt habe ich cookies nicht aktiv und setze einen Link im Editor und schon steht die Contenido-ID im Link, oder sehen ich das falsch?

Gruß Mathias

Joerg
Beiträge: 11
Registriert: Di 17. Sep 2002, 17:08
Kontaktdaten:

Beitrag von Joerg » Mo 30. Jun 2003, 12:34

Weiss nicht, mach's doch mal und sag's uns :-)

Falls ja, wäre das ja wohl nicht so praktisch für websites, die die Contenido-Session nutzen. Ein Besucher mit cookie verweigerndem Browser würde nach Klick auf Deinen Link seine Sitzung verlassen. Die ID unter der Du den Link erzeugt hättest, wäre dann sicher ungültig.

Viele Grüße,
Joerg

duskyshark
Beiträge: 24
Registriert: Mi 11. Jun 2003, 16:14
Kontaktdaten:

Beitrag von duskyshark » Do 3. Jul 2003, 00:43

MAE hat geschrieben:Stimmt genau, jetzt habe ich cookies nicht aktiv und setze einen Link im Editor und schon steht die Contenido-ID im Link, oder sehen ich das falsch?

Gruß Mathias
Nicht ganz:
Ich habe Cookies AKTIV, setze einen Link im Editor und schon steht die Contenido-ID im Link und ich bekomme beim Klicken des Links im Frontend halt eine weisse Seite angezeigt, wenn ich nicht mehr eingeloggt bin...


Gruß, noch ein Jörg

MAE
Beiträge: 11
Registriert: Di 24. Jun 2003, 14:29
Kontaktdaten:

Beitrag von MAE » Do 3. Jul 2003, 07:23

Hallo,

das ist richtig, bei mir ist das ebenfalls der Fall. Wenn man den Sourcecode durchsucht wird die Klasse Session (default auf Cookie) auch noch einmal abgeleitet -> Contenido_Session

Code: Alles auswählen

class Contenido_Session extends Session {

  var $classname = "Contenido_Session";

  var $cookiename     = "contenido";        ## defaults to classname
  var $magic          = "123Hocuspocus";    ## ID seed
  var $mode           = "get";              ## We propagate session IDs with cookies
  var $fallback_mode  = "cookie";
  var $lifetime       = 0;                  ## 0 = do session cookies, else minutes
  var $that_class     = "Contenido_CT_Sql"; ## name of data storage container
  var $gc_probability = 5;
}
Hier wird der mode auf get gestellt, warum weiss ich auch nicht. Ich habe das Problem dadurch gelöst, dass ich die DB gepatcht habe.

Wenn man nach CMS_LINK sucht findet man in con_type drei Treffer. Dort den CMS_LINK Eintrag ändern:

Code: Alles auswählen

...........
/* internal link */if ( is_numeric($tmp)){

    // offensichtilch nicht korrekt !!!
    //$tmp = $sess->url("front_content.php?idcatart=$tmp");   

    $tmp = "front_content.php?idcatart=". $tmp;

} elseif ( substr($tmp,0,6) == "mailto" ) 
..............
und schon funktioniert alles.

Gruß Mathias

duskyshark
Beiträge: 24
Registriert: Mi 11. Jun 2003, 16:14
Kontaktdaten:

Beitrag von duskyshark » Do 3. Jul 2003, 12:26

Ja danke!!! :)
Jetzt läufts bestens...

Gruß, Jörg

Gesperrt