Blog



Update mit Forum

Es gibt ein Update für die Betaversion. Neben vielen Kleinigkeiten ist auch das Forum dabei. Das bewährt sich seit 2 Monaten bereits beim Schlaupferd, nun möchte ich es etwas breiter testen, bevor es in die offizielle Version kommt. Darum wird auch das Forum von eforia.de in Kürze umgestellt. Allerdings will ich die alten Einträge importieren, was etwas dauern wird, weil das bisherige Forum ein Forum mit Baumstruktur war. Das neue Forum ist eigentlich keines, sondern ein Board mit flacher Struktur. Aber den Unterschied hat schon vor 15 Jahren keiner verstanden und Boards sind der de-facto Standard für Foren.

Für das Forum wurde auch die Benutzerverwaltung leicht verändert. Ein Userbild und die Forumsignatur gehören nun zum Standard. Daneben gibt es viele kleinere Änderungen. Beispielsweise kann der Mailman nun warten, bevor er Mails aus dem scheduled-Verzeichnis bearbeitet. Damit kann man z.B. Sonntag Abend einen Newsletter vorbereiten, der dann pünktlich Montag Morgen verschickt wird.

PS: Mir ist klar, dass ohne Dokumentation und Vorlagen das Forum nicht nutzbar ist. Aber ich will erst noch die Standard-Vorlagen auf Tauglichkeit testen. Wer dringend selbst das Forum nutzen möchte, wird dabei aber gerne von mir unterstützt.


Dieser Artikel wurde veröffentlicht am 17.02.2011 um 10:31 Uhr. Noch kein Kommentar.

Update ewm5

Wieder mal ein Update für eforia web manager 5. Hier ein kurzer Überblick über die neuen Funktionen.

Neues tag {rem}:
Das ist schlicht für Bemerkungen. Der Inhalt zwischen {rem} und {/rem} wird einfach entfernt und nicht dargestellt. Der geneigte User darf sich aussuchen, ob rem für Remark oder Remove steht. 8-)

Neues tag {spin}:
Der Inhalt zwischen {spin} und {/spin} wird zufällig gewechselt. Dabei ist die Syntax {Text 1|Text 2|Text 3} einzuhalten. Es wird dann einer der 3 Texte ausgewählt. Auch Verschachtelungen sind möglich und die Anzahl der Möglichkeiten nicht auf 3 begrenzt. Diese Syntax ist eine Art Standard im Internet. Deshalb habe ich auch die geschweiften Klammern beibehalten, auch wenn es etwas ungünstig ist mit den eforia Tags. Man muss durch geschickte Priorisierung eben gegebenenfalls selbst die Reihenfolge der Ersetzungen bestimmen. Sinnvolle Anwendung ist z. B. die zufällige Auswahl einer Werbung aus mehreren Vorgaben. SEOs fallen evtl. andere Anwendungen ein. 8-)

Mailman:
Wenn Mailman den Versand per SMTP erledigen soll, was in der Regel so ist, kann er sich nun gegenüber dem Mailserver authentifizieren, falls das notwendig ist. In der mailman.ini einfach die beiden Angaben
Smtpuser=Username
Smtppw=Kennwort
benutzen.
Außerdem kann der Mailman nun ein Verzeichnis scheduled bearbeiten. Damit können Mails in unterschiedlicher Priorität verschickt werden. Mails, die in "mail" abgelegt sind, werden immer zuerst verschickt, danach die in "scheduled". Sinn macht das, wenn man mit
maxmails=20
die maximale Anzahl pro Lauf verschickter Mails begrenzt. Das alles spielt aber nur eine Rolle, wenn man wirklich viele Mails verschicken will.

Newsletter:
Der Newsletter hat einen Bounce-Handler. D. h. Mails die nicht zugestellt werden können, werden automatisch bearbeitet und je nach Fehlerart gegebenenfalls aus der Datenbank gelöscht. Das funktioniert allerdings nur, wenn die Newsletter-Datenbank für den Newsletter benutzt wird und nicht die Benutzerdatenbank.
Um das zu benutzen muss man das newsletter.prg im Scheduler aufrufen. Einmal am Tag reicht dabei völlig. In der newsletter.ini gibt man an:
[bounce]
server=mailserver:110
account=Mailserveraccountname
pw=Kennwort
mailto=admin@email
Das sind POP3 Zugangsdaten, wo die fehlgelaufenen Mails abgeholt werden und eine Email-Adresse, an die Probleme zugestellt werden. Nicht alle Bounces können automatisch bearbeitet werden. Rückmeldungen der Art "Ich bin bis xxx nicht im Büro" werden dann an den Admin zugestellt, der diese evtl. noch per Hand durchsehen kann. Das hält sich aber alles sehr in Grenzen. Ich nutze die Funktion schon einige Monate. Der Sinn ist natürlich auch hier, nicht unnötig viele Mails zu versenden und dann evtl. als Spammer zu gelten.
Der Bounce-Handler funktioniert besser, wenn man in den verschickten Mails eine eindeutige Kennung des Empfängers "versteckt". Das mach man z.B. so:
<!-- bl{lfduser} -->

Außerdem kann der Newsletter Links "kürzen". Weil es ja in Newslettern immer unschön ist, besonders lange Links zu haben, können diese gekürzt werden. Dazu trägt man in der newsletter.ini ein:
[linktracker]
active=1
urlprefix=http://www.eforia.de/nll/
Jeder Link wird nun umgelenkt durch eine Adresse die beim urlprefix angegeben ist. Das nll soll hier für Newsletter-Link stehen und funktioniert so nur, wenn in der .htaccess eine entsprechende Anweisung vorhanden ist:
RewriteRule nll/(.*) /custprg/newsletter.prg?track=$1
Das Track macht schon klar, dass nebenbei auch die Klicks mitgezählt werden. D.h. man weiß auch, was die Leser am meisten interessiert. Man kann das auch ohne die Umleitung machen, dann muss die URL eben angepasst werden. Mit ist es eben kürzer und schöner.
Die Öffnungsrate wird übrigens auch getrackt. Dazu kann man im Newsletter das
<link rel="stylesheet" type="text/css" href="{systemurl}custprg/newsletter.prg?trk=1&type=css&lfd={lfduser}&code={code}" />
oder das
<img src="{systemurl}custprg/newsletter.prg?trk=1&type=image&lfd={lfduser}&code={code}">
benutzen.

Wer die History verfolgt hat, dem wird auffallen, dass Bounce-Handling und Open-Tracking bereits seit 2 Monaten verfügbar sind. Ich war mir nur nicht sicher, ob ich das überhaupt so groß erwähnen soll. Den es ist alles etwas viel und technisch. Aber der Newsletter ist damit kostenpflichtigen professionellen Newsletter-Tools ebenbürtig. Das geht eben nicht ohne viel Technik. Richtig im Kopf muss man das alles nur behalten, wenn man vor hat einen  richtig großen Newsletter-Verteiler aufzubauen. Ich gehe davon aus, dass  es für 99% aller eforia Nutzer keinen Grund gibt, sich überhaupt damit  zu befassen. Das restliche Prozent wird die Funktionen aber lieben.

Blog-Update:
In der Ini im Bereich main kann man die Option
smart=1
setzen. Dann werden die betroffenen Seiten nicht sofort neu generiert, sondern cms_rsp angewiesen, das beim nächsten Lauf zu machen. Bei sehr komplexen Systemen mit vielen Blogs/Newstickern usw. kann das den Server etwas entlasten.

Formmail:
Formmail kann nun Pseudofelder enthalten, deren Inhalt von einem externen Programm geliefert wird. Beispiel:
field_4=file-formular.pdf,execmacro(../custprg/formularpdf.prg,GenPDF('ramtext:aktdata'))
Es wird GenPDF im Programm formularpdf.prg aufgerufen. Übergeben wird ein Ramtext mit den aktuellen Werten des Formulars. Die Prozedur liefert einen Dateinamen zurück, der in diesem Fall ein PDF mit dem Inhalt ist. Dieser kann dann z.B. als Mail-Anhang verschickt werden.


Dieser Artikel wurde veröffentlicht am 09.08.2010 um 10:08 Uhr. Noch kein Kommentar.

Update Nachtrag

Heute gab es noch einen kleinen Nachschlag zum gestrigen Update. Ein neuer Mailman nutzt die Änderungen, die auch schon im Newsletter gemacht wurden. Außerdem wurde der Linkchecker leicht geändert. Dieser nutzt bei Https-Verbindungen wget als Fallback. Dafür ist nun ein geringerer Timeout angegeben und die Anzahl Wiederholungen heruntergeregelt. Bisher konnte es in Einzelfällen einfach ganz schön lange dauern, bis die Nichtereichbarkeit einer Adresse festgestellt wurde.

Dieser Artikel wurde veröffentlicht am 13.02.2010 um 15:32 Uhr. Noch kein Kommentar.

Update Newsletter

Es gibt wieder mal ein kleines Update für ewm5. Die Änderungen sind eher intern. Die Routine, welche den Newsletter codiert wurde ganz leicht geändert um ein Spam-Signal zu umgehen. D.h. die Wahrscheinlichkeit, dass ein verschickter Newsletter als Spam eingestuft wird, ist einfach etwas geringer. Wer es genauer wissen will, darf mich gerne fragen.

Außerdem gibt es einen neuen Tag {table:tabellenname}. Dieser fügt schlicht die Tabellennummer der angegebenen Datenbank-Tabelle ein. Wozu das gut sein soll, verrate ich am Montag. 8-)

Dieser Artikel wurde veröffentlicht am 12.02.2010 um 13:49 Uhr. Noch kein Kommentar.

Neuer Scheduler

Ich habe soeben ein kleines Update abgestellt, was nur einen neuen Scheduler enthält. Dieser hat auch nur eine kleine neue Funktion. Falls er gestartet wird, prüft er, wann der letzte Lauf beendet wurde. Ist das weniger als 5 Sekunden her, bricht er sofort wieder ab.

Was für einen Sinn hat das?

Angenommen der Scheduler wird per Cron jede Minute aufgerufen. Ein Lauf benötigt aber mehr als eine Minute. Cron queued nun die Aufrufe, was zu einer endlosen Schlange heranwachsen kann und die Serverlast unnötig erhöht. Mit der 5 Sekunden Zwangspause kann das nicht mehr auftreten.

Ein Problem dürfte das nur in den wenigsten Fällen sein. Aber die neueste Funktion zum automatischen prüfen von ausgehenden Links muss beispielsweise immer auf Antwort vom anderen Server warten. Da kann sich die Laufzeit schon mal erhöhen. Deswegen das kleine Sicherheitsfeature, damit der Server nicht unnötig belastet wird.


Dieser Artikel wurde veröffentlicht am 30.11.2009 um 16:09 Uhr. Noch kein Kommentar.

Kleines Update

Wieder mal gibt es ein Mini-Update für die 5er Version.

  • Ein neues Tag {eforiaversion} gibt schlicht die Versionsnummer aus. Der Sinn davon ist, ein Generator Meta-Tag einfügen zu können wie
    <meta name="GENERATOR" content="eforia web manager {eforiaversion}">
    Google beachtet sowas ja neuerdings und informiert Webmaster über Updates ihrer CMS. Da will ich mal den Weg nicht versperren, auch eforia mit aufzunehmen. 8-)

  • ping.prg: Bisher wurden Dienste nicht mehr angepingt, wenn der Fehlerzähler das angegebene Maximum erreichte. Auch bei einem neuen Ping wurde nicht erneut versucht. Nun wird pro Ping-Aktion der Fehlerzähler wieder zurück gesetzt. Das nützt, wenn der Dienst nur temporär nicht funktioniert hat oder die Fehlermeldung als Rückgabe gefälscht ist.

  • Kommentare: Seit kurzem gibt es die Möglichkeit, den Kommentaren auch Nutzer zuzuordnen. Nun kann man konsequenterweise auch festlegen, dass Kommentare von Nutzer sofort sichtbar sind, solche von Gästen aber moderiert werden. Dazu dient
    moderateunknown=1
    in der comments.ini (nur bei Kommentaren, nicht bei Trackbacks). Mit dieser Einstellung stehen alle Kommentare von Nicht-Usern erstmal auf "hidden". Das macht natürlich nur Sinn, wenn nicht schon moderateall=1 gesetzt ist. Dann werden natürlich weiterhin alle Kommentare moderiert.
    Außerdem habe ich eine zweite Informer-Adresse eingerichtet. Neben
    inform=mail@adresse.de
    gibt es nun auch
    informhidden=mail@adresse.de
    Eben bei Kommentaren die zu moderieren sind (Status hidden), wird eine Mail an diese Adresse statt der anderen geschickt.

    Tipp: Es macht vor allem bei Trackbacks Sinn, informhidden einfach leer zu lassen. Zumindest bei mir kommen täglich mehrere hundert Spam-Trackbacks an, die auf diese Weise keine Informer-Mails mehr erzeugen.


Dieser Artikel wurde veröffentlicht am 27.11.2009 um 10:10 Uhr. Noch kein Kommentar.

Halloween-Update: Automail

Automail dient zum automatisierten Versenden von Mails. Man kann also ein Formular anbieten, bei dem sich Anwender mit Namen und Mail-Adresse eintragen. An diese werden dann zeitgesteuert Mails verschickt. Doubleoptin und jederzeitiges austragen ist natürlich möglich. Diese Funktion wird von Info-Marketern gerne eingesetzt. Es würde hier aber zu weit führen, das hier genauer zu erklären.

Man legt eine Vorlage automail/ini an. Dort steht z.B.
[set_1]
template=ehrliche-lebensmittel
inform_new=horst@klier.net
inform_check=horst@klier.net
inform_stop=horst@klier.net
inform_sender=info@leben-ohne-diaet.de

Dabei ist die "1" hinter dem set_ die Id. Die Einträge darunter sind dieser einen Id zugeordnet. Es muss keine Zahl sein und auch nicht durchnummeriert werden. Das ist hier nur zufällig eine 1.
template gibt an, unter welchem Namen die weiteren Vorlagen dazu angelegt sind. Die inform_xxx sind Mail-Adressen. new, check und stop sind dabei reine Informationsmails, die bei Neuanmeldungen, Doubleoptin-Bestätigungen und Abmeldungen verschickt werden können, der sender ist der Absender der verschickten Mails.

Zu dem Namen "ehrliche-lebensmittel" gibt es dann weitere Vorlagen:
automail/ehrliche-lebensmittel/ini
headline=Gesund Abnehmen ohne Diät
targetpage=http://www.leben-ohne-diaet.de/programm/o.prg?pos=Automail
mails=5
hours_1=0
hours_2=24
hours_3=48
hours_4=72
hours_5=96
headline ist die Überschrift. Diese kann man bei weiteren Vorlagen als Platzhalter verwenden. targetpage gibt eine Zielseite an, bei der das MOdul später eingebunden sein muss um An- und Abmeldungen anzunehmen. mails ist die Anzahl an Nachrichten, die verschickt werden. Darunter sind die jeweiligen Zeiten in Stunden angegeben, wann die Mails versendet werden.

automail/ehrliche-lebensmittel/mail-opt-in
tdbmail
{Mail}
horst@klier.net
Leben ohne Diät -  Bitte bestätigen Sie den Empfang
Hallo {Name},

Vielen Dank für Ihr Interesse!

Sie müssen den kostenlosen Empfang noch bestätigen.
Benutzen Sie dafür den folgenden Link:

{linktoactivate}
Das ist die Nachricht, die zum Double-Opt-In auffordert. Die Platzhalter dürften klar sein, oder?

automail/ehrliche-lebensmittel/main
{success}
<h1 style="color:#ffffff;">Vielen Dank.</h1><br />
<br />Sie erhalten in wenigen Minuten eine Mail, in der Sie den Empfang mit einem Klick bestätigen müssen.<br />
{/success}
{error}
<h1 style="color:#ff4444;">Fehler</h1><br />
<br />Es ist ein Fehler aufgetreten. Bitte prüfen Sie Ihre Angaben.<br />
{/error}
{form}
<form action="{link="type:dynamic;/Automail"}&id=1" method="post">
<table border="0" cellpadding="2" cellspacing="2">
{nameerror}
<tr>
  <td></td>
  <td style="color:#880000;">Bitte geben Sie Ihren Vornamen an. </td>
</tr>
{/nameerror}
<tr>
  <td><b>Vorname:</b> </td>
  <td><input type="text" name="Name" size="66" value="{Name}" class="text" style="width:145px;"></td>
</tr>
{mailerror}
<tr>
  <td></td>
  <td style="color:#880000;">Bitte geben Sie Ihre Email-Adresse an. </td>
</tr>
{/mailerror}
<tr>
  <td><b>Email:</b> </td>
  <td><input type="text" name="Mail" size="66" value="{Mail}" class="text" style="width:145px;"></td>
</tr>
<tr>
  <td>&nbsp;</td>
  <td colspan="1" align="left">
<input type="hidden" name="Sourceid" value="{Sourceid}">
<input type="submit" value="Eintragen" name="OK" class="button"></td>
</tr>
</table>
</form>
{/form}
{opt-in-success}
<h1 style="color:#ffffff;">Vielen Dank.</h1><br />
<br />Sie haben sich erfolgreich für den kostenlosen Empfang angemeldet.<br />
{/opt-in-success}
{opt-in-error}
<h1 style="color:#ff4444;">Fehler</h1><br />
<br />Ich kann Sie nicht eintragen. Ihre Adresse wurde nicht gefunden oder der Code stimmt nicht. Haben Sie sich vielleicht bereits an- und wieder abgemeldet?<br />
{/opt-in-error}
{opt-out-success}
<h1 style="color:#ffffff;">Schade.</h1><br />
<br />Sie wurden ausgetragen. Sie erhalten keine weiteren Nachrichten.<br />
{/opt-out-success}
{opt-out-error}
<h1 style="color:#ff4444;">Fehler</h1><br />
<br />Ich kann Sie nicht austragen. Ihre Adresse wurde nicht gefunden oder der Code stimmt nicht. Haben Sie sich vielleicht bereits abgemeldet?<br />
{/opt-out-error}
Das ist also die Vorlage für Formular und Fehlermeldungen. Die einzelnen Abschnitte haben sprechende Namen. Was man beachten sollte ist, dass bei der Form-Action hinten die id angehängt wird. Das muss eben genau die sein, die in der automail/ini steht. Das Sourceid ist zum Durchschleifen einer Tracking-Information. Man will ja wissen, woher die Anmeldungen kommen.

automail/ehrliche-lebensmittel/mail-1
tdbmail
{Mail}
horst@klier.net
Leben ohne Diät - Teil 1 - Meine Geschichte
Hallo {Name},

hier kommt auch schon der erste Teil.
...
________________________________________________________

Wenn Sie keine Nachricht mehr erhalten wollen, klicken Sie einfach den folgenden Link
{linktounsubscribe}
________________________________________________________

Dieser Newsletter wird herausgegeben von
Horst Klier, Schwabenstr. 30, 91126 Schwabach
Tel:  09122 632211
Web:  http://www.leben-ohne-diaet.de
Mail: horst@klier.net
Das ist die erste Mail, 5 entsprechende gibt es.  Diese müssen einfach durchnummeriert sein.

Das wars? Nein. Automail soll ja automatisch Mails versenden. Deswegen brauchen wir einen Eintrag in der schedul.ini:
program_14=automail.prg >>../logfiles/automail.log
dir_14=../custprg
next_start_14=27.10.2009 10:10
every_min_14=10

Und eingebunden werden muss das Modul auch noch. In der ini steht eine Targetpage. Dort muss das Modul auf jeden Fall eingebunden werden:
{execmacro="automail"}
Mehr muss nicht auf die Seite. Weil das nur die Zielseite ist. Theoretisch müsste man dafür keine extra Seite anlegen, aber ich finde es besser, wenn keine störenden Elemente zu sehen sind.

Zur Einbindung des Formulars benutzt man
{execmacro="automail" param="1;sourceid=Tracking"}
Die 1 ist wieder die Id. Die SourceId ist optional und dient dazu, hinterher zu wissen, woher die Eintragung gekommen ist.

Beispiel

Und weil ich weiß, dass auch das wieder viel komplizierter klingt, als es ist, lade ich sie zu einem Beispiel ein. Unter http://www.leben-ohne-diaet.de/text/buch/bestellen.html finden Sie unten ein Formular "Noch nicht überzeugt?". Wenn Sie sich dort eintragen, sehen Sie den Automailer in Aktion.

Dieser Artikel wurde veröffentlicht am 31.10.2009 um 10:15 Uhr. Noch kein Kommentar.

Halloween-Update: Newsletter

Die Neuerung im Newsletter ist eher etwas für Profis. Falls man eine umfangreichere Benutzerverwaltung verwendet, hat man dort oft direkt die Verwaltung, ob der Nutzer einen Newsletter empfangen will oder nicht. Das Feld, wo man das festlegt, kann man nun einfach in der newsletter.ini angeben. Beispielsweise
[user]
cms_usermanagement=Newsletter

Das bedeutet, dass es ein Feld Newsletter (Boolean) in der usr_user geben muss. Beim versenden eines Newsletters bekommen alle Nutzer dort eine Mail, bei denen in diesem Feld eine 1 steht.


Dieser Artikel wurde veröffentlicht am 30.10.2009 um 10:15 Uhr. Noch kein Kommentar.

Halloween-Update: Formmail

Der Formmailer kann nun mehrere Mails absenden. Die Vorlage für die erste ist nach wie vor formmail/abc/mail. Die weiteren werden dann mit

  • formmail/abc/mail_2
  • formmail/abc/mail_3
  • formmail/abc/mail_...
angegeben.

abc steht natürlich für die entsprechende Vorlage, je nach Parameter.

Dieser Artikel wurde veröffentlicht am 29.10.2009 um 10:15 Uhr. Noch kein Kommentar.

Halloween-Update: Kommentare

Die Kommentarfunktion wurde leicht überarbeitet. Im Grunde gibt es ein Feld in der Datenbank, das den Nutzer speichert, falls einer angemeldet ist. Bei der Ausgabe kann man mit {User} abfragen. Beispielsweise kann mit einem Konstrukt wie {if="{User}=0"}background-color: #eeeeee;{end} die Hintergrundfarbe von Kommentaren bei angemeldeten Benutzern farbig hinterlegt werden.

Um bei der Eingabe diesen das Captcha zu sparen, kann das Formular comment/form mit Javascript arbeiten. Es gibt unter programm ein kleines Hilfstool, was Userinformationen der aktuellen Session zurückliefert. Das kann per httpxmlrequest angesprichen werden. Klingt kompliziert? Hier ein Beispiel:
<a name="comform"></a><span class="headline">Neuen Kommentar verfassen:</span>
<form action="{action}&#message" method="POST">
<table callpadding="0" cellspacing="0" border="0">
<tr><td>Name:</td><td><input type="text" id="fieldName" name="Name" value="{Name}" size="50"></td></tr>
<tr><td>Email:</td><td><input type="text" id="fieldMail" name="Mail" value="{Mail}" size="50"> <span class="small">(wird nicht veröffentlicht)</span></td></tr>
<tr><td valign="top">Website:</td><td><input type="text" id="fieldWebsite" name="Website" value="{Website}" size="50"> <span class="small">(optional)<br />
Achtung Möchtegern-SEOs: Kommerzielle Websites, die in keinem Bezug zum Thema des Beitrags stehen, werden gelöscht. Deeplinks sind mir immer suspekt.</span></td></tr>
<tr><td valign="top">Text:</td><td><textarea name="text:Text" rows="10" cols="60">{Text}</textarea></td></tr>
<tr><td>&nbsp;</td><td><input type="checkbox" name="InformAboutNewComments" {InformAboutNewComments}> Bei neuen Kommentaren per Email benachrichtigen</td></tr>
<tr><td>&nbsp;</td><td><input type="checkbox" name="store" {store}> Angaben (Name, Email, Website) speichern</td></tr>
<tr id="captcha"><td valign="top"><br>Code:</td><td>{captchaimage}<br /><input type="text" name="captcha"> (Bitte Code von oben eingeben)</td></tr>
<tr><td>&nbsp;</td><td><span class="small">Hinweis: Mit dem Absenden Ihres Kommentars willigen Sie ein, dass der angegebene Name, Ihre E-Mail-Adresse und die
IP-Adresse, die Ihrem Internetanschluss aktuell zugewiesen ist, im Zusammenhang mit Ihrem Kommentar
gespeichert werden. Die E-Mail-Adresse und die IP-Adresse werden natürlich nicht veröffentlicht oder
sonst weitergegeben.<br /></span>
<input type="submit" name="send" value="Absenden"></td></tr>
</table>
</form>
<script>
// XML-Transfer
function XMLInitCommentForm() {
// cFunction: load / save
  var http_request = false;
  var URL = "/programm/getuser.prg?"+Math.ceil(Math.random()*1000);
  if (window.XMLHttpRequest) { //Mozilla
    http_request = new XMLHttpRequest();
  } else {
    if (window.ActiveXObject) { // IE
      try {
        http_request = new ActiveXObject("Msxml2.XMLHTTP")
      } catch(e) {
        try {
          http_request = new ActiveXObject("Microsoft.XMLHTTP")
        } catch(e) {}
      }
    }
  }
  if (!http_request) {alert('Ihr Browser unterstützt diese Funktion (XMLHttpRequest) leider nicht! '); return false;}

  http_request.onreadystatechange = function() {XMLProcessCommentForm(http_request)}

  http_request.open('GET',URL,true);
  http_request.setRequestHeader('content-type', 'text/plain');
  http_request.setRequestHeader('charset', 'iso-8859-1');
  http_request.send();
}

function getCookie(name){
  // Cookie-Wert auslesen
  var i=0
  var suche = name+"="
  while (i<document.cookie.length){
    if (document.cookie.substring(i, i+suche.length)==suche){
      var ende = document.cookie.indexOf(";", i+suche.length)
      ende = (ende>-1) ? ende : document.cookie.length
      var cook = document.cookie.substring(i+suche.length, ende)
      return unescape(cook)
    }
    i++
  }
  return ''
};

function ReadLn(cText){
  var nEnd=0;
  var c='';
  nEnd=cText.indexOf('\n',0);
  if(nEnd!=-1){
    c=cText.slice(0,nEnd);
  }else{
    c=cText;
  }
  if(c.indexOf('\r')>=0){c=c.slice(0,c.indexOf('\r'))}; // Windows-Kombatibilität mit CR+LF statt nur LF
  return c
}

function DelLn(cText){
  var nEnd=0;
  var c='';
  nEnd=cText.indexOf('\n',0);
  if(nEnd!=-1){
    c=cText.slice(nEnd+1);
  }else{
    c='';
  }
  return c
}

function XMLProcessCommentForm(http_request) {
  var cResponse='';
  try {
    if (http_request.readyState == 4) { //abgeschlossene übertragung
      if (http_request.status == 200 || http_request.status == 0) { // Code OKAY
        cResponse=http_request.responseText;
        var cUser='';
        var cUsername='';
        var cMail='';
        cUser=ReadLn(cResponse);
        cResponse=DelLn(cResponse);
        cUsername=ReadLn(cResponse);
        cResponse=DelLn(cResponse);
        cMail=ReadLn(cResponse);
        // Wenn User, dann Captcha ausblenden
        if(cUser!='0'){document.getElementById('captcha').style.display='none';}
       // Wenn Felder leer, dann mit Cookie besetzen
       if (document.getElementById('fieldName').value+document.getElementById('fieldMail').value+document.getElementById('fieldWebsite').value==''){
         document.getElementById('fieldName').value=getCookie('cName');
         document.getElementById('fieldMail').value=getCookie('cMail');
         document.getElementById('fieldWebsite').value=getCookie('cWebsite');
       }
       // Wenn immer noch leer, mit Userinfo aus Session besetzen
       if (document.getElementById('fieldName').value==''){
         document.getElementById('fieldName').value=cUsername;
       }
       if (document.getElementById('fieldMail').value==''){
         document.getElementById('fieldMail').value=cMail;
       }

      } else {
        alert("Übertragungsfehler Status "+http_request.status)
      }
    }
  } catch(E) {
    //alert("Fehler: "+E.message)
  }
}
XMLInitCommentForm();
</script>

In diesem Beispiel wird geprüft ob ein Nutzer angemeldet ist. Falls ja, wird sein Nutzername und Mail in die Felder eingetragen und das Captcha ausgeblendet. Falls der Nutzer in die Felder andere Werte eingibt, können diese immer noch per Cookie gespeichert werden und werden dann in Zukunft benutzt.

Eine andere Lösung kann man z.B. hier sehen. Da ist nur noch angemeldeten Nutzern das Kommentieren erlaubt. Der Name wird fest vorgegeben, eine extra Website kann nicht übergeben werden. Dafür werden dann die Kommentatornamen mit dem Nutzerprofil (was es auf der Seite eben gibt) verlinkt.


Dieser Artikel wurde veröffentlicht am 28.10.2009 um 10:15 Uhr. Noch kein Kommentar.
Zeige 1 - 10 von 14
Vorwärts Ende


Hier bloggt Horst Klier mit und über eforia web manager und was dazugehört (HTML, Javascript, Internet, Webdesign, Such- maschinenoptimierung, usw.).

>> Zur Blog Startseite

RSS-Feed
abonnieren


Übersicht über alle Beiträge



eforia® ist ein eingetragenes Markenzeichen.
Alle anderen Marken und Markenzeichen gehören Ihren jeweiligen Besitzern.
Letzte Aktualisierung dieser Seite: 29.03.2024 / 09:24:51
Suche  
Login / Userdaten
Impressum/Datenschutz