Problem mit http / https Links und Session

Auch nach Update auf 4.5.2 haben wir in unserem Shop noch immer das Problem, das vereinzelt beim Klick auf (hardcoded) http Links der warenkorb (also die session) flten geht.

Der Bug sollte ja eigentlich mit 4.5.1 behoben sein. Oder liegt das dran, dass man tatsächlich keinerlei hardcoded also absolute Links bspw. in CMS Seiten setzen darf?

Auch ist mir nicht ganz klar (obwohl ich das Forum auf den Kopf gestellt habe) ob der force_sid Parameter, der dann vereinzelt in der URL auftaucht jetzt so gewollt ist oder nicht? Der taucht bei uns nämlich auf obwohl er in der config deaktiviert ist…

:slight_smile:
Und ich dachte wir wären alleine mit diesem Problem. (haben es aber mittlerweile in den Griff bekommen)

hardcodete Links sind nicht so toll. Lieber die im Shop eingebauten Funktionen benutzen. Z.B: die oxVIewConfig hat ja paar Funktionen, die z.B. die Shop-BaseURL liefern oder je nach Modus http:// oder https://.
(Sourcecode Docu: http://docu.oxid-esales.com/CE/sourcecodedocumentation/ einfach auf 4.5.2. klicken und oxViewConfig eingeben)

es sieht so aus:
force_sid wird dann (im Idealfall, wenn alles richtig funktioniert) an die Links angehängt, wenn ein Wechsel vom HTTPS ins HTTP Modus erfolgt, also aus dem Bestellprozess / Seiten mit Formularen auf z.B: eine CMS Seite (die ja nicht verschlüsselt werden muss).
die Session ID braucht man eben um den Warenkorb nicht zu verlieren.

Da ihr ja auf 4.5.2 aktualisiert habt, nehme ich an, dass es keine Probleme mit dem Miniwarenkorb gibt. (Rauswurf aus der Session wenn man nach dem 2. Bestellschritt auf eines der Produkte im Miniwarenkorb klickt)

Die Links auf CMS Seiten haben wir alle so eingebunden:


[{oxifcontent ident="XXX" object="oContent"}]
<a href="[{if $oViewConf->isSsl() }][{ $oCont->getLink()|replace:"http://":"https://"}][{else}][{ $oCont->getLink()}][{/if}]">[{ $oContent->oxcontents__oxcontent->value }]</a>
[{/oxifcontent}]

$oViewConf->isSsl() sagt true wenn https aktiv ist, dann wird mit Hilfe des Smarty Modifikators http durch https ersetzt.
Da wird zwar die force_cid angehängt, es hat aber keine Auswirkung.

Hardgecodete (interne) Links

http[b][{if $oViewConf->isSsl() }]s[{/if}][/b]://www.mein-shop.de/seite-x-y.html

ist eigentlich selbsterklärend :slight_smile:

Oder wenn man einfach irgendwo die force_sid anhängen möchte:

[{ if $oViewConf->isSsl() }][{assign var="ssl" value=$_product->getSession() }]?force_sid=[{ $ssl->getId()}]&[{/if}]

Hier dürfen allerdings keine anderen URL Parameter vorhanden sein, sonst müsste man “?” durch eine “&” ersetzen oder es über Smarty lösen.

Wenn du LightBox bzw ColorBox benutzt, dann könntest du folgenden Code für deine js Datei gebrauchen:


var autoSslUrl = ("https:" == document.location.protocol) ? "https://www.mein-shop.de/" : "http://www.mein-shop.de/";
$("a[href='#xxx']").colorbox({width: "600px",height: "70%", iframe:true, href: autoSslUrl+"/cms-seite/"});

Sonst sind unsere Anpassungen auf bestimmte Anwendungsfälle gebunden und auch auf der PHP Ebene gewesen.

Grüße