<?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>Css, Html, Mootools, PHP och Smarty &#187; PHP</title>
	<atom:link href="http://www.gaos.se/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.gaos.se</link>
	<description>Webben i allmänhet och lite lite special</description>
	<lastBuildDate>Mon, 26 Apr 2010 15:00:50 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.8.5</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
			<item>
		<title>Tandblekning</title>
		<link>http://www.gaos.se/2010/04/26/tandblekning/</link>
		<comments>http://www.gaos.se/2010/04/26/tandblekning/#comments</comments>
		<pubDate>Mon, 26 Apr 2010 09:07:25 +0000</pubDate>
		<dc:creator>Erik Andersson</dc:creator>
				<category><![CDATA[Information]]></category>
		<category><![CDATA[Tips]]></category>
		<category><![CDATA[css]]></category>
		<category><![CDATA[Dentway]]></category>
		<category><![CDATA[html]]></category>
		<category><![CDATA[Mootools]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[smarty]]></category>
		<category><![CDATA[Tandblekning]]></category>

		<guid isPermaLink="false">http://www.gaos.se/?p=219</guid>
		<description><![CDATA[Vi har byggt en ny site till Dentway som säljer tandblekning på den nordiska marknaden. Vi börjar med att lansera svenska siten idag, under veckan kommer norska sidan ut. Dentway startades 2005 och har 4 anställda. De produkter Dentway säljer är exakt samma som du kan köpa hos tandläkaren. Då kostar dock behandlingen ett par [...]]]></description>
			<content:encoded><![CDATA[<p>Vi har byggt en ny site till Dentway som säljer <a title="tandlbekning" href="http://www.dentway.se" target="_blank">tandblekning</a> på den nordiska marknaden. Vi börjar med att lansera svenska siten idag, under veckan kommer norska sidan ut. Dentway startades 2005 och har 4 anställda. De produkter Dentway säljer är exakt samma som du kan köpa hos tandläkaren. Då kostar dock behandlingen ett par tusen kronor extra.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaos.se/2010/04/26/tandblekning/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>php html mail</title>
		<link>http://www.gaos.se/2009/05/28/php-html-mail/</link>
		<comments>http://www.gaos.se/2009/05/28/php-html-mail/#comments</comments>
		<pubDate>Thu, 28 May 2009 07:02:02 +0000</pubDate>
		<dc:creator>Erik Andersson</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[html mail]]></category>
		<category><![CDATA[mail()]]></category>
		<category><![CDATA[php mail]]></category>
		<category><![CDATA[sendmail]]></category>
		<category><![CDATA[swiftmailer]]></category>

		<guid isPermaLink="false">http://www.gaos.se/?p=199</guid>
		<description><![CDATA[Alla som har försökt använda funktionen mail() för att skicka html mail vet att det inte är helt självklart att få till det så att det fungerar bra. Istället har det funnits paket som Swiftmailer, för inte så länge sedan så släppts version 4 av systemet. Här tänkte jag visa hur vi använt det för [...]]]></description>
			<content:encoded><![CDATA[<p>Alla som har försökt använda funktionen mail() för att skicka html mail vet att det inte är helt självklart att få till det så att det fungerar bra. Istället har det funnits paket som Swiftmailer, för inte så länge sedan så släppts version 4 av systemet. Här tänkte jag visa hur vi använt det för att skapa ett html mail från ett formulär.</p>
<p>formulärkoden ser i detta fall ut såhär:</p>
<pre id="line98"><strong>&lt;<span class="start-tag">form</span><span class="attribute-name"> action</span>=<span class="attribute-value">"/email/intresseanmalan" </span><span class="attribute-name">method</span>=<span class="attribute-value">"post" </span><span class="attribute-name">name</span>=<span class="attribute-value">"intresseanmalan"</span>&gt;
&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"subject" </span><span class="attribute-name">value</span>=<span class="attribute-value">"rubrik på Mailet"</span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"fromEmail" </span><span class="attribute-name">value</span>=<span class="attribute-value">"test@dindoman.se"</span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"fromName" </span><span class="attribute-name">value</span>=<span class="attribute-value">"FrånNamn"</span><span class="error"><span class="attribute-name">/</span></span>&gt;
&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"hidden" </span><span class="attribute-name">name</span>=<span class="attribute-value">"toEmail" </span><span class="attribute-name">value</span>=<span class="attribute-value">""</span><span class="error"><span class="attribute-name">/</span></span>&gt;
</strong></pre>
<pre id="line161"><strong>&lt;<span class="start-tag">table</span><span class="attribute-name"> cellpadding</span>=<span class="attribute-value">"0" </span><span class="attribute-name">cellspacing</span>=<span class="attribute-value">"4" </span><span class="attribute-name">border</span>=<span class="attribute-value">"0"</span>&gt;
&lt;<span class="start-tag">tr</span>&gt;&lt;<span class="start-tag">td</span>&gt;Namn&lt;/<span class="end-tag">td</span>&gt;
&lt;<span class="start-tag">td</span>&gt;&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"text" </span><span class="attribute-name">size</span>=<span class="attribute-value">"20" </span><span class="attribute-name">name</span>=<span class="attribute-value">"Namn" </span><span class="error"><span class="attribute-name">/</span></span>&gt;&lt;/<span class="end-tag">td</span>&gt;&lt;/<span class="end-tag">tr</span>&gt;
&lt;<span class="start-tag">tr</span>&gt;&lt;<span class="start-tag">td</span>&gt;E-post&lt;/<span class="end-tag">td</span>&gt;
&lt;<span class="start-tag">td</span>&gt;&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"text" </span><span class="attribute-name">size</span>=<span class="attribute-value">"20" </span><span class="attribute-name">name</span>=<span class="attribute-value">"Email" </span><span class="error"><span class="attribute-name">/</span></span>&gt;&lt;/<span class="end-tag">td</span>&gt;&lt;/<span class="end-tag">tr</span>&gt;
</strong><strong>&lt;<span class="start-tag">tr</span>&gt;&lt;<span class="start-tag">td</span><span class="attribute-name"> valign</span>=<span class="attribute-value">"top"</span>&gt;&lt;/<span class="end-tag">td</span>&gt;
&lt;<span class="start-tag">td</span>&gt;&lt;<span class="start-tag">input</span><span class="attribute-name"> type</span>=<span class="attribute-value">"submit" </span><span class="attribute-name">value</span>=<span class="attribute-value">"Skicka meddeland"</span><span class="error"><span class="attribute-name">/</span></span>&gt;&lt;/<span class="end-tag">td</span>&gt;&lt;/<span class="end-tag">tr</span>&gt;
&lt;/<span class="end-tag">table</span>&gt;&lt;/<span class="end-tag">form</span>&gt;</strong>

och php koden såhär

<strong>require_once $wwwRoot.'/Simple/php/Swift-4.0.3/lib/swift_required.php';
$transport = Swift_SmtpTransport::newInstance('smtpServer', smtpPort)
  -&gt;setUsername('username')
  -&gt;setPassword('password')
  ;
//build message from post variable!
foreach ($_POST as $kat =&gt; $varde) {
	if($kat == 'subject' || $kat == 'fromEmail' || $kat == 'fromName' || $kat == 'toEmail'){}
	else{
		  //Html versionen av mailet byggs här.
		  $messageHtml = $messageHtml.''.$kat.' = '.$varde.'&lt;br /&gt;&lt;br /&gt;';

		  //Textversionen av mailet byggs här.
		  $messagePlain = $messagePlain.''.$kat.' = '.$varde.'  

';
	}
}
$mailer = Swift_Mailer::newInstance($transport);
$message = Swift_Message::newInstance()
  -&gt;setSubject($_POST['subject'])
  -&gt;setFrom(array($_POST['fromEmail'] =&gt; $_POST['fromName']))
// Vi skickar meddelandet till adressen som är ifylld i fältet email
  -&gt;setTo(array($_POST['Email']))
  -&gt;setBody($messagePlain)
  -&gt;addPart($messageHtml, 'text/html')
  ;
$result = $mailer-&gt;send($message);
</strong></pre>
<p>Om vi sedan skall spara det i en databas och har multipla emailfromulär på en site så är det ganska smidigt att bara peta in hela $post variabeln i en databas med 2 kolumner. Genom att alltid hålla de fält som är satta som &#8221;hidden&#8221; likadana så får vi ganksa snart en väldigt sökbar databas som är helt dynamisk. Ungefär såhär:</p>
<p><strong>//En tabell med email som ger ett id och en timestamp när emailet är skickat. Koden är inte testad men borde fungera.</strong></p>
<pre><strong>mysql_query("INSERT INTO email (id, date) VALUES ('','')");
$thisId = mysql_insert_id();
</strong><strong><strong>foreach ($_POST as $kat =&gt; $varde) {
	mysql_query("INSERT INTO emailComponents</strong> (cat, value, emailId)
        VALUES ('".</strong><strong><strong><strong><strong>$kat</strong></strong></strong>."', '".</strong><strong><strong><strong><strong>$varde</strong></strong></strong>."', '".$thisId</strong><strong>."')");</strong>
<strong><strong>';</strong></strong>
<strong>header("Location: {$_SERVER['HTTP_REFERER']}/ok"); </strong></pre>
]]></content:encoded>
			<wfw:commentRss>http://www.gaos.se/2009/05/28/php-html-mail/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Logga MySQL-frågor med PHP och runkit</title>
		<link>http://www.gaos.se/2009/03/09/logga-mysql-fragor-med-php-och-runkit/</link>
		<comments>http://www.gaos.se/2009/03/09/logga-mysql-fragor-med-php-och-runkit/#comments</comments>
		<pubDate>Mon, 09 Mar 2009 08:38:59 +0000</pubDate>
		<dc:creator>Mattias Ekberg</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[avancerat]]></category>
		<category><![CDATA[MySQL]]></category>
		<category><![CDATA[runkit]]></category>

		<guid isPermaLink="false">http://gaos.se/?p=40</guid>
		<description><![CDATA[Allt eftersom en webbapplikation växer i storlek kan det vara svårt att hålla ordning på alla databasfrågor som körs vid exekveringen av applikationen. Genom att omdefiniera PHPs databasfunktioner med hjälp av php-modulen runkit kan man skapa en logger som hjälper till att hålla ordning på databasfrågorna i applikationen. Detta har två fördelar:

Man får en överblick [...]]]></description>
			<content:encoded><![CDATA[<p>Allt eftersom en webbapplikation växer i storlek kan det vara svårt att hålla ordning på alla databasfrågor som körs vid exekveringen av applikationen. Genom att omdefiniera PHPs databasfunktioner med hjälp av php-modulen <a rel="nofollow" href="http://se.php.net/runkit" target="_blank">runkit</a> kan man skapa en logger som hjälper till att hålla ordning på databasfrågorna i applikationen. Detta har två fördelar:</p>
<ol>
<li>Man får en överblick av MySQL-frågorna vilket gör utvecklingen av webbapplikationen lättare.</li>
<li>Genom att omstrukturera databasfrågor och undvika redundanta frågor kan databasaktiviteten effektiviseras och minskas.</li>
</ol>
<p><strong>Så här gör man:</strong></p>
<p><code style="text-align:left"><br />
&lt;?php</code></p>
<p><code style="text-align:left">runkit_function_copy('mysql_query', 'mysql_query_original');</code></p>
<p><code>runkit_function_redefine('mysql_query', '$q', '$dump = debug_backtrace(); $a["query"] = $q; $a["file"] = basename($dump[0]["file"]); $a["line"] = $dump[0]["line"]; array_push($GLOBALS["queries"], $a); return mysql_query_original($q);'));</code></p>
<p><code>print_r($GLOBALS['queries']);</code></p>
<p>?&gt;</p>
<p>I första steget kopieras originaldefinitionen av mysql_query till en annan funktion mysql_query_original. Därefter omdefinieras mysql_query till att logga all queries i en global variabel innan de utförs. Till sist är det bara att skriva ut den globala variabeln för att se samtliga frågor som har körts så långt i exekveringen.</p>
<p>Voila! Vi har en komplett mysql-logger som sparar alla dina queries, vilken fil de körs i och vilken rad i filen. Det är bara att börja optimera!</p>
<p>En problem med denna metod är att runkit normalt inte ingår i en PHP-installation. Modulen måste antingen kompileras med PHP eller laddas dynamisk vid runtime eller statiskt i php.ini, vilket förmodligen får de flesta webbhotelladministratörer att se rött. Dock är denna teknik främst användbar under utvecklingen av en applikation (p.g.a. den introducerade overheaden). Så om man sköter utvecklingen på en egen utvecklingsserver så är det inga problem att installera modulen.</p>
<p><strong>Länk till <a rel="nofollow" href="http://se.php.net/runkit" target="_blank">runkit</a>.</strong></p>
]]></content:encoded>
			<wfw:commentRss>http://www.gaos.se/2009/03/09/logga-mysql-fragor-med-php-och-runkit/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

