<?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>php-arkiv - Webbdesign och Webbutveckling i Skövde</title>
	<atom:link href="https://wibergsweb.se/tag/php/feed/" rel="self" type="application/rss+xml" />
	<link>https://wibergsweb.se/tag/php/</link>
	<description></description>
	<lastBuildDate>Mon, 17 Apr 2017 07:55:42 +0000</lastBuildDate>
	<language>sv-SE</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=6.8.1</generator>
	<item>
		<title>Sessioner och WordPress &#8211; &#8221;det som går&#8221; är inte alltid rätt&#8230;</title>
		<link>https://wibergsweb.se/sessioner-och-wordpress-det-som-gar-ar-inte-alltid-ratt/</link>
		
		<dc:creator><![CDATA[wibergsweb2]]></dc:creator>
		<pubDate>Sun, 23 Aug 2015 05:11:16 +0000</pubDate>
				<category><![CDATA[blogposts]]></category>
		<category><![CDATA[objektorientering]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[plugin]]></category>
		<category><![CDATA[sessioner]]></category>
		<category><![CDATA[webbutveckling]]></category>
		<category><![CDATA[wordpress]]></category>
		<guid isPermaLink="false">https://wibergsweb.se/?p=1445</guid>

					<description><![CDATA[<p>Vad är sessioner? Sessioner (eng. sessions) är ett sätt att hantera data på en webbplats  för varje specifik besökare på sin…</p>
<p> <a class="continue-reading-link" href="https://wibergsweb.se/sessioner-och-wordpress-det-som-gar-ar-inte-alltid-ratt/"><span>Läs mer</span><i class="crycon-right-dir"></i></a> </p>
<p>Inlägget <a href="https://wibergsweb.se/sessioner-och-wordpress-det-som-gar-ar-inte-alltid-ratt/">Sessioner och WordPress &#8211; &#8221;det som går&#8221; är inte alltid rätt&#8230;</a> dök först upp på <a href="https://wibergsweb.se">Webbdesign och Webbutveckling i Skövde</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Vad är sessioner?</h2>
<p><strong>Sessioner</strong> (eng. sessions) är ett sätt att hantera data på en webbplats  för varje specifik besökare på sin webbplats i &#8221;bakgrunden&#8221;. När sessioner används på en webbplats så försvinner denna data inom en viss tid. Hur lång tid denna tid är beror på en inställning som görs på server-nivå.</p>
<p>Ett exempel på detta är att hålla reda på vilka varor det finns i en varukorg i sin webbshop för varje besökare. Skulle man skicka den här typen av information via url&#8217;n / webbadressen skulle det kunna se ut så här: <strong>http://snyggakalsonger.se/webbshop/salming-traningsklader-tee/</strong><strong>?current_products=5&amp;userid=4098230498<br />
</strong><strong><br />
Med hjälp av sessioner</strong> behöver man inte skicka med dessa parametrar i url&#8217;en (nödvändig data hanteras i bakgrunden) och då skulle ovanstående adress se ut så här istället:  <strong>http://snyggakalsonger.se/webbshop/salming-traningsklader-tee/</strong></p>
<p>Att använda sig av <strong>sessioner</strong> blir både mer hanterbart, ser &#8221;snyggare&#8221; ut i både adressfältet i webbläsaren och i googles sökresultat.</p>
<h2>Sessioner i PHP</h2>
<p>I sin enklaste form i PHP kan det se ut så här när man jobbar med <strong>sessioner</strong>:</p>
<p><strong>Sidan där sessionen skapas:</strong></p>
<pre><code><span class="tab">&lt;?php</span>
<span class="tab">session_start(); //Start med att hantera sessioner</span>
<span class="tab">$_SESSION['nr_products'] = 7;</span>
</code></pre>
<p><strong>Sidan där man vill hämta informationen:</strong></p>
<pre><code><span class="tab">&lt;?php</span>
<span class="tab">session_start(); //Start med att hantera sessioner</span>
<span class="tab">echo $_SESSION['nr_products']; //Skriver ut 7</span>
</code></pre>
<p>Givetvis finns det vissa specifika saker att tänka på med <strong>sessioner</strong> (precis som all annan programmering) men grunden att hantera s.k. sessions (sessioner) i PHP är relativt enkelt &#8211; enligt det koncept som finns ovan i exemplet. Ett annat mycket vanligt tillämpningsområde för sessioner är hantering av login. Hur ska man annars få någon säkerhet i det hela? Att skriva användarnamn och lösenord i klartext i webbläsaren är inte bara dumt, det är idiotiskt.</p>
<h2>Sessioner i WordPress</h2>
<p>Av någon anledning så har skaparna / utvecklarna av WordPress valt att inte ha support för <strong>sessioner </strong>/ sessions som standard. Ett argument för att inte använda sessions är att man kan använda annat för att uppnå samma resultat och det kan man i de flesta fall, men det är inte alltid möjligt. Med tanke på att WordPress bygger på <strong>PHP</strong> och <strong>MySQL</strong> och de ändå måste ha något sätt att hantera inloggade användare (som görs med hjälp av sessioner) så tycker jag personligen det är mycket märkligt.  <strong><a href="https://wibergsweb.se/Wordpress-ar-fantastiskt/">WordPress är fantastiskt</a></strong> på alla sätt och vis, men att &#8221;aktivera&#8221;  sessionshantering  i WordPress känns onödigt krångligt.</p>
<h3>Aktivera sessioner i WordPress</h3>
<p>För att kunna använda sessions i WordPress finns tre olika grundläggande sätt att &#8221;aktivera&#8221; sessioner:</p>
<h4>1. <strong>Lägg in kod i wp-config.php (de första raderna)</strong></h4>
<pre><code><span class="tab">if (!session_id())</span>
<span class="tab">session_start();</span></code></pre>
<p>Detta är kanske det allra enklast sättet att aktivera sessioner i WordPress men det förutsätter att man har tillgång och möjlighet att ändra i den filen. Ingår din WordPress-site i en multisite-installation för WordPress bör du också undvika detta, då du troligtvis inte vill aktivera sessioner för alla sajterna.</p>
<h4>2. <strong>Lägg in kod i en plugin (tillägg) </strong></h4>
<pre><code><span class="tab">&lt;?php</span>
<span class="tab">add_action('init', 'mySession', 1);</span>
<span class="tab">function mySession() {</span>
<span class="tab one">if(!session_id()) {</span>
<span class="tab two">session_start();</span>
<span class="tab one">}</span>
}</code></pre>
<p>Ska du skapa ett tillägg för WordPress så får du använda dig av ovanstående metod eller ännu hellre med ett objektorienterat förhållningssätt:</p>
<pre><span class="tab"><code>
<span class="tab">&lt;?php</span>
<span class="tab">$mysessionObj= new mySessionHandler();</span>
<span class="tab">class mySessionHandler {</span>

<span class="tab one">public function __construct() {</span>
<span class="tab two">add_action( 'init', array( $this, 'mySession' ) );</span>
<span class="tab one">}</span>

<span class="tab one">function mySession() {</span>
<span class="tab two">if(!session_id()) {</span>
<span class="tab three">session_start();</span>
<span class="tab two">}</span>
<span class="tab one">}</span>

<span class="tab">}</span></code></span></pre>
<h4>3. <strong>Använd befintlig sessionshanterings-plugin</strong></h4>
<p>Det är inte lätt att hitta någon befintlig sessionshanteringsplugin i Wordpres men <a href="https://Wordpress.org/plugins/wp-session-manager/" target="_blank">WP Session Manager</a> är en stabil plugin som hanterar sessioner på ett bra sätt.</p>
<p>För att hantera sessioner med detta plugin/tillägg så kan man göra så här:</p>
<pre><code>
<span class="tab">&lt;?php</span>
<span class="tab">global $wp_session;</span>
<span class="tab">$wp_session = WP_Session::get_instance();</span>
<span class="tab">$wp_session['nr_products']=7;</span>
</code></pre>
<p>och i en mall/template så kan sedan hämta denna session så här:</p>
<pre><code>
<span class="tab">&lt;?php</span>
<span class="tab">global $wp_session;</span>
<span class="tab">$wp_session = WP_Session::get_instance();</span>
<span class="tab">$wp_session['nr_products']=7;</span>
</code></pre>
<p>Att göra på ovanstående sätt är inte speciellt flexibelt och risken för att ovanstående kod ska bli &#8221;spretig&#8221; / &#8221;rörig&#8221; är stor och kommer lätt bli svår att förstå och underhålla. Även om det går att göra på ovanstående sätt så betyder det inte alltid att &#8221;det som går&#8221; är &#8221;det som är rätt&#8221;.</p>
<p><strong>Använd (alltid) ett objektorienterad förhållningssätt:</strong><br />
Om man t.ex. vill spara det man skrivit in i ett formulär så skulle man kan göra en &#8221;FormHandler&#8221;-klass.</p>
<pre><code>
<span class="tab">&lt;?php</span>
<span class="tab one">class FormHandler {</span>
<span class="tab one">public $wp_session = null; //Use of Plugin WP Session manger, so we can handle sessions</span>

<span class="tab two">public function __construct() {</span>
<span class="tab three">$this-&gt;wp_session = WP_Session::get_instance();</span>
<span class="tab two">}</span>

<span class="tab two">public function get_current_formvalues() {</span>
<span class="tab three">return $this-&gt;wp_session['formvalues'];</span>
<span class="tab two">}</span>
   
<span class="tab two">public function set_formvalues($formvalues) {</span>
<span class="tab three">if ($this-&gt;wp_session === null) {</span>
<span class="tab three">$this-&gt;wp_session = WP_Session::get_instance();</span>
<span class="tab three">}</span>
<span class="tab three">$this-&gt;wp_session['formvalues'] = $formvalues;</span>
<span class="tab two">}</span>

<span class="tab two">public function get_current_formvalues() {</span>
<span class="tab three">return $this-&gt;wp_session['formvalues'];</span>
<span class="tab two">}</span>
<span class="tab one">}</span>
</code></pre>
<p>Skapa sedan instansen av objektet och lägg in värden från ett postat formulär:</p>
<pre><code><span class="tab">$form = new FormHandler();</span>
<span class="tab">$name = $_POST['company']; //Name of company</span>
<span class="tab">$phone = $_POST['phone']; //Phonenr to company</span>
<span class="tab">$formdata = array('name' =&gt; $name, 'phone' =&gt; $phone);</span>
<span class="tab">$form-&gt;set_formvalues($formdata);</span>
</code></pre>
<p>Detta kan tyckas vara ett krångligt sätt att göra det på, men finessen (som all annan objektorienterad <strong><a href="https://wibergsweb.se/webbutveckling/">webbutveckling</a></strong>) är att det blir lätt att &#8221;bygga på&#8221; utifrån en grund på ett flexibelt sätt.</p>
<p>Här är ett exempel där man skapar ett kontaktformulär och ett formulär för intresseanmälan:</p>
<p><strong>Kontaktformulär</strong></p>
<pre><code>
<span class="tab">&lt;?php</span>
<span class="tab">class Contactform extends FormHandler {</span>
<span class="tab one">public __construct() {</span>
<span class="tab two">        parent::__construct();</span>
<span class="tab two">        //Do something that applies to the contactform only</span>
<span class="tab one">        }</span>
<span class="tab one">        public function set_values() {</span>
<span class="tab two">            //Set values into the wp_sessions object</span>
<span class="tab two">            //based on posted form values for this form</span>
<span class="tab two">            $this-&gt;set_formvalues($postformvalues);</span>
<span class="tab one">        }</span>
<span class="tab one">        public function display() {</span>
<span class="tab two">            $formvalues = $this-&gt;get_current_formvalues();</span>
<span class="tab two">            //Show the interestform with current $formvalues from session;</span>
<span class="tab two">            //Validate fields/handle errors for contactform</span>
<span class="tab one">        }</span>
<span class="tab">}</span></code></pre>
<p><strong>Intresseanmälan</strong></p>
<pre><code><span class="tab">class InterestForm extends FormHandler {</span>
<span class="tab one">public __construct() {</span>
<span class="tab two">        parent::__construct();</span>
<span class="tab two">        //Do something that applies to the interestform only</span>
<span class="tab one">        }</span>
<span class="tab one">        public function set_values() {</span>
<span class="tab two">            //Set values into the wp_sessions object</span>
<span class="tab two">            //based on posted form values for this form</span>
<span class="tab two">            $this-&gt;set_formvalues($postformvalues);</span>
<span class="tab one">        }</span>
<span class="tab one">        public function display() {</span>
<span class="tab two">            $formvalues = $this-&gt;get_current_formvalues();</span>
<span class="tab two">            //Show the interestform with current $formvalues from session;</span>
<span class="tab two">            //Validate fields/handle errors for contactform</span>
<span class="tab one">        }</span>
<span class="tab">}</span></code></pre>
<p>Vill man sedan visa ett kontaktformulär skriver man så här:</p>
<pre><code><span class="tab">$form = new ContactForm();</span>
<span class="tab">$form-&gt;display();</span></code></pre>
<p>Och intresseanmälan så här:</p>
<pre><code><span class="tab">$form = new InterestForm();</span>
<span class="tab">$form-&gt;display();</span></code></pre>
<p>Fördelen med detta är att dels att du kan återanvända funktioner (som finns i FormHandler), det blir struktur och det blir lättare att bygga på vad som krävs enbart för kontaktformuläret eller intresseformuläret. Det finns ingen anledning att inte använda objektorienterat &#8211; inte ens i WordPress. Det kan tyckas krångligare till en början men på lång sikt är det betydligt lättare att underhålla och förstå vad som sker i koden.</p>
<p>Ha alltid detta i åtanke vid all typ av <a href="https://wibergsweb.se/webbutveckling/"><strong>webbutveckling</strong> </a>och när jag tänker efter &#8211; vid all typ av programmering:  <strong>&#8221;Det som går&#8221; är inte alltid det som är rätt&#8230;.</strong></p>
<h4>Författare till detta inlägg (till denna blogg som handlar om webbdesign, webbutveckling och SEO)</h4>
<p>Jag heter <a href="https://www.linkedin.com/pub/gustav-wiberg/51/a48/55" target="_blank">Gustav Wiberg</a> och driver <strong><a href="https://wibergsweb.se/skovdes-genuina-webbyra-alla-parter-nojda/">Skövdes genuina webbyrå Wibergs Web</a></strong>. <a href="https://wibergsweb.se/kontakt/">Kontakta mig genom att klicka här</a>.</p>
<p>Inlägget <a href="https://wibergsweb.se/sessioner-och-wordpress-det-som-gar-ar-inte-alltid-ratt/">Sessioner och WordPress &#8211; &#8221;det som går&#8221; är inte alltid rätt&#8230;</a> dök först upp på <a href="https://wibergsweb.se">Webbdesign och Webbutveckling i Skövde</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Skattekollen</title>
		<link>https://wibergsweb.se/skattekollen/</link>
		
		<dc:creator><![CDATA[wibergsweb2]]></dc:creator>
		<pubDate>Wed, 07 Jan 2015 11:40:33 +0000</pubDate>
				<category><![CDATA[Referenser]]></category>
		<category><![CDATA[kommunalskatt]]></category>
		<category><![CDATA[php]]></category>
		<category><![CDATA[skaraborg]]></category>
		<category><![CDATA[skattekollen]]></category>
		<category><![CDATA[skövde]]></category>
		<category><![CDATA[webbutveckling]]></category>
		<category><![CDATA[webbyrå]]></category>
		<guid isPermaLink="false">http://wibergsweb2/?p=137</guid>

					<description><![CDATA[<p>Webbutveckling Wibergs Web hjälper till att utveckla det tekniska bakom tjänsten skattekollen.se. Skattekollen är en tjänst som gör att besökare…</p>
<p> <a class="continue-reading-link" href="https://wibergsweb.se/skattekollen/"><span>Läs mer</span><i class="crycon-right-dir"></i></a> </p>
<p>Inlägget <a href="https://wibergsweb.se/skattekollen/">Skattekollen</a> dök först upp på <a href="https://wibergsweb.se">Webbdesign och Webbutveckling i Skövde</a>.</p>
]]></description>
										<content:encoded><![CDATA[<h2>Webbutveckling</h2>
<p>Wibergs Web hjälper till att utveckla det tekniska bakom tjänsten skattekollen.se. Skattekollen är en tjänst som gör att besökare kan få redovisat hur deras inbetalda kommunalskatt fördelas. Vill man t.ex. veta hur stor andel av sin skatt som går till barn&amp;omsorg, till politik, trafik och stadsplanering m.m. så kan man gå in på ansluta kommuners hemsidor och få reda på detta.</p>
<p>Som webbyrå är det fantastiskt roligt att få utveckla olika slags funktioner/anpassa till olika verksamheter. Att hjälpa till med en verksamhet som gör någon samhällsnytta tycker Wibergs Web är helt fantastiskt!</p>
<p>Inlägget <a href="https://wibergsweb.se/skattekollen/">Skattekollen</a> dök först upp på <a href="https://wibergsweb.se">Webbdesign och Webbutveckling i Skövde</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
