Seite 2 von 2
#21 RE: Sound beim Einloggen von florian-zier 21.02.2015 01:27

avatar

Nope, den kann man bei Bedarf auslesen, um festzustellen, von woher ein Besucher kam. Ein Gast in einem deiner Beiträge hätte als Referrer evtl. den Xobor-Support, in dem Fall hat er wohl dort einen Link zu deinem Forum geklickt. Folgt er dann von Beitrag A einem weiteren Link zum nächsten Beitrag B, dann ist der Referrer entsprechend Beitrag A, weil der Besucher als letztes von dort kam.

Da die Route bei jedem Besucher anders sein kann, lässt sie sich auch nicht im statischen Quellcode hinterlegen. Der Browser übergibt den Referrer meist noch an JavaScript, um ihn damit auslesen zu können. Mit PHP müsste eer sich auch auslesen und womöglich sogar verändern lassen, darauf haben wir bei Xobor allerdings keinen Zugriff. Ob das Foren-System den Referrer also manipuliert oder ob dieses Verhalten durch die Weiterleitung beim Absenden des Formulars auftritt wissen wir nicht. Du kannst den Referrer nur ausgeben lassen, nachdem du dich eingeloggt hast.

Falls du mitdem Quellcode im Portal das action-Attribut der Form meinst, das ist nur die Ziel-Seite, wohin die Daten nach Absenden des Formulars geschickt werden.

#22 RE: Sound beim Einloggen von Wolfgang 21.02.2015 08:44

avatar

Hallo Florian,
ich habe den "Referrer" gefunden!!!
Es ist doch immer die Seite, von der man sich aus einloggt!!!

Also entweder von
..../login.php
oder
.../portal.php
oder
.../index.php??? (Startseite)
oder
.../ ????

Das Problem ist nur, das man das Portal im ausgeloggten Zustand auch von der Startseiten-Adresse aus aufrufen kann (http://www.hilfe-tricks-tipps.de).
Wird wohl umgeleitet!
Hat die Startseite so etwas wie "index.php".

Gibt man "http://www.hilfe-tricks-tipps.de/portal.php" ein und hat den "Referrer" im Script auf "/portal.php" geändert funktioniert es!
Man müsste also alle drei/vier Endungen mit ins Script bringen!
Oder man müsste ein andres Kriterium schaffen, wie z.B. die Bestätigung des richtigen Passwortes!



Gruß
Wolfgang

#23 RE: Sound beim Einloggen von florian-zier 23.02.2015 01:40

avatar

Das Problem ist, dass die User sich bestimmt auch gerne mal vom Portal auf eine andere Seite begeben, obwohl sie bereits eingeloggt sind. Dann stimmt zwar möglicherweise der Referrer, aber nicht die Annahme eines erneuten Logins. Beim Referrer kommt insgesamt natürlich auch noch hinzu, dass er womöglich nicht in jedem Browser gesetzt wird, falls der Nutzer das unterbunden hat.

Entweder hakt man sich dann in das Login-Fomular im Portal ein, sodass irgendein Wert direkt vor Abschicken des Formulars vorher gespeichert wird, oder man setzt sich generell einen Indikator bei Gästen. Ist der aktuelle Besucher ein Gast, wird das vermerkt. Bei eingeloggtem Zustand wird vor Abspielen des Login-Sounds statt dem Referrer dann geprüft, ob dieser Vermerk noch vorhanden ist. Falls ja, kann der Vermerk gelöscht und der Sound ausgegeben werden.

Wie der Wert gemerkt wird, ist eigentlich egal, wichtig ist nur, dass es nicht nur eine einfache JS-Variable ist, sondern auch über den Seitenwechsel hinweg bestehen bleiben kann (LS, Keks, etc. …).
Die drei entsprechend relevanten Stellen sind mit isGuest-Kommentaren markiert, wann gesetzt, geprüft oder gelöscht werden sollte:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
 
/**
* Login-Sound mit mehreren Quellen bereitstellen.
*
* Das Array 'sourceUrls' enthält URL und Mimetype der Audio-Datei.
*/
$(document).ready(function(){
 
{{user_registered==false.start}}
 
// isGuest setzen
 
{{user_registered==false.else}}
 
if (/* isGuest Wert vorhanden? */) {
// isGuest Wert löschen
 
if (!!(document.createElement('audio').canPlayType)) {
// Audio-Tag zusammenbauen:
var sourceUrls = [
['http://files.homepagemodules.de/b135428/f180t8864p113761n1.mp3', 'audio/mp3'],
['http://files.homepagemodules.de/b135428/f180t8864p113761n1.ogg', 'audio/ogg'],
['http://files.homepagemodules.de/b135428/f180t8864p113761n1.wav', 'audio/wav']
];
 
var loginSound = $('<audio>');
$.each(sourceUrls, function(index, source){
loginSound.append(
$('<source>').attr('src', source[0]).attr('type', source[1])
);
});
loginSound.get(0).play();
}
else {
// Embed-Fallback ausgeben:
var loginSound = $('<embed>').attr('autostart', 'true').attr('loop', 'false').attr('hidden', 'true')
.attr('src', 'http://files.homepagemodules.de/b135428/f180t8864p113761n1.mp3');
$('body').append(loginSound);
}
}
 
{{user_registered==false.end}}
});
 


Da inzwischen doch einiges an Arbeit in das Skript geflossen und es beträchtlich erweitert worden ist, bin ich am überlegen, ob ich das Skript noch in ähnlicher Form in den Store einreichen soll. Ansonsten ist das obige Schema eine allgemeingültige Vorlage, wie der Login-Sound selbst umgesetzt werden kann.

#24 RE: Sound beim Einloggen von Wolfgang 23.02.2015 15:59

avatar

Hallo Florian,
das währe dann wohl das perfekte Script für alle Eventualitäten!
Hast Du schon eine Ideen wie "isGuest" aussieht?
Ich würde mich hier schwer tun, mit Cookies setzen,....

Für ein Plugin, währe es besten geeignet.
Ich finde es besonders gut, wenn es in allen Browsern und dann noch bei so vielen Variationen funktioniert!!!



Bis dann
Wolfgang

#25 RE: Sound beim Einloggen von florian-zier 24.02.2015 00:15

avatar

Hallo Wolfgang,
das kommt natürlich auch ein wenig darauf an, wo man es einbaut und was man selbst so bevorzugt.

Beim Einbau als Plugin kommen bspw. zusätzlich die Api-Funktionen für LocalStorage und Cookies in Frage, oder eben eine klassische Cookie-Behandlung wie sonst auch, was überall, also auch in Templates direkt funktioniert. Um besser mit Cookies arbeiten zu können, hatte ich bereits vor langer Zeit mal einen CookieManager geschrieben, welcher hier zu finden ist. Weiter unten ist der CookieManager nochmals um Whitespaces etc. gekürzt, um Speicherplatz zu sparen.

Ich habe es hier nochmals erneut zu einem Einzeiler minifiziert:

1
 
if("undefined"==typeof cookieManager)var cookieManager={getCookie:function(e){var o=document.cookie.split(";"),i="",n="",t="",a=!1,r="";for(r=0;r<o.length;r++){if(i=o[r].split("="),n=i[0].replace(/^\s+|\s+$/g,""),n==e)return a=!0,i.length>1&&(t=unescape(i[1].replace(/^\s+|\s+$/g,""))),t;i=null,n=""}return a?void 0:null},setCookie:function(e,o,i,n,t,a){var r=new Date;r.setTime(r.getTime()),i&&(i=1e3*i*60*60*24);var c=new Date(r.getTime()+i);document.cookie=e+"="+escape(o)+(i?";expires="+c.toGMTString():"")+(n?";path="+n:"")+(t?";domain="+t:"")+(a?";secure":"")},deleteCookie:function(e,o,i){Get_Cookie(e)&&(document.cookie=e+"="+(o?";path="+o:"")+(i?";domain="+i:"")+";expires=Thu, 01-Jan-1970 00:00:01 GMT")}};
 


Der CookieManager muss einfach einmal vor das Skript gesetzt werden, in welchem Funktionen für Cookies benötigt werden.


Die Verwendung erfolgt dann mit entsprechenden Methoden zum Setzen, Auslesen und Löschen:

1
2
3
 
cookieManager.setCookie('CookieName', 'CookieWert', 30); /* hier 30 Tage */
cookieManager.getCookie('CookieName');
cookieManager.deleteCookie('CookieName');
 

Xobor Forum Software von Xobor
Einfach ein eigenes Forum erstellen
Datenschutz