Go to main content

Textpattern CMS support forum

You are not logged in. Register | Login | Help

#1 2006-04-08 21:09:18

mapu
Member
From: Munich, Germany
Registered: 2004-03-16
Posts: 141

[de-de] Code nur bei NICHT eingeloggten Usern ausführen?

Der Statistik-Thread brachte mich wieder einmal auf ein Feature, das meiner Meinung nach in TXP fehlt. Nach Durchstöbern des Wikis und der Plugin-Seite habe ich jedenfalls nichts gefunden, was meinen Wunsch erfüllen könnte.

Ok, ich komme mal zum Punkt: bei vielen externen Statistik-Tools wie z.B. Metrics oder Google Analytics fügt man ja immer einen Code-Schnipsel, meistens einen JS-Aufruf, in seinen Code ein. Das Problem dabei ist, dass auch immer die eigenen Besuche mitgezählt werden und das halte ich für einen entscheidenden Nachteil, da vor allem bei weniger besuchten Seiten die eigenen Seitenbesuche immer auffallen ;-)

Ich war in den letzten Jahren schwer mit der ExpressionEngine beschäftigt. Da kann man mit einem Conditional z.B. Code nur dann ausführen lassen, wenn der Besucher nicht eingeloggt ist. Und zwar so {if_logged_out}…{/if_logged_out}. Da kann man dann bequem den Zählercode einfügen und man wird als Admin selber nicht mitgezählt – solange man eingeloggt ist, natürlich.

Also, kann man so etwas mit Hausmitteln TXPs bewerkstelligen oder gibt es ein Plugin dafür, das ich noch nicht gefunden habe?

Wenn nein, dann könnte ich mir vorstellen, dass man das auch mit zwei Zeilen PHP machen könnte, aber da bin ich dann ebenfalls auf Hilfe angewiesen, da ich null Ahnung von PHP habe.

Vielen Dank!

Offline

#2 2006-04-09 08:39:07

alexandra
Member
From: Cologne, Germany
Registered: 2004-04-02
Posts: 1,370

Re: [de-de] Code nur bei NICHT eingeloggten Usern ausführen?

Das kann man auch mit 2 zeilen php regeln. Sencer hat das irgendwo mal beschrieben. Leider weiß ich jetzt auch nicht mehr wo. Such doch einfach mal nach logs + sencer.

PS wenn du es gefunden hast, kannst du es hier posten?

Last edited by alexandra (2006-04-09 08:39:43)

Offline

#3 2006-04-09 10:39:12

Kossatsch
Member
From: St. Wolfgang
Registered: 2004-04-01
Posts: 198
Website

Re: [de-de] Code nur bei NICHT eingeloggten Usern ausführen?

Vielleicht hier ?


txp at irox.de since spring 2004 (g1.17) & at roxomatic since 2006.

Offline

#4 2006-04-09 10:48:47

Sencer
Archived Developer
From: cgn, de
Registered: 2004-03-23
Posts: 1,803
Website

Re: [de-de] Code nur bei NICHT eingeloggten Usern ausführen?

Also, kann man so etwas mit Hausmitteln TXPs bewerkstelligen oder gibt es ein Plugin dafür, das ich noch nicht gefunden habe?

Das Authentifikations-Cookie wird aus Sicherheitsgründen nur für den textpattern Ordner gesetzt. (Sicher deswegen, weil durch evtl. XSS-Lücken im Front-End so der Schaden erheblich minimiert wird – sprich keine Auth-Cookies geklaut werden können).

Was du machen möchtest, läßt sich aber leicht über ein minimales Plugin regeln. Ich hatte das an anderer Stelle mal angeregt, und auch Beispielcode gepostet. Ich finde aber leider nur noch das hier:
http://forum.textpattern.com/viewtopic.php?pid=82287#p82287
welches zwar den Verweis hat – der ist aber nicht mehr gültig. Ist im Prinzip so etwas:

if (txpinterface=='admin' && isset($_COOKIE['txp_login']) ) {
  list($user, $login) = explode(','$_COOKIE['txp_login']))
  setcookie('abc_logged_in',$user . ',' . substr(md5($login),0,16),time()+60*60*24*30,'/') }
}

// Das obige setzt für jeden eingeloggten User der einmal das backend betritt einen 30-tage 
// lang gültigen Cookie mit Namen "abc_logged_in" und als Wert den Hash des Login-Cookies.

// Nun braucht man noch eine Funktion/Tag die das auswertet:

function abc_if_logged_in($atts, $thing) {
  if (isset($_COOKIE['abc_logged_in'])) {
    list($user, $login) = explode(','$_COOKIE['abc_logged_in']))
    $nonce = safe_field('nonce','txp_users',"name='".doSlash($user)."'");
    $logged_in = ($login===substr(md5(md5($user.$nonce)),0,16)
  } else { $logged_in = false; }
  return parse(EvalElse($thing, $logged_in ));
}


Mal aus dem Handgelenk geschrieben und ungetestet.

Last edited by Sencer (2006-04-09 10:50:43)

Offline

#5 2006-04-09 17:18:45

mapu
Member
From: Munich, Germany
Registered: 2004-03-16
Posts: 141

Re: [de-de] Code nur bei NICHT eingeloggten Usern ausführen?

Sencer,

danke für den Code, aber ich habe keine Ahnung, wo ich den hinstecken soll…? Sorry… Wie gesagt, habe ich null Ahnung von PHP. :-(

Offline

Board footer

Powered by FluxBB