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> </td><td><input type="checkbox" name="InformAboutNewComments" {InformAboutNewComments}> Bei neuen Kommentaren per Email benachrichtigen</td></tr>
<tr><td> </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> </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 [Link entfernt, weil Linkziel leider nicht mehr verfügbar] 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.
Tags: ewm5
update
halloween
comment
| Permalink
| Trackback URI
Ähnliche Beiträge:
Noch kein Kommentar. Sei der Erste:
Der Beitrag ist älter als 30 Tage. Keine Kommentare mehr möglich.
|
 |


Hier bloggt Horst Klier mit und über eforia web manager und was dazugehört (HTML, Javascript, Internet, Webdesign, Such- maschinenoptimierung, usw.).
Übersicht über alle Beiträge
|