<?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>Agrafix Webdesign Blog</title>
	<atom:link href="http://blog.agrafix.net/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.agrafix.net</link>
	<description>Programmieren, Technik und Internet</description>
	<lastBuildDate>Thu, 16 Feb 2012 15:00:57 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3.1</generator>
		<item>
		<title>Python3 urllib Wrapper: HTTP-Request mit Python</title>
		<link>http://blog.agrafix.net/2012/02/python3-urllib-wrapper-http-request-mit-python/</link>
		<comments>http://blog.agrafix.net/2012/02/python3-urllib-wrapper-http-request-mit-python/#comments</comments>
		<pubDate>Thu, 16 Feb 2012 15:00:57 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[Python]]></category>
		<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[http]]></category>
		<category><![CDATA[python]]></category>
		<category><![CDATA[urllib]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=580</guid>
		<description><![CDATA[Dieser Beitrag ist Teil meiner Sourcecode a Day-Aktion. Heute gibt&#8217;s eine simple Wrapper-Klasse für urllib aus Python3: # -*- coding: utf-8 -*- #------------------------------------------------------------------------------- # Name: NetConnector # Purpose: Python urllib wrapper # # Author: Alexander Thiemann # # Created: 10.10.2011 # Copyright: (c) Alexander Thiemann 2011 #------------------------------------------------------------------------------- &#160; import urllib.request, urllib.parse, urllib.error import http.cookiejar import [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
<li><a href='http://blog.agrafix.net/2009/07/quadratische-gleichung-losen/' rel='bookmark' title='Quadratische Gleichung Lösen'>Quadratische Gleichung Lösen</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist Teil meiner <a href="http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/" title="Sourcecode a Day: Jeden Tag ein Sourcecode">Sourcecode a Day</a>-Aktion.</p>
<p>Heute gibt&#8217;s eine simple Wrapper-Klasse für urllib aus Python3:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;"><span style="color: #808080; font-style: italic;"># -*- coding: utf-8 -*-</span>
<span style="color: #808080; font-style: italic;">#-------------------------------------------------------------------------------</span>
<span style="color: #808080; font-style: italic;"># Name:        NetConnector</span>
<span style="color: #808080; font-style: italic;"># Purpose:     Python urllib wrapper</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Author:      Alexander Thiemann</span>
<span style="color: #808080; font-style: italic;">#</span>
<span style="color: #808080; font-style: italic;"># Created:     10.10.2011</span>
<span style="color: #808080; font-style: italic;"># Copyright:   (c) Alexander Thiemann 2011</span>
<span style="color: #808080; font-style: italic;">#-------------------------------------------------------------------------------</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">urllib</span>.<span style="color: black;">request</span>, <span style="color: #dc143c;">urllib</span>.<span style="color: black;">parse</span>, <span style="color: #dc143c;">urllib</span>.<span style="color: black;">error</span>
<span style="color: #ff7700;font-weight:bold;">import</span> http.<span style="color: black;">cookiejar</span>
<span style="color: #ff7700;font-weight:bold;">import</span> <span style="color: #dc143c;">time</span>, <span style="color: #dc143c;">sys</span>
&nbsp;
<span style="color: #ff7700;font-weight:bold;">class</span> NetConnector:
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> <span style="color: #0000cd;">__init__</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, encoding=<span style="color: #483d8b;">'utf-8'</span><span style="color: black;">&#41;</span>:
        <span style="color: #008000;">self</span>.<span style="color: black;">userAgent</span> = <span style="color: #483d8b;">'Mozilla/5.0 (X11; U; Linux i686; de; rv:1.9) Gecko/2008060309 Firefox/3.0'</span>
&nbsp;
        <span style="color: #008000;">self</span>.<span style="color: black;">encoding</span> = encoding
        <span style="color: #008000;">self</span>.<span style="color: black;">cookiejar</span> = http.<span style="color: black;">cookiejar</span>.<span style="color: black;">CookieJar</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">opener</span> = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">request</span>.<span style="color: black;">build_opener</span><span style="color: black;">&#40;</span><span style="color: #dc143c;">urllib</span>.<span style="color: black;">request</span>.<span style="color: black;">HTTPCookieProcessor</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">cookiejar</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #dc143c;">urllib</span>.<span style="color: black;">request</span>.<span style="color: black;">install_opener</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">opener</span><span style="color: black;">&#41;</span>
        <span style="color: #008000;">self</span>.<span style="color: black;">opener</span>.<span style="color: black;">addheaders</span> = <span style="color: black;">&#91;</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">'User-agent'</span>, <span style="color: #008000;">self</span>.<span style="color: black;">userAgent</span><span style="color: black;">&#41;</span><span style="color: black;">&#93;</span>
&nbsp;
    <span style="color: #ff7700;font-weight:bold;">def</span> request<span style="color: black;">&#40;</span><span style="color: #008000;">self</span>, url, params=<span style="color: black;">&#123;</span><span style="color: black;">&#125;</span>, noencode=<span style="color: #008000;">False</span>, internalCount=<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>:
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;URL: &quot;</span> + url<span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
&nbsp;
        data = <span style="color: #483d8b;">&quot;&quot;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">try</span>:
&nbsp;
            <span style="color: #ff7700;font-weight:bold;">if</span> <span style="color: #008000;">len</span><span style="color: black;">&#40;</span>params<span style="color: black;">&#41;</span> <span style="color: #66cc66;">!</span>= <span style="color: #ff4500;">0</span>:
                <span style="color: #ff7700;font-weight:bold;">if</span> noencode:
                    req = params<span style="color: black;">&#91;</span><span style="color: #483d8b;">&quot;query&quot;</span><span style="color: black;">&#93;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">encoding</span><span style="color: black;">&#41;</span>
                <span style="color: #ff7700;font-weight:bold;">else</span>:
                    req = <span style="color: #dc143c;">urllib</span>.<span style="color: black;">parse</span>.<span style="color: black;">urlencode</span><span style="color: black;">&#40;</span>params<span style="color: black;">&#41;</span>.<span style="color: black;">encode</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">encoding</span><span style="color: black;">&#41;</span>
                    <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;Params: &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>req<span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
                sock = <span style="color: #008000;">self</span>.<span style="color: black;">opener</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>url, req<span style="color: black;">&#41;</span>
            <span style="color: #ff7700;font-weight:bold;">else</span>:
                sock = <span style="color: #008000;">self</span>.<span style="color: black;">opener</span>.<span style="color: #008000;">open</span><span style="color: black;">&#40;</span>url<span style="color: black;">&#41;</span>
&nbsp;
            data = sock.<span style="color: black;">read</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>.<span style="color: black;">decode</span><span style="color: black;">&#40;</span><span style="color: #008000;">self</span>.<span style="color: black;">encoding</span><span style="color: black;">&#41;</span>
            sock.<span style="color: black;">close</span><span style="color: black;">&#40;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #dc143c;">urllib</span>.<span style="color: black;">error</span>.<span style="color: black;">HTTPError</span> <span style="color: #ff7700;font-weight:bold;">as</span> e:
            <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;HTTP Error: &quot;</span>  + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>e.<span style="color: #dc143c;">code</span><span style="color: black;">&#41;</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">except</span> <span style="color: #dc143c;">urllib</span>.<span style="color: black;">error</span>.<span style="color: black;">URLError</span> <span style="color: #ff7700;font-weight:bold;">as</span> e:
            <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span>e<span style="color: black;">&#41;</span>
&nbsp;
            <span style="color: #ff7700;font-weight:bold;">if</span> internalCount <span style="color: #66cc66;">&gt;</span>= <span style="color: #ff4500;">2</span>: <span style="color: #808080; font-style: italic;"># edit this!</span>
                <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;[error] connection error. returning ''&quot;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
                <span style="color: #ff7700;font-weight:bold;">return</span> <span style="color: #483d8b;">&quot;&quot;</span>
&nbsp;
            <span style="color: #ff7700;font-weight:bold;">print</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;[error] connection error. Sleeping &quot;</span> + <span style="color: #008000;">str</span><span style="color: black;">&#40;</span>internalCount<span style="color: black;">&#41;</span> +  <span style="color: #483d8b;">&quot; seconds.&quot;</span><span style="color: black;">&#41;</span>
            <span style="color: #dc143c;">time</span>.<span style="color: black;">sleep</span><span style="color: black;">&#40;</span>internalCount<span style="color: black;">&#41;</span>
            data = <span style="color: #008000;">self</span>.<span style="color: black;">request</span><span style="color: black;">&#40;</span>url, params, noencode, internalCount+<span style="color: #ff4500;">1</span><span style="color: black;">&#41;</span>
&nbsp;
        <span style="color: #ff7700;font-weight:bold;">return</span> data</pre></div></div>

<p>Verwendung:</p>

<div class="wp_syntax"><div class="code"><pre class="python" style="font-family:monospace;">connector = NetConnector<span style="color: black;">&#40;</span><span style="color: black;">&#41;</span><span style="color: #66cc66;">;</span>
connector.<span style="color: black;">request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://google.de&quot;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># get-request, returns response</span>
connector.<span style="color: black;">request</span><span style="color: black;">&#40;</span><span style="color: #483d8b;">&quot;http://google.de&quot;</span>, <span style="color: black;">&#123;</span><span style="color: #483d8b;">'a'</span>: <span style="color: #483d8b;">'asdasd'</span><span style="color: black;">&#125;</span><span style="color: black;">&#41;</span> <span style="color: #808080; font-style: italic;"># post-request, returns response</span></pre></div></div>

<p>Das ganze codiert automatisch Post-Parameter und verwaltet Cookies <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=580&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
<li><a href='http://blog.agrafix.net/2009/07/quadratische-gleichung-losen/' rel='bookmark' title='Quadratische Gleichung Lösen'>Quadratische Gleichung Lösen</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/python3-urllib-wrapper-http-request-mit-python/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sehr simpler Captcha in PHP &#8211; Captcha.class.php</title>
		<link>http://blog.agrafix.net/2012/02/sehr-simpler-captcha-in-php-captcha-class-php/</link>
		<comments>http://blog.agrafix.net/2012/02/sehr-simpler-captcha-in-php-captcha-class-php/#comments</comments>
		<pubDate>Tue, 14 Feb 2012 14:27:16 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[botschutz]]></category>
		<category><![CDATA[captcha]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=578</guid>
		<description><![CDATA[Dieser Beitrag ist Teil meiner Sourecode a Day-Aktion. Heute möchte ich eine Klasse vorstellen, mit der man sehr einfache Captchas generieren und prüfen kann. Man sollte diese Klasse so jedoch nicht direkt verwenden, sondern zumindest statt imagestring imagettftext mit einer eigenen Schriftart verwenden. &#60;?php /** * a simple captcha * * @author Alexander Thiemann &#60;mail@agrafix.net&#62; [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/' rel='bookmark' title='Galgenmännchen KI &#8211; Hangman.class.php'>Galgenmännchen KI &#8211; Hangman.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/' rel='bookmark' title='Mehrsprachigkeit für PHP-Projekte: aLang.class.php'>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist Teil meiner <a href="http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/" title="Sourcecode a Day: Jeden Tag ein Sourcecode">Sourecode a Day</a>-Aktion.</p>
<p>Heute möchte ich eine Klasse vorstellen, mit der man sehr einfache Captchas generieren und prüfen kann. Man sollte diese Klasse so jedoch <a href="http://blog.agrafix.net/2011/02/mit-php-einen-simplen-captcha-cracken/" title="Mit PHP einen simplen Captcha cracken">nicht direkt verwenden</a>, sondern zumindest statt <b>imagestring</b> <b>imagettftext</b> mit einer eigenen Schriftart verwenden.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * a simple captcha
 *
 * @author Alexander Thiemann &lt;mail@agrafix.net&gt;
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> Captcha <span style="color: #009900;">&#123;</span>
	<span style="color: #009933; font-style: italic;">/**
	 * generate new captcha code
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> reinit<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xcaptcha&quot;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #990000;">rand</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">10000</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">99999</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * check the userinput + captcha
	 *
	 * @param string $code
	 * @return bool
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> check<span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xcaptcha&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$code</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$code</span> <span style="color: #339933;">==</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xcaptcha&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * generate captcha image
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> static <span style="color: #000000; font-weight: bold;">function</span> generate<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$im</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ImageCreate</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">55</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">20</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$white</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ImageColorAllocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$im</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span><span style="color: #339933;">,</span> <span style="color: #208080;">0xFF</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$black</span> <span style="color: #339933;">=</span> <span style="color: #990000;">ImageColorAllocate</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$im</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #339933;">,</span> <span style="color: #208080;">0x00</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ImageString</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$im</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">4</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">3</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_SESSION</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;xcaptcha&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$black</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #990000;">header</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;Content-Type: image/png&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ImagePNG</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$im</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ImageDestroy</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$im</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=578&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/' rel='bookmark' title='Galgenmännchen KI &#8211; Hangman.class.php'>Galgenmännchen KI &#8211; Hangman.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/' rel='bookmark' title='Mehrsprachigkeit für PHP-Projekte: aLang.class.php'>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/sehr-simpler-captcha-in-php-captcha-class-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</title>
		<link>http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/</link>
		<comments>http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/#comments</comments>
		<pubDate>Mon, 13 Feb 2012 13:30:14 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[curl]]></category>
		<category><![CDATA[webbrowser]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=575</guid>
		<description><![CDATA[Dieser Beitrag ist Teil meiner Sourecode a Day-Aktion. Eine simple nützliche Wrapper-Klasse, die den einfachen Umgang mit CURL ermöglicht. Cookies und Referer werden automatisch gespeichert. &#60;?php /** * Simple CURL Wrapper * * @author Alexander Thiemann &#60;mail@agrafix.net&#62; */ class WebBrowser &#123; /** * saves curl session * * @var cURL */ private $ch = null; [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/' rel='bookmark' title='Mehrsprachigkeit für PHP-Projekte: aLang.class.php'>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/' rel='bookmark' title='Einfache Datenbank-Klasse für PHP'>Einfache Datenbank-Klasse für PHP</a></li>
<li><a href='http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/' rel='bookmark' title='Galgenmännchen KI &#8211; Hangman.class.php'>Galgenmännchen KI &#8211; Hangman.class.php</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist Teil meiner <a href="http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/" title="Sourcecode a Day: Jeden Tag ein Sourcecode">Sourecode a Day</a>-Aktion. </p>
<p>Eine simple nützliche Wrapper-Klasse, die den einfachen Umgang mit CURL ermöglicht. Cookies und Referer werden automatisch gespeichert.</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * Simple CURL Wrapper
 *
 * @author Alexander Thiemann &lt;mail@agrafix.net&gt;
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> WebBrowser <span style="color: #009900;">&#123;</span>
	<span style="color: #009933; font-style: italic;">/**
	 * saves curl session
	 *
	 * @var cURL
	 */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$ch</span> <span style="color: #339933;">=</span> <span style="color: #009900; font-weight: bold;">null</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * saves referer
	 *
	 * @var string
	 */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$ref</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * saves results
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * init curl
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_init</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * destruct
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __destruct<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">curl_close</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * post
	 *
	 * @param string $url
	 * @param string $data
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> post<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_POST<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_POSTFIELDS<span style="color: #339933;">,</span> <span style="color: #000088;">$data</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">refer</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setopts</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ob_end_clean</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * get
	 *
	 * @param string $url
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> get<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">result</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_URL<span style="color: #339933;">,</span> <span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">refer</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setopts</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ob_start</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>  
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">result</span> <span style="color: #339933;">=</span> <span style="color: #990000;">curl_exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">ob_end_clean</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * update referer
	 *
	 * @param string $url
	 */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> refer<span style="color: #009900;">&#40;</span><span style="color: #000088;">$url</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">curl_setopt</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_REFERER<span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ref</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ref</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$url</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * set global opts
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000000; font-weight: bold;">function</span> setopts<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_FOLLOWLOCATION<span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_RETURNTRANSFER<span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #666666; font-style: italic;">// you may want to change this</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_USERAGENT<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;Mozilla/5.0 (Windows; U; Windows NT 6.0; de; rv:1.9.0.9) Gecko/2009040821 Firefox/3.0.9 (.NET CLR 3.5.30729)&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_COOKIEJAR<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;cookie&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">curl_setopt</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">ch</span><span style="color: #339933;">,</span> CURLOPT_COOKIEFILE<span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;cookie&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Die Verwendung:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$browser</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> WebBrowser<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// einfaches get request; Resultat in Datei speichern</span>
<span style="color: #000088;">$browser</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://google.de&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;tmp.txt&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;w+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$browser</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">result</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// post request</span>
<span style="color: #000088;">$browser</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">post</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;http://localhost/post.php&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;test_data=&quot;</span> <span style="color: #339933;">.</span> <span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;asdfg&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #666666; font-style: italic;">// response is in $browser-&gt;result</span></pre></div></div>

<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=575&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/' rel='bookmark' title='Mehrsprachigkeit für PHP-Projekte: aLang.class.php'>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/' rel='bookmark' title='Einfache Datenbank-Klasse für PHP'>Einfache Datenbank-Klasse für PHP</a></li>
<li><a href='http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/' rel='bookmark' title='Galgenmännchen KI &#8211; Hangman.class.php'>Galgenmännchen KI &#8211; Hangman.class.php</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Galgenmännchen KI &#8211; Hangman.class.php</title>
		<link>http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/</link>
		<comments>http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/#comments</comments>
		<pubDate>Sun, 12 Feb 2012 13:15:14 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[hangman]]></category>
		<category><![CDATA[solver]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=572</guid>
		<description><![CDATA[Dieser Beitrag ist Teil meiner Sourcecode a Day Aktion. Vor langer Zeit habe ich mir mal eine kleine Klasse zur Lösung von Galgenmännchen-Spielen geschrieben. Man benötigt zur Verwendung der Klasse eine Datei wordlist.txt, in der möglichst viele deutsche Wörter gespeichert sind! &#60;?php /** * Solve a Hangman game * * @author Alexander Thiemann &#60;mail@agrafix.net&#62; */ [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/' rel='bookmark' title='Mehrsprachigkeit für PHP-Projekte: aLang.class.php'>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/' rel='bookmark' title='Einfache Datenbank-Klasse für PHP'>Einfache Datenbank-Klasse für PHP</a></li>
<li><a href='http://blog.agrafix.net/2011/12/poker-abstraktion/' rel='bookmark' title='Poker Abstraktion'>Poker Abstraktion</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist Teil meiner <a href="http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/" title="Sourcecode a Day: Jeden Tag ein Sourcecode">Sourcecode a Day</a> Aktion.</p>
<p>Vor langer Zeit habe ich mir mal eine kleine Klasse zur Lösung von Galgenmännchen-Spielen geschrieben. Man benötigt zur Verwendung der Klasse eine Datei <i>wordlist.txt</i>, in der möglichst viele deutsche Wörter gespeichert sind!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * Solve a Hangman game
 *
 * @author Alexander Thiemann &lt;mail@agrafix.net&gt;
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> Hangman <span style="color: #009900;">&#123;</span>
	<span style="color: #009933; font-style: italic;">/**
	 * asked letters
	 *
	 * @var array
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$asked_letters</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * possible words
	 *
	 * @var array
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000088;">$possible_worlds</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * construct hangman ;)
	 *
	 * @param string $state
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$state</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$lines</span> <span style="color: #339933;">=</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;wordlist.txt&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$lines</span> <span style="color: #b1b100;">As</span> <span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$n</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strtolower</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">trim</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$line</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">WordCompare</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$state</span><span style="color: #339933;">,</span> <span style="color: #000088;">$n</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">possible_worlds</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$n</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * fetch suggestion
	 *
	 * @return string
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> getSuggestion<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$w</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;enisratdhulcgmobwfkzpvjyxq&quot;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// change this if you dont use german words!!</span>
		<span style="color: #b1b100;">for</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #cc66cc;">26</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #666666; font-style: italic;">//echo $w{$i};</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">in_array</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">asked_letters</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">LetterInWords</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">asked_letters</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$w</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #000088;">$w</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * check if letter is usefull
	 *
	 * @param string $letter
	 * @return bool
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> LetterInWords<span style="color: #009900;">&#40;</span><span style="color: #000088;">$letter</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">possible_worlds</span> <span style="color: #b1b100;">As</span> <span style="color: #000088;">$w_out</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$w_out</span><span style="color: #339933;">,</span> <span style="color: #000088;">$letter</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * compare two words, * is placeholder
	 *
	 * @param string $word
	 * @param string $compare
	 * @return bool
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> WordCompare<span style="color: #009900;">&#40;</span><span style="color: #000088;">$word</span><span style="color: #339933;">,</span> <span style="color: #000088;">$compare</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$ln</span> <span style="color: #339933;">=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$word</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ln</span> <span style="color: #339933;">!=</span> <span style="color: #990000;">strlen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$compare</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">for</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$i</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">&lt;</span><span style="color: #000088;">$ln</span><span style="color: #339933;">;</span><span style="color: #000088;">$i</span><span style="color: #339933;">++</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$word</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$compare</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #000088;">$word</span><span style="color: #009900;">&#123;</span><span style="color: #000088;">$i</span><span style="color: #009900;">&#125;</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;*&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Ein Beispiel zur Verwendung:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;state&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$state</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;***&quot;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$state</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;state&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #000088;">$Man</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> Hangman<span style="color: #009900;">&#40;</span><span style="color: #000088;">$state</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;letters&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #000088;">$Man</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">asked_letters</span> <span style="color: #339933;">=</span> <span style="color: #990000;">explode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;|&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_GET</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">&quot;letters&quot;</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Es sind noch &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$Man</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">possible_worlds</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; Kombinationen möglich.&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">count</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$Man</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">possible_worlds</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&lt;</span> <span style="color: #cc66cc;">50</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;, &quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$Man</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">possible_worlds</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;hr /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$Man</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">getSuggestion</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;hr /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;form action='Hangman.class.php'&gt;State: &lt;input value='&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$state</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;' name='state' /&gt; 
&lt;input name='letters' value='&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;|&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$Man</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">asked_letters</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;' /&gt;
&lt;input type='submit' /&gt;
&lt;/form&gt;&quot;</span><span style="color: #339933;">;</span></pre></div></div>

<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=572&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/' rel='bookmark' title='Mehrsprachigkeit für PHP-Projekte: aLang.class.php'>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/' rel='bookmark' title='Einfache Datenbank-Klasse für PHP'>Einfache Datenbank-Klasse für PHP</a></li>
<li><a href='http://blog.agrafix.net/2011/12/poker-abstraktion/' rel='bookmark' title='Poker Abstraktion'>Poker Abstraktion</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Einfache Datenbank-Klasse für PHP</title>
		<link>http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/</link>
		<comments>http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/#comments</comments>
		<pubDate>Sat, 11 Feb 2012 14:00:12 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[datenbank]]></category>
		<category><![CDATA[mysql]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=567</guid>
		<description><![CDATA[Dieser Beitrag ist Teil meiner Sourecode a Day-Aktion. Ich möchte eine Klasse vorstellen, die ich mir mal geschrieben habe um einfach auf mySQL-Datenbanken zuzugreifen. Ich verwende sie selbst allerdings nicht mehr, da CodeIgniter eine eigene Datenbank-Abstraktion liefert und die meisten PHP-Hosts jetzt auch mysqli unterstützen! &#60;?php /** * mySQL Database Class * * @author Alexander [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
<li><a href='http://blog.agrafix.net/2009/12/zwei-einfache-algorithmen-kgv-und-ggt/' rel='bookmark' title='Zwei einfache Algorithmen: kgV und ggT'>Zwei einfache Algorithmen: kgV und ggT</a></li>
<li><a href='http://blog.agrafix.net/2011/12/redbean-php-top-oder-flop/' rel='bookmark' title='RedBean PHP &#8211; Top oder Flop?'>RedBean PHP &#8211; Top oder Flop?</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist Teil meiner <a href="http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/" title="Sourcecode a Day: Jeden Tag ein Sourcecode">Sourecode a Day</a>-Aktion.</p>
<p>Ich möchte eine Klasse vorstellen, die ich mir mal geschrieben habe um einfach auf mySQL-Datenbanken zuzugreifen. Ich verwende sie selbst allerdings nicht mehr, da CodeIgniter eine eigene Datenbank-Abstraktion liefert und die meisten PHP-Hosts jetzt auch mysqli unterstützen!</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * mySQL Database Class
 *
 * @author Alexander Thiemann &lt;mail@agrafix.net&gt;
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> RealSQL <span style="color: #009900;">&#123;</span>
	<span style="color: #009933; font-style: italic;">/**
	 * db connector
	 *
	 * @var resource
	 */</span>
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$conn</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * save last query
	 *
	 * @var string
	 */</span>
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$last_query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * save query results
	 *
	 * @var array
	 */</span>
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000088;">$results</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * Store variables, eg. sql replacements
	 *
	 * @var array
	 */</span>
	<span style="color: #000000; font-weight: bold;">private</span> <span style="color: #000088;">$stored_variables</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * constructor -&gt; connect
	 *
	 * @param string $host
	 * @param string $user
	 * @param string $pass
	 * @param string $db
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> __construct<span style="color: #009900;">&#40;</span><span style="color: #000088;">$host</span><span style="color: #339933;">,</span> <span style="color: #000088;">$user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pass</span><span style="color: #339933;">,</span> <span style="color: #000088;">$db</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">mysql_connect</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$host</span><span style="color: #339933;">,</span> <span style="color: #000088;">$user</span><span style="color: #339933;">,</span> <span style="color: #000088;">$pass</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!@</span><span style="color: #990000;">mysql_select_db</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$db</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * execute query
	 *
	 * @param string $query
	 * @param int $id
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> query<span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">strpos</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;INSERT INTO&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">!==</span> <span style="color: #009900; font-weight: bold;">false</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!@</span><span style="color: #990000;">mysql_unbuffered_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">last_query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">results</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">mysql_query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #339933;">,</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">results</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">last_query</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$query</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">error</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * fetch as array/numrows/etc
	 *
	 * @param int $id
	 * @param string $fetchtype
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> fetch<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fetchtype</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">switch</span><span style="color: #009900;">&#40;</span><span style="color: #339933;">@</span><span style="color: #000088;">$fetchtype</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">case</span> <span style="color: #0000ff;">&quot;num_rows&quot;</span><span style="color: #339933;">:</span>
				<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_num_rows</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">results</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">default</span><span style="color: #339933;">:</span>
				<span style="color: #000088;">$ass</span> <span style="color: #339933;">=</span> <span style="color: #990000;">mysql_fetch_assoc</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">results</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
				<span style="color: #b1b100;">return</span> <span style="color: #000088;">$ass</span><span style="color: #339933;">;</span>
				<span style="color: #b1b100;">break</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * fetch all in one array
	 *
	 * @param int $id
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> tpl_fetch<span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$array</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$r</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$array</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$r</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$array</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * insert stuff into db
	 *
	 * @param array $data_array
	 * @param string $table
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> insert<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data_array</span><span style="color: #339933;">,</span> <span style="color: #000088;">$table</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$fields</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array_keys</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$data_array</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data_array</span> <span style="color: #b1b100;">As</span> <span style="color: #000088;">$k</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$data_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>double<span style="color: #009900;">&#41;</span><span style="color: #000088;">$v</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$data_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;INSERT INTO `&quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$table</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;` (`&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;`,`&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$fields</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;`) VALUES (&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;, &quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$data_array</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;)&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * update fieldset
	 *
	 * @param array $data_array
	 * @param string $table
	 * @param string $where
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> update<span style="color: #009900;">&#40;</span><span style="color: #000088;">$data_array</span><span style="color: #339933;">,</span> <span style="color: #000088;">$table</span><span style="color: #339933;">,</span> <span style="color: #000088;">$where</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
&nbsp;
		<span style="color: #000088;">$update</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">foreach</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$data_array</span> <span style="color: #b1b100;">As</span> <span style="color: #000088;">$k</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$data_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #009900;">&#40;</span>int<span style="color: #009900;">&#41;</span><span style="color: #000088;">$v</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
				<span style="color: #000088;">$data_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$v</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
&nbsp;
			<span style="color: #000088;">$update</span><span style="color: #009900;">&#91;</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;`<span style="color: #006699; font-weight: bold;">$k</span>` = &quot;</span><span style="color: #339933;">.</span><span style="color: #000088;">$data_array</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$k</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$query</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;UPDATE `<span style="color: #006699; font-weight: bold;">$table</span>` SET &quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;, &quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$update</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot; WHERE <span style="color: #006699; font-weight: bold;">$where</span>&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * set param (automatic urlencode+stripslashes+')
	 *
	 * @param string $key
	 * @param string $value
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> setParam<span style="color: #009900;">&#40;</span><span style="color: #000088;">$key</span><span style="color: #339933;">,</span> <span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_string</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">elseif</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">is_numeric</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$value</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$i</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">urlencode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">stripslashes</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$value</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;'&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">stored_variables</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$key</span><span style="color: #009900;">&#93;</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$i</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * delete all params
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> clearParams<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">stored_variables</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * execute paramed query
	 *
	 * @param string $sql
	 * @param int $id
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> <span style="color: #990000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #339933;">=</span><span style="color: #cc66cc;">0</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">foreach</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">stored_variables</span> <span style="color: #b1b100;">AS</span> <span style="color: #000088;">$key</span> <span style="color: #339933;">=&gt;</span> <span style="color: #000088;">$val</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$sql</span> <span style="color: #339933;">=</span> <span style="color: #990000;">str_replace</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;[<span style="color: #006699; font-weight: bold;">$key</span>]&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$val</span><span style="color: #339933;">,</span> <span style="color: #000088;">$sql</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$sql</span><span style="color: #339933;">,</span> <span style="color: #000088;">$id</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * returns last ai-id
	 *
	 * @return int
	 */</span>
	<span style="color: #000000; font-weight: bold;">public</span> <span style="color: #000000; font-weight: bold;">function</span> lastId<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #990000;">mysql_insert_id</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>	
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * error handler
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">protected</span> <span style="color: #000000; font-weight: bold;">function</span> error<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #666666; font-style: italic;">// uncomment this line </span>
		<span style="color: #666666; font-style: italic;">// if you have deployed the app</span>
		<span style="color: #666666; font-style: italic;">#die(&quot;Internal Server Error.&quot;); 
</span>		
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;div style='border:2px solid red;padding:5px;margin:5px'&gt;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;h1&gt;RealSQL Error Occured&lt;/h1&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">last_query</span> <span style="color: #339933;">!=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;h2&gt;Query&lt;/h2&gt;&lt;pr&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;e&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">last_query</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;&lt;/pr&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;e&gt;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;h2&gt;Error&lt;/h2&gt;&quot;</span><span style="color: #339933;">.</span><span style="color: #990000;">htmlspecialchars</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">mysql_error</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">conn</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;pr&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;e&gt;&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #990000;">print_r</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">debug_backtrace</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/pr&quot;</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;e&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;/div&gt;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #990000;">exit</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>Die Verwendung:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$db</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> RealSQL<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;localhost&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;root&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;test_db&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// einfach eine Query ausführen</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;UPDATE user SET username = 'asdf' WHERE id = 1&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// query ausführen und Ergebnisse holen</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">query</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM user&quot;</span><span style="color: #339933;">,</span> <span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #b1b100;">while</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$row</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">fetch</span><span style="color: #009900;">&#40;</span><span style="color: #cc66cc;">1</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span>
<span style="color: #009900;">&#123;</span>
	<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;Benutzer: &quot;</span> <span style="color: #339933;">.</span> <span style="color: #000088;">$row</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'username'</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
<span style="color: #009900;">&#125;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// neuen Eintrag in die DB</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">insert</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'test'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Eintrag ändern</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">update</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">'username'</span> <span style="color: #339933;">=&gt;</span> <span style="color: #0000ff;">'banana'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'user'</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">'id=2'</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #666666; font-style: italic;">// Query mit Parametern</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;user&quot;</span><span style="color: #339933;">,</span> <span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'user'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">setParam</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;pass&quot;</span><span style="color: #339933;">,</span> <span style="color: #990000;">md5</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$_POST</span><span style="color: #009900;">&#91;</span><span style="color: #0000ff;">'pass'</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">exec</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;SELECT * FROM user WHERE username = [user] AND password = [pass]&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
<span style="color: #000088;">$db</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">clearParams</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span></pre></div></div>

<p>Die aller erste <a href="http://managerslife.de">Manager&#8217;s Life</a> Version verwendete diese Klasse.</p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=567&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
<li><a href='http://blog.agrafix.net/2009/12/zwei-einfache-algorithmen-kgv-und-ggt/' rel='bookmark' title='Zwei einfache Algorithmen: kgV und ggT'>Zwei einfache Algorithmen: kgV und ggT</a></li>
<li><a href='http://blog.agrafix.net/2011/12/redbean-php-top-oder-flop/' rel='bookmark' title='RedBean PHP &#8211; Top oder Flop?'>RedBean PHP &#8211; Top oder Flop?</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/einfache-datenbank-klasse-fur-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Mehrsprachigkeit für PHP-Projekte: aLang.class.php</title>
		<link>http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/</link>
		<comments>http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 13:37:58 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[lang]]></category>
		<category><![CDATA[mehrsprachigkeit]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=563</guid>
		<description><![CDATA[Dieser Beitrag ist Teil meiner Sourecode a Day-Aktion. Heute möchte ich eine Klasse vorstellen, mit der man sehr einfach Mehrsprachigkeit in sein PHP-Projekt bringen kann: &#60;?php /** * Language management class * * @author agrafix */ class aLang &#123; /** * saves ini section that is used * * @var string */ var $section = [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/' rel='bookmark' title='Galgenmännchen KI &#8211; Hangman.class.php'>Galgenmännchen KI &#8211; Hangman.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/sehr-simpler-captcha-in-php-captcha-class-php/' rel='bookmark' title='Sehr simpler Captcha in PHP &#8211; Captcha.class.php'>Sehr simpler Captcha in PHP &#8211; Captcha.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Dieser Beitrag ist Teil meiner <a href="http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/" title="Sourcecode a Day: Jeden Tag ein Sourcecode">Sourecode a Day</a>-Aktion.</p>
<p>Heute möchte ich eine Klasse vorstellen, mit der man sehr einfach Mehrsprachigkeit in sein PHP-Projekt bringen kann:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000000; font-weight: bold;">&lt;?php</span>
<span style="color: #009933; font-style: italic;">/**
 * Language management class
 *
 * @author agrafix
 */</span>
<span style="color: #000000; font-weight: bold;">class</span> aLang <span style="color: #009900;">&#123;</span>
	<span style="color: #009933; font-style: italic;">/**
	 * saves ini section that is used
	 *
	 * @var string
	 */</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$section</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * saves current language
	 *
	 * @var string
	 */</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$lang</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * where do i find the language inis
	 *
	 * @var string
	 */</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$path</span> <span style="color: #339933;">=</span> <span style="color: #0000ff;">&quot;lang/&quot;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * parsed ini array
	 *
	 * @var array
	 */</span>
	<span style="color: #000000; font-weight: bold;">var</span> <span style="color: #000088;">$parsed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">array</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * setup the class
	 *
	 * @param string $section
	 * @param string $language
	 * @param string $path
	 */</span>
	<span style="color: #000000; font-weight: bold;">function</span> aLang<span style="color: #009900;">&#40;</span><span style="color: #000088;">$section</span><span style="color: #339933;">,</span> <span style="color: #000088;">$language</span><span style="color: #339933;">,</span> <span style="color: #000088;">$path</span><span style="color: #339933;">=</span><span style="color: #0000ff;">&quot;&quot;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">section</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$section</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$language</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">empty</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$path</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$path</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parse</span><span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * parse the language file
	 *
	 */</span>
	<span style="color: #000000; font-weight: bold;">function</span> parse<span style="color: #009900;">&#40;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$filename</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.ini&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$cachedata</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.cachedata&quot;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$cachearray</span> <span style="color: #339933;">=</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.cachearray&quot;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;aLang Error: Language File for <span style="color: #006699; font-weight: bold;">$this-&gt;lang</span> doesn't exist!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #666666; font-style: italic;">// caching system</span>
		<span style="color: #000088;">$ini_size</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachedata</span><span style="color: #009900;">&#41;</span> <span style="color: #339933;">&amp;&amp;</span> <span style="color: #990000;">file_exists</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachearray</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #000088;">$cachesize</span> <span style="color: #339933;">=</span> <span style="color: #990000;">implode</span> <span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">file</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachedata</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
			<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #000088;">$ini_size</span> <span style="color: #339933;">!=</span> <span style="color: #000088;">$cachesize</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// reparse</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">reparse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
			<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// load from cache</span>
				<span style="color: #000088;">$serialized</span> <span style="color: #339933;">=</span> <span style="color: #990000;">base64_decode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">implode</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">''</span><span style="color: #339933;">,</span> <span style="color: #990000;">file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$cachearray</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
				<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">unserialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$serialized</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
			<span style="color: #009900;">&#125;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">else</span> <span style="color: #009900;">&#123;</span> <span style="color: #666666; font-style: italic;">// reparse</span>
			<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">reparse</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$filename</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * parse ini file and write cache
	 *
	 * @param string $fname
	 */</span>
	<span style="color: #000000; font-weight: bold;">function</span> reparse<span style="color: #009900;">&#40;</span><span style="color: #000088;">$fname</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span> <span style="color: #339933;">=</span> <span style="color: #990000;">parse_ini_file</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fname</span><span style="color: #339933;">,</span> <span style="color: #009900; font-weight: bold;">true</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #000088;">$ini_size</span> <span style="color: #339933;">=</span> <span style="color: #990000;">filesize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fname</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.cachedata&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;w+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">@</span><span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #000088;">$ini_size</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">@</span><span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
&nbsp;
		<span style="color: #000088;">$fp</span> <span style="color: #339933;">=</span> <span style="color: #339933;">@</span><span style="color: #990000;">fopen</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">path</span><span style="color: #339933;">.</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">lang</span><span style="color: #339933;">.</span><span style="color: #0000ff;">&quot;.cachearray&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;w+&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">@</span><span style="color: #990000;">fwrite</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #339933;">,</span> <span style="color: #990000;">base64_encode</span><span style="color: #009900;">&#40;</span><span style="color: #990000;">serialize</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #339933;">@</span><span style="color: #990000;">fclose</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$fp</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * grab translation
	 *
	 * @param string $varname
	 * @return string
	 */</span>
	<span style="color: #000000; font-weight: bold;">function</span> get<span style="color: #009900;">&#40;</span><span style="color: #000088;">$varname</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">section</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$varname</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;aLang Error: <span style="color: #006699; font-weight: bold;">$this-&gt;section</span>[<span style="color: #006699; font-weight: bold;">$varname</span>] not found!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">section</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$varname</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
&nbsp;
	<span style="color: #009933; font-style: italic;">/**
	 * grab translation out of specified section
	 *
	 * @param string $section
	 * @param string $varname
	 * @return string
	 */</span>
	<span style="color: #000000; font-weight: bold;">function</span> grab<span style="color: #009900;">&#40;</span><span style="color: #000088;">$section</span><span style="color: #339933;">,</span> <span style="color: #000088;">$varname</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
		<span style="color: #b1b100;">if</span> <span style="color: #009900;">&#40;</span><span style="color: #339933;">!</span><span style="color: #990000;">isset</span><span style="color: #009900;">&#40;</span><span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$section</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$varname</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#41;</span><span style="color: #009900;">&#41;</span> <span style="color: #009900;">&#123;</span>
			<span style="color: #990000;">die</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;aLang Error: <span style="color: #006699; font-weight: bold;">$section</span>[<span style="color: #006699; font-weight: bold;">$varname</span>] not found!&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
		<span style="color: #009900;">&#125;</span>
&nbsp;
		<span style="color: #b1b100;">return</span> <span style="color: #000088;">$this</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">parsed</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$section</span><span style="color: #009900;">&#93;</span><span style="color: #009900;">&#91;</span><span style="color: #000088;">$varname</span><span style="color: #009900;">&#93;</span><span style="color: #339933;">;</span>
	<span style="color: #009900;">&#125;</span>
<span style="color: #009900;">&#125;</span>
<span style="color: #000000; font-weight: bold;">?&gt;</span></pre></div></div>

<p>In dieser Konfiguration müssten die Sprachdateien nun in den Ornder <i>lang/</i>. Beispiel für eine <i>de.ini</i>:</p>

<div class="wp_syntax"><div class="code"><pre class="ini" style="font-family:monospace;"><span style="color: #000066; font-weight:bold;"><span style="">&#91;</span>main<span style="">&#93;</span></span>
<span style="color: #000099;">hello</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Hallo</span>
<span style="color: #000099;">test</span><span style="color: #000066; font-weight:bold;">=</span><span style="color: #660066;">Das ist ein kleiner Test</span></pre></div></div>

<p>Verwendung:</p>

<div class="wp_syntax"><div class="code"><pre class="php" style="font-family:monospace;"><span style="color: #000088;">$lang</span> <span style="color: #339933;">=</span> <span style="color: #000000; font-weight: bold;">new</span> aLang<span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;main&quot;</span><span style="color: #339933;">,</span> <span style="color: #0000ff;">&quot;de&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$lang</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;hello&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// prints Hello</span>
<span style="color: #b1b100;">echo</span> <span style="color: #0000ff;">&quot;&lt;br /&gt;&quot;</span><span style="color: #339933;">;</span>
<span style="color: #b1b100;">echo</span> <span style="color: #000088;">$lang</span><span style="color: #339933;">-&gt;</span><span style="color: #004000;">get</span><span style="color: #009900;">&#40;</span><span style="color: #0000ff;">&quot;test&quot;</span><span style="color: #009900;">&#41;</span><span style="color: #339933;">;</span> <span style="color: #666666; font-style: italic;">// prints Das ist ein kleiner Test</span></pre></div></div>

<p>Die Klasse wird übrigens in abgewandelter Form in der aktuellen <a href="http://twlan.org">TWLan</a>-Version verwendet <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=563&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/02/galgenmannchen-ki-hangman-class-php/' rel='bookmark' title='Galgenmännchen KI &#8211; Hangman.class.php'>Galgenmännchen KI &#8211; Hangman.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/sehr-simpler-captcha-in-php-captcha-class-php/' rel='bookmark' title='Sehr simpler Captcha in PHP &#8211; Captcha.class.php'>Sehr simpler Captcha in PHP &#8211; Captcha.class.php</a></li>
<li><a href='http://blog.agrafix.net/2012/02/curl-wrapper-klasse-in-php-webbrowser-class-php/' rel='bookmark' title='CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php'>CURL Wrapper-Klasse in PHP &#8211; WebBrowser.class.php</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/mehrsprachigkeit-fur-php-projekte-alang-class-php/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Sourcecode a Day: Jeden Tag ein Sourcecode</title>
		<link>http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/</link>
		<comments>http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/#comments</comments>
		<pubDate>Fri, 10 Feb 2012 13:29:47 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[Sourcecode a Day]]></category>
		<category><![CDATA[opensource]]></category>
		<category><![CDATA[sourcecode]]></category>
		<category><![CDATA[wtfpl]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=559</guid>
		<description><![CDATA[Hallo, ich habe vor eine kleine Aktion auf meinem Blog zu starten: Ich werde ab heute jeden Tag einen Sourcecode posten. Mit Sourcecode sind alle möglichen Klassen, Code-Schnipsel und kleinere Scripts gemeint &#8211; alles was sich so auf meiner Festplatte gesammelt hat und veröffentlich werden soll. Teilweise sind die Sourcecodes schon etwas älter, weshalb der [...]
<em>Keine ähnlichen Beiträge vorhanden</em>]]></description>
			<content:encoded><![CDATA[<p>Hallo,</p>
<p>ich habe vor eine kleine Aktion auf meinem Blog zu starten: Ich werde ab heute jeden Tag einen Sourcecode posten. Mit Sourcecode sind alle möglichen Klassen, Code-Schnipsel und kleinere Scripts gemeint &#8211; alles was sich so auf meiner Festplatte gesammelt hat und veröffentlich werden soll. Teilweise sind die Sourcecodes schon etwas älter, weshalb der Code nicht unbedingt schön ist, allerdings kann man mit jedem noch etwas anfangen und ggf. sogar noch etwas daraus lernen! Da die Sourecodes nicht immer unbedingt kommentiert sind könnten Fragen aufkommen &#8211; diese dann einfach als Kommentar posten und ich werde versuchen sie zu Beantworten! <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Alle Sourecodes stehen unter der <a href="http://sam.zoy.org/wtfpl/" target="_blank">WTFPL</a>-Lizenz, das heißt jeder kann damit machen was er will:</p>
<blockquote><p>This program is free software. It comes without any warranty, to<br />
the extent permitted by applicable law. You can redistribute it<br />
and/or modify it under the terms of the Do What The Fuck You Want<br />
To Public License, Version 2, as published by Sam Hocevar. See<br />
http://sam.zoy.org/wtfpl/COPYING for more details.</p></blockquote>
<p>Wie lange ich diese Aktion machen werde ist noch nicht ganz klar &#8211; ich lege mich jetzt erstmal auf 7 Sourecodes (= 7 Tage) fest.</p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=559&type=feed" alt="" /><p><em>Keine ähnlichen Beiträge vorhanden</em></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/sourcecode-a-day-jeden-tag-ein-sourcecode/feed/</wfw:commentRss>
		<slash:comments>6</slash:comments>
		</item>
		<item>
		<title>Jint &#8211; JavaScripting für .NET</title>
		<link>http://blog.agrafix.net/2012/02/jint-javascripting-fuer-net/</link>
		<comments>http://blog.agrafix.net/2012/02/jint-javascripting-fuer-net/#comments</comments>
		<pubDate>Tue, 07 Feb 2012 10:56:18 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[C-Sharp]]></category>
		<category><![CDATA[c#]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[ki]]></category>
		<category><![CDATA[net]]></category>
		<category><![CDATA[poker]]></category>
		<category><![CDATA[rpg]]></category>
		<category><![CDATA[scripting]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=551</guid>
		<description><![CDATA[Viele Spiele bieten die Möglichkeit diese per Scripting zu erweitern. Dabei kann man etwa eine Map oder eine KI mit Scriptsprachen realisieren. Sehr beliebt ist hier LUA. Leider ist jedoch LUA unter den Leuten deutlich weniger bekannt und verbreitet als JavaScript, weshalb ich neulich nach einer Möglichkeit gesucht habe Scripting per JavaScript zu ermöglichen. Da [...]
<em>Keine ähnlichen Beiträge vorhanden</em>]]></description>
			<content:encoded><![CDATA[<p>Viele Spiele bieten die Möglichkeit diese per Scripting zu erweitern. Dabei kann man etwa eine Map oder eine KI mit Scriptsprachen realisieren. Sehr beliebt ist hier LUA. Leider ist jedoch LUA unter den Leuten deutlich weniger bekannt und verbreitet als JavaScript, weshalb ich neulich nach einer Möglichkeit gesucht habe Scripting per JavaScript zu ermöglichen. Da ich derzeit an einem .NET Projekt arbeite, habe ich natürlich nach entsprechenden .NET Lösungen gesucht. Hierbei bin ich auf <a href="http://jint.codeplex.com/" title="Jint">Jint &#8211; JavaScript Interpreter for .NET</a> gestoßen. Das ganze bietet einen vollen JavaScript Interpreter, der so ziemlich die meisten JavaScript Features unterstützt (für mehr Info&#8217;s siehe Webseite). Das Coole daran ist, dass sich auch sehr einfach .NET Objekte und Funktionen in JavaScript aufrufen lassen und umgekehrt. Hier mal ein einfaches Beispiel:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #6666cc; font-weight: bold;">string</span> script <span style="color: #008000;">=</span> <span style="color: #666666;">@&quot;var distance = function(x1, y1, x2, y2)
{
	return Math.sqrt(Math.pow(x2 - x1, 2) + Math.pow(y2 - y1, 2));
};&quot;</span><span style="color: #008000;">;</span>
&nbsp;
<span style="color: #6666cc; font-weight: bold;">double</span> dist <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">double</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">new</span> JintEngine<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">.</span><span style="color: #0000FF;">Run</span><span style="color: #008000;">&#40;</span>script<span style="color: #008000;">&#41;</span>
			<span style="color: #008000;">.</span><span style="color: #0000FF;">CallFunction</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;distance&quot;</span>, <span style="color: #FF0000;">5</span>, <span style="color: #FF0000;">5</span>, <span style="color: #FF0000;">5</span>, <span style="color: #FF0000;">10</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Würde man <b>script</b> jetzt aus einer Datei lesen, könnte man dem Benutzer ermöglichen eine eigene Funktion zur Berrechnung einer Distanz zu definieren. Das gute hierbei ist auch, dass man genau Kontrollieren kann auf welche Objekte aus .NET der Benutzer Zugriff hat. (<strong>JEngine.AddPermission()</strong>, <strong>JEngine.AllowClr</strong>, <strong>JEngine.DisableSecurity()</strong>)<br />
Dadurch entstehen auch keine Sicherheitsprobleme. Man kann sogar die maximale Anzahl von Rekursionen begrenzen (<strong>JEngine.SetMaxRecursions</strong>). </p>
<p>Ein .NET Objekt an ein Script zu übergeben geht auch sehr einfach:</p>

<div class="wp_syntax"><div class="code"><pre class="csharp" style="font-family:monospace;"><span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">class</span> Randomizer <span style="color: #008000;">&#123;</span>
	<span style="color: #0600FF; font-weight: bold;">private</span> Random r <span style="color: #008000;">=</span> <span style="color: #008000;">new</span> Random<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
&nbsp;
	<span style="color: #0600FF; font-weight: bold;">public</span> <span style="color: #6666cc; font-weight: bold;">int</span> getRandomInt<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0600FF; font-weight: bold;">return</span> r<span style="color: #008000;">.</span><span style="color: #0000FF;">Next</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #6666cc; font-weight: bold;">int</span> random123 <span style="color: #008000;">=</span> <span style="color: #008000;">&#40;</span><span style="color: #6666cc; font-weight: bold;">int</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">new</span> JintEngine<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">.</span><span style="color: #0000FF;">setParameter</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">&quot;Randomizer&quot;</span>, <span style="color: #008000;">new</span> Randomizer<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">.</span><span style="color: #0000FF;">Run</span><span style="color: #008000;">&#40;</span><span style="color: #666666;">@&quot;var random_number = Randomizer.getRandomInt();
	return random_number + 123;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">;</span></pre></div></div>

<p>Das ganze ist also wirklich einfach zu verwenden und bietet sehr viele Möglichkeiten. Man könnte ein <a href="http://de.partypoker.com/" target="_blank" title="PartyPoker">Poker-Spiel</a> programmieren und dann KIs per JavaScript ermöglichen, oder aber zum Beispiel Quests und NPCs in Rollenspielen per JavaScript programmieren. Ein weiterer Vorteil ist, dass die JavaScripts zur Laufzeit geladen werden können, und jeder Zeit neugeladen werden können. Das heißt auch das Testen geht wesentlich einfacher! <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=551&type=feed" alt="" /><p><em>Keine ähnlichen Beiträge vorhanden</em></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/02/jint-javascripting-fuer-net/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>C++ CGI und mySQL</title>
		<link>http://blog.agrafix.net/2012/01/c-cgi-und-mysql/</link>
		<comments>http://blog.agrafix.net/2012/01/c-cgi-und-mysql/#comments</comments>
		<pubDate>Wed, 25 Jan 2012 06:55:08 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[CGI]]></category>
		<category><![CDATA[mySQL]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[c++]]></category>
		<category><![CDATA[cgi]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[dslan]]></category>
		<category><![CDATA[mysql]]></category>
		<category><![CDATA[twlan]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=544</guid>
		<description><![CDATA[Ein CGI-Programm in C++ zu schreiben ist &#8211; eigentlich &#8211; ziemlich einfach: #include &#60;iostream&#62; &#160; using namespace std; &#160; int main&#40;&#41; &#123; cout &#60;&#60; &#34;Content-Type: text/html&#34; &#60;&#60; endl &#60;&#60; endl; &#160; cout &#60;&#60; &#34;&#60;html&#62;&#60;head&#62;&#60;title&#62;Hello CGI&#60;/title&#62;&#60;/head&#62;&#60;body&#62;&#34; &#60;&#60; endl; cout &#60;&#60; &#34;&#60;h1&#62;C++ says Hi to the CGI API&#60;/h1&#62;&#34; &#60;&#60; endl; cout &#60;&#60; &#34;&#60;/body&#62;&#60;/html&#62;&#34; &#60;&#60; endl; &#160; return [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/01/websocketserver/' rel='bookmark' title='WebSocketServer'>WebSocketServer</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Ein CGI-Programm in C++ zu schreiben ist &#8211; eigentlich &#8211; ziemlich einfach:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Content-Type: text/html&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello CGI&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;&lt;h1&gt;C++ says Hi to the CGI API&lt;/h1&gt;&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;&lt;/body&gt;&lt;/html&gt;&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Das ganze kann man jetzt durch einen C++ Compiler jagen, in das cgi-bin Verzeichniss des Webservers verschrieben, chmod +x, und dann zB unter http://webserver/cgi-bin/test.cgi ansehen. Nicht sehr spannend, da man diese statische Seite ja auch direkt in HTML schreiben hätte können und sich den Umweg über CGI sparen hätte können.</p>
<p>Interessant wird es also, wenn man mit C++ über CGI dynamische Webseiten (dynamisch nicht im Sinne von JavaScript, sondern eher ähnlich wie PHP) generieren möchte. Ein erster Schritt wäre hier, die GET-Variablen auszulesen. Die GET-Variablen werden von der CGI in die Environment-Variable <strong>QUERY_STRING</strong> geschrieben, und zwar in folgendem Format:<br />
<code>[key1]=[value1]&#038;[key2]=[value2]&#038;....&#038;[keyN]=[valueN]</code><br />
Wir müssen uns also eine Funktion zum Parsen dieses Strings schreiben:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #0000ff;">void</span> getVariables<span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">unordered_map</span><span style="color: #000080;">&lt;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span>, std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #000080;">&gt;</span> <span style="color: #000040;">&amp;</span>variables<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #666666;">// fetch the query string</span>
	<span style="color: #0000ff;">char</span><span style="color: #000040;">*</span> raw_query_string <span style="color: #000080;">=</span> <span style="color: #0000dd;">getenv</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;QUERY_STRING&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #666666;">// query string empty?</span>
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>raw_query_string <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> 
	<span style="color: #008000;">&#123;</span>
		variables.<span style="color: #007788;">clear</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> variables<span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
	<span style="color: #666666;">// key and value into a stringstream, init with an empty stream</span>
	<span style="color: #666666;">// to make sure get-queries such as ?step=1&amp;confirm are parsed </span>
	<span style="color: #666666;">// correctly</span>
	std<span style="color: #008080;">::</span><span style="color: #007788;">stringstream</span> key, value<span style="color: #008080;">;</span>
&nbsp;
	key.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	value.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #666666;">// are we currently parsing a key or a value?</span>
	<span style="color: #0000ff;">bool</span> isKey <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #666666;">// loop until we read all raw data</span>
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>raw_query_string <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #FF0000;">'<span style="color: #006699; font-weight: bold;">\0</span>'</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #666666;">// if we read a &amp;, we'll change or type to key and store </span>
		<span style="color: #666666;">// are previous key and value variables into out map</span>
		<span style="color: #666666;">// and clear them</span>
		<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>raw_query_string <span style="color: #000080;">==</span> <span style="color: #FF0000;">'&amp;'</span><span style="color: #008000;">&#41;</span> 
		<span style="color: #008000;">&#123;</span> 
			variables<span style="color: #008000;">&#91;</span>key.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> value.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			isKey <span style="color: #000080;">=</span> <span style="color: #0000ff;">true</span><span style="color: #008080;">;</span> 
			key.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
			value.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&quot;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #666666;">// if we read a =, we'll change or type to value</span>
		<span style="color: #0000ff;">else</span> <span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span><span style="color: #000040;">*</span>raw_query_string <span style="color: #000080;">==</span> <span style="color: #FF0000;">'='</span><span style="color: #008000;">&#41;</span> 
		<span style="color: #008000;">&#123;</span> 
			isKey <span style="color: #000080;">=</span> <span style="color: #0000ff;">false</span><span style="color: #008080;">;</span> 
		<span style="color: #008000;">&#125;</span>
		<span style="color: #666666;">// anything else goes into the currently active stream</span>
		<span style="color: #0000ff;">else</span> 
		<span style="color: #008000;">&#123;</span>
			<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>isKey<span style="color: #008000;">&#41;</span> <span style="color: #008000;">&#123;</span> key <span style="color: #000080;">&lt;&lt;</span> <span style="color: #000040;">*</span>raw_query_string<span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
			<span style="color: #0000ff;">else</span> <span style="color: #008000;">&#123;</span> value <span style="color: #000080;">&lt;&lt;</span> <span style="color: #000040;">*</span>raw_query_string<span style="color: #008080;">;</span> <span style="color: #008000;">&#125;</span>
		<span style="color: #008000;">&#125;</span>
		<span style="color: #666666;">// move pointer to next char</span>
		raw_query_string<span style="color: #000040;">++</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
	<span style="color: #666666;">// store last key value pair, because query-strings </span>
	<span style="color: #666666;">// normaly don't end on &amp;</span>
	variables<span style="color: #008000;">&#91;</span>key.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008000;">&#93;</span> <span style="color: #000080;">=</span> value.<span style="color: #007788;">str</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">return</span> variables<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Das Problem ist, dass die <i>keys</i> und <i>values</i> URL-codiert sind, wenn man also Text verarbeiten möchte muss man sie noch entsprechend dekodieren. Das ist aber an dieser Stelle erstmal Aufgabe des Lesers <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_wink.gif' alt=';-)' class='wp-smiley' /> </p>
<p>Natürlich möchte man jetzt nicht nur GET-Variablen lesen, sondern auch Daten empfangen können, die per POST geschickt werden. Diese schickt der WebServer an <em>stdin</em> des CGI-Scripts. Und leider nicht \0-terminiert, aber das ist kein Problem, da die Umgebungsvariable <b>CONTENT_LENGTH</b> die genaue Länge der POST-Daten enthält. Die POST Daten sind in gleichen Format wie die GET-Daten. Das Parsen funktioniert also entsprechend ähnlich, allerdings muss man erst beispielsweise per fread die Daten aus dem <i>stdin</i> in ein char-buffer lesen und \0-terminieren bevor man sie durch entsprechende parsing Funktion schicken kann.</p>
<p>Mit diesen zwei Funktionalitäten kann man schon eine Menge anstellen (wie zB ein Datei-basiertes Gästebuch), allerdings muss man beim Ausgeben von Benutzereingaben daran denken diese Entsprechend zu Maskieren, damit man keine XSS-Attacken und Ähnliches erlaubt. Dafür habe ich mir folgende kleine Hilfsfunktion geschrieben:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;">std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> htmlspecialchars<span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> input<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	replaceAll<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&amp;&quot;</span>, <span style="color: #FF0000;">&quot;&amp;amp;&quot;</span>, input<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	replaceAll<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&lt;&quot;</span>, <span style="color: #FF0000;">&quot;&amp;lt;&quot;</span>, input<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	replaceAll<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&gt;&quot;</span>, <span style="color: #FF0000;">&quot;&amp;gt;&quot;</span>, input<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	replaceAll<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;'&quot;</span>, <span style="color: #FF0000;">&quot;&amp;#039;&quot;</span>, input<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	replaceAll<span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;<span style="color: #000099; font-weight: bold;">\&quot;</span>&quot;</span>, <span style="color: #FF0000;">&quot;&amp;quot;&quot;</span>, input<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">return</span> input<span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span>
&nbsp;
<span style="color: #0000ff;">void</span> replaceAll<span style="color: #008000;">&#40;</span>std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> search, std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> replace, std<span style="color: #008080;">::</span><span style="color: #007788;">string</span> <span style="color: #000040;">&amp;</span>str<span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000ff;">size_t</span> currPos <span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #0000ff;">size_t</span> findPos<span style="color: #008080;">;</span>
	<span style="color: #0000ff;">while</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#40;</span>findPos <span style="color: #000080;">=</span> str.<span style="color: #007788;">find</span><span style="color: #008000;">&#40;</span>search, currPos<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> std<span style="color: #008080;">::</span><span style="color: #007788;">string</span><span style="color: #008080;">::</span><span style="color: #007788;">npos</span><span style="color: #008000;">&#41;</span> 
	<span style="color: #008000;">&#123;</span>
		str.<span style="color: #007788;">replace</span><span style="color: #008000;">&#40;</span>findPos, search.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>, replace<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		currPos <span style="color: #000080;">=</span> findPos <span style="color: #000040;">+</span> replace.<span style="color: #007788;">size</span><span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Jetzt wird&#8217;s entlich interessant: Wir möchten in unserer C++ CGI-Anwendung natürlich auch (wie gewohnt aus PHP) eine mySQL-Datenbank ansprechen. Ich habe zuerst ziemlich lange mit dem MySQL Connector/C++ rumprobiert, hab das ganze allerdings nicht wirklich vernünftig zum Laufen bekommen (wenn Details gewünscht sind, kann ich gerne noch einen weiteren Blogpost dazu schreiben <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_biggrin.gif' alt=':-D' class='wp-smiley' /> ). Viele Probleme die bei mir aufgetreten sind waren wohl nicht unbekannt und sind (teilweise) sogar ohne Lösung auf StackOverflow zu finden. Dort bin ich dann auch auf die Idee gekommen einfach die MySQL C-API zu nehmen. Gesagt getan, ich hab mir einen kleinen Wrapper dafür geschrieben und ab dort konnte ich ohne Probleme über C++ mit meiner mySQL Datenbank reden. Um die C-API zu benutzen, muss man einfach von der MySQL Homepage den &#8220;C-Connector&#8221; runterladen, das include-Directory im Compiler mit einbinden, das lib-Directory dem Linker geben und mit der libmysql linken. Dann kann man die Funktionen per #include &#8220;mysql.h&#8221; laden und verwenden. Je nach Projekt kann es nötig sein noch die SOCKET-Header (unter windows winsock2.h, unter linux sys/socket.h und arpa/inet.h) einzubinden.</p>
<p>Kleines Beispiel-Programm:</p>

<div class="wp_syntax"><div class="code"><pre class="cpp" style="font-family:monospace;"><span style="color: #339900;">#include &lt;iostream&gt;</span>
&nbsp;
<span style="color: #339900;">#include &quot;mysql.h&quot;</span>
&nbsp;
<span style="color: #0000ff;">using</span> <span style="color: #0000ff;">namespace</span> std<span style="color: #008080;">;</span>
&nbsp;
<span style="color: #0000ff;">int</span> main<span style="color: #008000;">&#40;</span><span style="color: #008000;">&#41;</span>
<span style="color: #008000;">&#123;</span>
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;Content-Type: text/html&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;&lt;html&gt;<span style="color: #000099; font-weight: bold;">\n</span>&lt;head&gt;&lt;title&gt;mySQL TEST&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
&nbsp;
	MYSQL <span style="color: #000040;">*</span>conn <span style="color: #000080;">=</span> mysql_init<span style="color: #008000;">&#40;</span><span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>mysql_real_connect<span style="color: #008000;">&#40;</span>conn, <span style="color: #FF0000;">&quot;localhost&quot;</span>, <span style="color: #FF0000;">&quot;root&quot;</span>, <span style="color: #FF0000;">&quot;&quot;</span>, <span style="color: #FF0000;">&quot;testdatabase&quot;</span>, <span style="color: #0000ff;">NULL</span>, <span style="color: #0000dd;">0</span>, <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span> <span style="color: #000080;">==</span> <span style="color: #0000ff;">NULL</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;mySQL Error #%u: %s &lt;br /&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, mysql_errno<span style="color: #008000;">&#40;</span>conn<span style="color: #008000;">&#41;</span>, mysql_error<span style="color: #008000;">&#40;</span>conn<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
	<span style="color: #0000ff;">if</span> <span style="color: #008000;">&#40;</span>mysql_real_query<span style="color: #008000;">&#40;</span>conn, <span style="color: #FF0000;">&quot;SELECT name, age FROM clients&quot;</span><span style="color: #008000;">&#41;</span> <span style="color: #000040;">!</span><span style="color: #000080;">=</span> <span style="color: #0000dd;">0</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;mySQL Error #%u: %s &lt;br /&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, mysql_errno<span style="color: #008000;">&#40;</span>conn<span style="color: #008000;">&#41;</span>, mysql_error<span style="color: #008000;">&#40;</span>conn<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
		<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;&lt;h1&gt;Client age table:&lt;/h1&gt;&lt;table&gt; &lt;tr&gt; &lt;th&gt;Name&lt;/th&gt; &lt;th&gt;age&lt;/th&gt; &lt;/tr&gt;&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
&nbsp;
	MYSQL_RES <span style="color: #000040;">*</span>result <span style="color: #000080;">=</span> mysql_store_result<span style="color: #008000;">&#40;</span>conn<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	MYSQL_ROW row<span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">while</span> <span style="color: #008000;">&#40;</span>row <span style="color: #000080;">=</span> mysql_fetch_row<span style="color: #008000;">&#40;</span>result<span style="color: #008000;">&#41;</span><span style="color: #008000;">&#41;</span>
	<span style="color: #008000;">&#123;</span>
		<span style="color: #0000dd;">printf</span><span style="color: #008000;">&#40;</span><span style="color: #FF0000;">&quot;&lt;tr&gt;&lt;td&gt;%s&lt;/td&gt;&lt;td&gt;%d&lt;/td&gt;&lt;/tr&gt;<span style="color: #000099; font-weight: bold;">\n</span>&quot;</span>, row<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">0</span><span style="color: #008000;">&#93;</span>, row<span style="color: #008000;">&#91;</span><span style="color: #0000dd;">1</span><span style="color: #008000;">&#93;</span><span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	<span style="color: #008000;">&#125;</span>
&nbsp;
	mysql_free_result<span style="color: #008000;">&#40;</span>result<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
	mysql_close<span style="color: #008000;">&#40;</span>conn<span style="color: #008000;">&#41;</span><span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000dd;">cout</span> <span style="color: #000080;">&lt;&lt;</span> <span style="color: #FF0000;">&quot;&lt;/table&gt;&lt;/body&gt;&lt;/html&gt;&quot;</span> <span style="color: #000080;">&lt;&lt;</span> endl<span style="color: #008080;">;</span>
&nbsp;
	<span style="color: #0000ff;">return</span> <span style="color: #0000dd;">0</span><span style="color: #008080;">;</span>
<span style="color: #008000;">&#125;</span></pre></div></div>

<p>Da ich ja am TWLan-Projekt mitarbeite (<a href="http://www.twlan.org" title="TWLan">www.twlan.org</a>) habe ich als Test mal die Startseite und die Registration in C++ implementiert. Dafür habe ich noch eine kleine C++ HTML Template Klasse geschrieben, ist allerdings nichts besonderes. Nun habe ich die PHP-Startseite und die C++ CGI-Startseite mal (ohne Caching) gegeneinander im Punkto Geschwindigkeit gegenübergestellt:</p>
<pre>PHP-TWLan: 0.2501s 0.0743s 0.0771s 0.0693s 0.0672s 0.0635s 0.0775s
AVG:	   0.097s

CGI-TWLan: 0.0220s 0.0321s 0.0142s 0.0354s 0.0199s 0.0194s 0.0195s
AVG:	   0.023s</pre>
<p>Die CGI-Version ist, selbst bei nur 2-Datenbank-Abfragen, 4x schneller als der PHP-Code. Der sehr hohe Wert bei der ersten PHP-Zeitmessung erklärt sich übrigens dadurch, dass die Zend-Engine beim ersten durchlauf den PHP-Opcode cached. Ein solches Ergebnis war zu erwarten &#8211; und wenn man es dann mal selbst erlebt ist es doch sehr motivierend weitere Web-Anwendungen in C++ zu schreiben. Wenn man dann noch FastCGI unterstützt, und zB lighttpd als Webserver verwendet, dann hat man wirklich die ultimativ-schnelle Web-Anwendung <img src='http://blog.agrafix.net/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' /> </p>
<p>Das &#8220;TWLanCGI&#8221; Projekt gibts im TWLan-Forum übrigens für Windows zum Download (<a href="http://de.twlan.org/showthread.php?tid=4809" title="TWLan" target="_blank">hier</a>).</p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=544&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/01/websocketserver/' rel='bookmark' title='WebSocketServer'>WebSocketServer</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/01/c-cgi-und-mysql/feed/</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>WebSocketServer</title>
		<link>http://blog.agrafix.net/2012/01/websocketserver/</link>
		<comments>http://blog.agrafix.net/2012/01/websocketserver/#comments</comments>
		<pubDate>Mon, 16 Jan 2012 04:54:21 +0000</pubDate>
		<dc:creator>agrafix</dc:creator>
				<category><![CDATA[C++]]></category>
		<category><![CDATA[LUA]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[cpp]]></category>
		<category><![CDATA[html5]]></category>
		<category><![CDATA[lua]]></category>
		<category><![CDATA[server]]></category>
		<category><![CDATA[WebSocket]]></category>

		<guid isPermaLink="false">http://blog.agrafix.net/?p=540</guid>
		<description><![CDATA[Gerade eben habe ich die erste öffentliche Version meines C++ WebSocketServers veröffentlicht. Es gibt eigentlich nicht viel dazu zu sagen, alle Informationen stehen auf der Webseite: WebSocketServer. Zusammengefasst ist es ein kleiner Server, der das HTML5-WebSocket Protokoll unterstützt. Um Anwendungen für den Server zu schreiben, kann man diese entweder in C++ oder in LUA einbauen! [...]
<strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/01/c-lua-websocketserver/' rel='bookmark' title='C++ &amp; Lua WebSocketServer'>C++ &#038; Lua WebSocketServer</a></li>
<li><a href='http://blog.agrafix.net/2011/11/html5-websocket/' rel='bookmark' title='HTML5 WebSocket'>HTML5 WebSocket</a></li>
<li><a href='http://blog.agrafix.net/2011/12/managers-life-update/' rel='bookmark' title='Manager&#8217;s Life Update'>Manager&#8217;s Life Update</a></li>
</ol>]]></description>
			<content:encoded><![CDATA[<p>Gerade eben habe ich die erste öffentliche Version meines C++ WebSocketServers veröffentlicht. Es gibt eigentlich nicht viel dazu zu sagen, alle Informationen stehen auf der Webseite: <a href="http://websocketserver.de/">WebSocketServer</a>. </p>
<p>Zusammengefasst ist es ein kleiner Server, der das HTML5-WebSocket Protokoll unterstützt. Um Anwendungen für den Server zu schreiben, kann man diese entweder in C++ oder in LUA einbauen!</p>
<img src="http://blog.agrafix.net/?ak_action=api_record_view&id=540&type=feed" alt="" /><p><strong>Ähnliche Beiträge:</strong><ol>
<li><a href='http://blog.agrafix.net/2012/01/c-lua-websocketserver/' rel='bookmark' title='C++ &amp; Lua WebSocketServer'>C++ &#038; Lua WebSocketServer</a></li>
<li><a href='http://blog.agrafix.net/2011/11/html5-websocket/' rel='bookmark' title='HTML5 WebSocket'>HTML5 WebSocket</a></li>
<li><a href='http://blog.agrafix.net/2011/12/managers-life-update/' rel='bookmark' title='Manager&#8217;s Life Update'>Manager&#8217;s Life Update</a></li>
</ol></p>]]></content:encoded>
			<wfw:commentRss>http://blog.agrafix.net/2012/01/websocketserver/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

