<?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>Netsans &#187; Webudvikling</title>
	<atom:link href="http://www.netsans.dk/kategori/webudvikling/feed" rel="self" type="application/rss+xml" />
	<link>http://www.netsans.dk</link>
	<description>Næse for design og kommunikation til nettet</description>
	<lastBuildDate>Wed, 19 May 2010 21:09:15 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=abc</generator>
		<item>
		<title>Sådan fixes IE7&#8242;s z-index bug med jQuery</title>
		<link>http://www.netsans.dk/fix-ie7-z-index-bug-jquery.html</link>
		<comments>http://www.netsans.dk/fix-ie7-z-index-bug-jquery.html#comments</comments>
		<pubDate>Tue, 09 Feb 2010 11:48:33 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[CSS]]></category>
		<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Bug fixes]]></category>
		<category><![CDATA[Bugs]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[Internet Explorer]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[z-index]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=202</guid>
		<description><![CDATA[Det er sædvanligvis Internet Explorer, der kræver ekstra opmærksomhed, workarounds og udviklingstid, når man skal gøre et website kompatibelt på tværs af webbrowsere. Jeg har lige spenderet en del tid på at komme omkring en grov renderingsfejl i IE før version 8, der rammer den orden hvori CSS positionerede HTML elementer  stables. Jeg er rendt]]></description>
			<content:encoded><![CDATA[<p>Det er sædvanligvis Internet Explorer, der kræver ekstra opmærksomhed, workarounds og udviklingstid, når man skal gøre et website kompatibelt på tværs af webbrowsere. Jeg har lige spenderet en del tid på at komme omkring en grov renderingsfejl i IE før version 8, der rammer den orden hvori CSS positionerede HTML elementer  stables. Jeg <a href="http://therealcrisp.xs4all.nl/meuk/IE-zindexbug.html">er rendt ind i IE&#8217;s z-index bug</a>.</p>
<p>Opgaven: En lang række list items skal udstyres med forklaringer i form af drop downs. HTML koden ser således ud.</p>
<p><code> </p>
<pre>
&lt;ul class="linklist"&gt;
  &lt;li&gt;
    &lt;h4&gt;Overskrift 1&lt;/h4&gt;
    &lt;a href="#" class="dropdown-trigger"&gt;Vis beskrivelse&lt;/a&gt;
    &lt;div id="beskrivelse-1"&gt;
      Beskrivende note der falder ned, når man klikker på linket "Vis beskrivelse".
    &lt;/div&gt;
  &lt;/li&gt;
  &lt;li&gt;
    &lt;h4&gt;Overskrift 2&lt;/h4&gt;
    &lt;a href="#" class="dropdown-trigger"&gt;Vis beskrivelse&lt;/a&gt;
    &lt;div id="beskrivelse-2"&gt;
      Beskrivende note der falder ned, når man klikker på linket "Vis beskrivelse".
    &lt;/div&gt;
  &lt;/li&gt;
&lt;/ul&gt;
</pre>
<p></code></p>
<p>CSS koden ser således ud.</p>
<p><code></p>
<pre>
.linklist li {position:relative;width:270px;}
.linklist li div.hidden {display:none;} /* skjuler div'en, før den aktiveres med jQuery .slideDown() */
.linklist li div {
  background:#ddd;
  border:1px solid #ccc;
  left:0;
  padding:6px 12px 12px;
  position:absolute;
  top:20px;
  width:244px;
}
</pre>
<p></code></p>
<p><code>&lt;div&gt;</code> elementet bør således placere sig ovenpå <code>&lt;li&gt;</code> elementerne. Det virker bare ikke i IE før version 8, fordi stakkeordenen er fejlbehæftet. Jeg prøvede at løse problemet ved at definere en lavere z-index på  <code>&lt;li&gt;</code> elementerne, end på <code>&lt;div&gt;</code> elementerne, men det løste ikke problemet. De efterfølgende <code>&lt;li&gt;</code> elementer blev stadig vist ovenpå det aktive  <code>&lt;div&gt;</code>element.</p>
<p><a href="http://www.vancelucas.com/blog/fixing-ie7-z-index-issues-with-jquery/">Efter en del søgning på nettet fandt jeg Vance Lucas&#8217; jQuery-baserede løsning af problemet</a>: </p>
<p><code>
<pre>
$(function() {
  var zIndexNumber = 1000;
  $('div').each(function() {
    $(this).css('zIndex', zIndexNumber);
    zIndexNumber -= 10;
  });
});
</pre>
<p></code></p>
<p>Ideen er, dynamisk at vende standard z-index stakkeordenen af HTML elementerne om. Således sikrer man, at elementer, der ligger højere i kildekoden også har en højere z-index orden på siden, hvilket burde løse renderingsproblemet i IE.</p>
<p>Det løste ikke umiddelbart mit problem. Jeg havde imidlertid <a href="http://brenelz.com/2009/02/03/squish-the-internet-explorer-z-index-bug/">andetsteds læst, at man skulle kunne løse problemet ved at give det relativt positionerede omgivende element en højere z-index orden</a>, end det absolut positionerede element.</p>
<p>Det gav mig ideen til også at lave en Vance Lucas jQuery løsning på det relativt positionerede <code>&lt;li&gt;</code> element, men med en højere z-index orden. Altså:</p>
<p><code>
<pre>
$(function() {
  var LizIndexNumber = 1100;
  $('li').each(function() {
    $(this).css('zIndex', LizIndexNumber);
    LizIndexNumber -= 10;
  });
  var DivzIndexNumber = 1000;
  $('div').each(function() {
    $(this).css('zIndex', DivzIndexNumber);
    DivzIndexNumber -= 10;
  });
});
</pre>
<p></code></p>
<p>Og voila! Så virker det.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/fix-ie7-z-index-bug-jquery.html/feed</wfw:commentRss>
		<slash:comments>2</slash:comments>
		</item>
		<item>
		<title>Sådan kaldes javascripts i WordPress</title>
		<link>http://www.netsans.dk/sadan-kaldes-javascripts-i-wordpress.html</link>
		<comments>http://www.netsans.dk/sadan-kaldes-javascripts-i-wordpress.html#comments</comments>
		<pubDate>Mon, 30 Nov 2009 08:50:34 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Plugins]]></category>
		<category><![CDATA[Themes]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=198</guid>
		<description><![CDATA[Da version 1 af stylesheets og templates til Horsens kommunes biblioteker i sin tid blev kodet op, havde jeg hentet javascript-biblioteket jQuery + diverse plugins, placeret dem i wp-theme mappen og kaldt dem manuelt i theme&#8217;ets header.php script. Det var før jeg fandt ud af, at jQuery + plugins faktisk er inkluderet i WordPress og]]></description>
			<content:encoded><![CDATA[<p>Da version 1 af stylesheets og templates til <a href="http://horsensbibliotek.dk/">Horsens kommunes biblioteker</a> i sin tid blev kodet op, havde jeg hentet javascript-biblioteket jQuery + diverse plugins, placeret dem i wp-theme mappen og kaldt dem manuelt i theme&#8217;ets header.php script. Det var før jeg fandt ud af, at jQuery + plugins faktisk er inkluderet i WordPress og kan kaldes med indbyggede funktioner.</p>
<p>Den &#8220;rigtige&#8221; måde at kalde javascripts på i WordPress er med fuktionen <code>wp_enqueue_script</code>. Med denne funktion kan man kalde en række indbyggede javascript biblioteker, heriblandt <a href="http://jquery.com/">jQuery</a>, <a href="http://script.aculo.us/">Scriptaculous</a> og <a href="http://www.prototypejs.org/">Prototype</a>. For at kalde jQuery, skriver man således følgende i header.php:</p>
<p><code>&lt;?php wp_enqueue_script('jquery'); ?&gt;</code></p>
<p>Har man samtidig brug for diverse jQuery afhængige plugins, f.eks. <a href="http://jquery.com/demo/thickbox/">Thickbox</a> eller <a href="http://jqueryui.com/">jQuery UI</a>, kan man nøjes med at kalde disse, da jQuery så kaldes automatisk. I så fald kan man nøjes med følgende:</p>
<p><code>&lt;?php wp_enqueue_script('thickbox'); ?&gt;<br />
&lt;?php wp_enqueue_script('jquery-ui-core'); ?&gt;</code></p>
<p>Har man brug for javascripts, der ikke er indbygget i WordPress, kan disse også kaldes med <code>wp_enqueue_script</code>. Hent koden, f.eks. <a href="http://malsup.com/jquery/cycle/">jQuery Cycle</a>, og placér den i en dertil indrettet mappe i dit theme. Kald det dernæst på følgende måde:</p>
<p><code>&lt;?php wp_enqueue_script('jquery.cycle.all.pack','/wp-content/themes/dit-theme-navn/din-javascript-mappe/jquery.cycle.all.pack.js',array('jquery')); ?&gt;</code></p>
<p><a href="http://codex.wordpress.org/Function_Reference/wp_enqueue_script">Se dokumentation til funktionen wp_enqueue_script her</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/sadan-kaldes-javascripts-i-wordpress.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>Virtual hosts på mac under MAMP</title>
		<link>http://www.netsans.dk/virtual-hosts-pa-mac-under-mamp.html</link>
		<comments>http://www.netsans.dk/virtual-hosts-pa-mac-under-mamp.html#comments</comments>
		<pubDate>Fri, 13 Nov 2009 11:17:24 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Småtips]]></category>
		<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[DNS]]></category>
		<category><![CDATA[hosts filen]]></category>
		<category><![CDATA[IP]]></category>
		<category><![CDATA[mac]]></category>
		<category><![CDATA[Virtual Hosts]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=196</guid>
		<description><![CDATA[Jeg roder i øjeblikket med en testinstallation af Magento på min mac. I den forbindelse havde jeg brug for at rette i etc/hosts/ filen, men den er ikke umiddelbart til at finde på en mac, da den er skjult. Det findes der heldigvis råd for. Jeg fandt en glimrende vejledning her: Foundation PHP: Creating a]]></description>
			<content:encoded><![CDATA[<p>Jeg roder i øjeblikket med en testinstallation af <a href="http://www.magentocommerce.com/">Magento</a> på min mac. I den forbindelse havde jeg brug for at rette i etc/hosts/ filen, men den er ikke umiddelbart til at finde på en mac, da den er skjult. Det findes der heldigvis råd for. Jeg fandt en glimrende vejledning her:</p>
<p><a href="http://foundationphp.com/tutorials/vhosts_leopard.php">Foundation PHP: Creating a virtual host in Mac OS X 10.5 (Leopard)</a></p>
<p>Jeg bruger imidlertid ikke mac&#8217;ens indbyggede Apache server, men <a href="http://www.mamp.info/en/index.html">MAMP</a>. Derfor kunne jeg ikke rigtig bruge ovenstående vejledning til opsætning af virtual hosts i Apache&#8217;s konfigurationsfil, httpd.conf. Det findes der også råd for. Her er en fin vejledning i opsætning af virtual hosts under MAMP:</p>
<p><a href="http://www.sawmac.com/mamp/virtualhosts/">Sawyer McFarland Media, Inc.: Setting Up Virtual Hosts for MAMP</a></p>
<p>Samme site har en fin indførsel i, <a href="http://www.sawmac.com/mamp/index.php">hvordan man slipper for MAMP&#8217;s default porte 8888 og 8889 i sine lokale URL&#8217;er (Se artiklens figur 3)</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/virtual-hosts-pa-mac-under-mamp.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress som CMS: En sidebar pr. kategori</title>
		<link>http://www.netsans.dk/wordpress-som-cms-en-sidebar-pr-kategori.html</link>
		<comments>http://www.netsans.dk/wordpress-som-cms-en-sidebar-pr-kategori.html#comments</comments>
		<pubDate>Tue, 01 Sep 2009 14:34:42 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Tutorials]]></category>
		<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Kategorier]]></category>
		<category><![CDATA[Sidebars]]></category>
		<category><![CDATA[Widgets]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=188</guid>
		<description><![CDATA[Opnå mere fleksibilitet i brugen af WordPress som CMS med én sidebar pr. kategori. Få PHP koden her. Mange designere og udviklere vælger at bruge WordPress som CMS fordi det er så enkelt og relativt nemt at implementere og udvikle til. Én af WordPress&#8217; store begrænsninger i rollen som CMS er imidlertid sidebar-metaforen. Som udgangspunkt]]></description>
			<content:encoded><![CDATA[<p><strong>Opnå mere fleksibilitet i brugen af WordPress som CMS med én sidebar pr. kategori. Få PHP koden her.</strong></p>
<p>Mange designere og udviklere vælger at bruge WordPress som CMS  fordi det er så enkelt og relativt nemt at implementere og udvikle til. Én af WordPress&#8217; store begrænsninger i rollen som CMS er imidlertid sidebar-metaforen. Som udgangspunkt er der i de fleste themes kun én eller to sidebars til rådighed sitewide, netop fordi WordPress er skabt som blogging værktøj. I en blog er det sjældent nødvendigt med flere.</p>
<p>Men har man brug for et decideret CMS, er der behov for relevant sekundært indhold på <em>alle</em> sider. Noget, der relaterer sig til sidens primære indhold og ikke bare en generel liste med kategorier, et arkiv og en blog roll.</p>
<p>Og så fik jeg den ide at man måske kunne opnå noget brugbart, hvis man kunne oprette en sidebar pr. emnekategori. Så ville det være muligt at målrette widget-indhold til de enkelte emner og dermed øge relevansen af sekundært indhold på indlæg og kategorisider. Efter en del eksperimenteren, lykkedes det mig at skrue nedenstående sammen.</p>
<p><strong>Nedenstående kode skal stå i dit themes functions.php fil:</strong></p>
<pre><code>
&lt;?php
# Get sidebar names from db.
global $wpdb;
$my_widget_name = $wpdb-&gt;get_col("SELECT slug
FROM $wpdb-&gt;terms, $wpdb-&gt;term_taxonomy
WHERE $wpdb-&gt;terms.term_id=term_taxonomy_id
AND taxonomy='category' AND count!=0 ORDER BY name ASC");

# Register one sidebar per category name.
foreach($my_widget_name as $my_widget) {
  register_sidebar(array(
    'name' =&gt; 'Category: ' . $my_widget,
    'before_widget' =&gt; '&lt;div id="%1$s" class="%2$s widget"&gt;',
    'after_widget' =&gt; '&lt;/div&gt;',
    'before_title' =&gt; '&lt;h3 class="widget-title"&gt;',
    'after_title' =&gt; '&lt;/h3&gt;', ));
}
?&gt;
</code></pre>
<p>Først opretter vi en forbindelse til databasen, henter kategorinavn og id fra alle kategorier, der ikke er tomme, samt sorterer kategorierne efter navn. Dernæst registrerer vi vores nye sidebars i WordPress med funktionen <code>register_sidebar</code> samt navngiver hver sidebar med det enkelte kategorinavn.</p>
<p><strong>Indsæt de nye sidebars i dit themes sidebar.php fil:</strong></p>
<pre><code>
&lt;?php
# If this is a category archive page.
if (is_category()) {
	global $wp_query;
	$cat_obj = $wp_query-&gt;get_queried_object();
	$category_slug = $cat_obj-&gt;slug;
}
# If this is a post.
elseif (is_single()) {
	$category = get_the_category();
	$category_slug = $category[0]-&gt;category_nicename;
}
# The widget.
if ( !function_exists('dynamic_sidebar') || !dynamic_sidebar('category_' . $category_slug) ) : ?&gt;
&lt;div id="search" class="widget widget_search"&gt;
	&lt;h3&gt;&lt;?php _e('Search'); ?&gt; &lt;?php bloginfo('name'); ?&gt;&lt;/h3&gt;
	&lt;?php include (TEMPLATEPATH . '/searchform.php'); ?&gt;
&lt;/div&gt;
&lt;?php endif; ?&gt;
</code></pre>
<p>For at kalde den rigtige sidebar, skal vi have fat i det rigtige kategorinavn. Hvis siden er en kategori-side, kalder vi kategoriens navn. Men hvis siden er et indlæg, kalder vi navnet på den første kategori, siden er gemt i. Nu udskrives kategoriens sidebar, hvis du befinder dig på en kategori-side eller et indlæg.</p>
<p><strong>Hvad så med &#8216;sider&#8217;?</strong><br />
Man kan lave noget tilsvarende med WordPress&#8217; side-metafor. I stedet for at tage fat i kategorierne i databasekaldet, skal man så bare have fat i tilsvarende for &#8216;sider&#8217;. I så fald vil databasekaldet se ud som følger:</p>
<pre><code>
$page_sidebars = $wpdb-&gt;get_col("SELECT post_name
FROM $wpdb-&gt;posts WHERE post_type='page'
AND post_status='publish' AND post_parent='0'
ORDER BY menu_order ASC");
</code></pre>
<p><strong>Bemærk!</strong><br />
Man skal være forsigtig med metoden, hvis man har mange kategorier og/eller sider, da WordPress laver et kald til databasen for hver sidebar, den skal loade i backend&#8217;en. Skal den lave for mange kald, får man time out og så fungerer metoden naturligvis ikke.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/wordpress-som-cms-en-sidebar-pr-kategori.html/feed</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
		<item>
		<title>WordPress hacked, defaced og inficeret med en grim iframe</title>
		<link>http://www.netsans.dk/wordpress-hacked-defaced-og-inficeret-med-en-grim-iframe.html</link>
		<comments>http://www.netsans.dk/wordpress-hacked-defaced-og-inficeret-med-en-grim-iframe.html#comments</comments>
		<pubDate>Wed, 26 Aug 2009 13:21:38 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[.htaccess]]></category>
		<category><![CDATA[Hackere]]></category>
		<category><![CDATA[hacking]]></category>
		<category><![CDATA[Iframes]]></category>
		<category><![CDATA[malware]]></category>
		<category><![CDATA[Sikkerhed]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=183</guid>
		<description><![CDATA[For 1½ års tid siden skiftede jeg webhotel til Gigahost efter i flere år at have været kunde hos Unoeuro. Det tillokkende var funktionaliteten og muligheden for flere domæner og databaser på samme konto. Jeg havde aldrig sikkerhedsproblemer hos Unoeuro, men siden skiftet til Gigahost er jeg blevet hacket 3 gange. I sidste uge måtte]]></description>
			<content:encoded><![CDATA[<p>For 1½ års tid siden skiftede jeg webhotel til Gigahost efter i flere år at have været kunde hos Unoeuro. Det tillokkende var funktionaliteten og muligheden for flere domæner og databaser på samme konto. Jeg havde aldrig sikkerhedsproblemer hos Unoeuro, men siden skiftet til Gigahost er jeg blevet hacket 3 gange. I sidste uge måtte mine sites så ned og ligge igen.</p>
<p><strong>Hvad var blevet hacket?</strong></p>
<p>Mine WordPress sites havde fået nye forsider og alle index og default filer havde fået tilføjet en iframe, der sendte evt. besøgende hen et sted, hvor de kunne få inficeret deres computer med malware eller virus.</p>
<p>Det så alt sammen meget automatgenereret ud, for det var det eneste, der var gjort. Ingenting i databaserne, så det har utvivlsomt været en robot. <a href="http://wordpress.org/support/topic/281767">Det lignede det, som denne WordPress bruger har været ude for</a>.</p>
<p>Jeg er usikker på, hvordan hackeren er kommet ind. Det kan være via<a href="http://en.wikipedia.org/wiki/Remote_File_Inclusion"> remote file inclusion (RFI)</a>, men jeg har en grum mistanke om at mine ftp oplysninger er blevet opsnappet, eftersom hackeren er kommet godt omkring på alle mine sites.</p>
<p><strong>Hvordan kan man opsnappe ftp oplysningerne?</strong></p>
<p>Ofte vil det kunne gøres via inficering med vira eller malware på den forurettedes computer. Jeg har scannet mine maskiner for begge dele og tror ikke det er sket ad den vej. Men hos Gigahost bruger man kontonavn og kontokode til alt. Derfor står det også i wp-config.php, konfigurationsfilen til WordPress, så WordPress kan komme i kontakt med databasen. Har man først fået fat på brugernavn og kodeord herfra, har man således også brugernavn og kodeord til ftp og så er der fri adgang.</p>
<p><strong>Hvad gør man for at rense et inficeret site?</strong></p>
<p>Alle toplevel index.php filer var udskiftet med en index.htm fil og der var tilføjet iframes i bunden af index.php filerne i mine theme-mapper samt default og index filer i øvrige mapper. Jeg fjernede alle iframes, slettede WordPress helt og installerede forfra, for at være sikker på at de inficerede filer var helt væk.</p>
<p><a href="http://rzaman.com/remove-iframe-hack/">rzaman.com har en udmærket opskrift på, hvordan man gør.</a></p>
<p><a href="http://www.dnxpert.com/2009/07/24/cleaning-up-wordpress-iframe-hack/">Dnxpert har et fint indlæg om, hvordan man også undersøger, om databasen er inficeret.</a></p>
<p><a href="http://smackdown.blogsblogsblogs.com/2008/06/24/how-to-completely-clean-your-hacked-wordpress-installation/">Også Smackdown har en glimrende artikel om emnet.</a></p>
<p><strong>Hvordan kan man øge sikkerheden?</strong></p>
<p>Brug .htaccess filer til at blokere adgangen til bestemte mapper og filer. Her er et par ressourcer, jeg har fundet brugbare:</p>
<ul>
<li><a href="http://blogingenuity.com/2009/05/14/remote-file-inclusion-rfi-attempts-detecting-tracking-and-mitigating/#more-369">Remote File Inclusion (RFI) Attempts &#8211; Detecting, Tracking, and Mitigating or Stopping</a><br />
Forklarer begrebet RFI og anviser, hvordan man kan beskytte sig mod det med bl.a. .htaccess.</li>
<li><a href="http://codex.wordpress.org/htaccess_for_subdirectories">htaccess for subdirectories</a><br />
Beskriver hvordan man kan begrænse adgangen til undermapper med .htaccess.</li>
<li><a href="http://www.noupe.com/how-tos/wordpress-security-tips-and-hacks.html">WordPress Security Tips and Hacks</a><br />
Generelle tips til forbedring af sikkerheden i WordPress.</li>
</ul>
<p>Sørg også for at begrænse rettighederne på dine filer og mapper. Jeg bemærkede, at man nemt overser wp-config.php i den henseende. Sæt manuelt rettighederne på denne fil til 600, så andre ikke kan læse den. <a href="http://codex.wordpress.org/Changing_File_Permissions">Se udførlig artikel hos WordPress om hvordan man gør</a>.</p>
<p>Installér sikkerhedsplugins i WordPress, f.eks.:</p>
<ul>
<li><a href="http://wordpress.org/extend/plugins/askapache-password-protect/">AskApache Password Protect</a> &#8211; der genererer .htaccess filer for dig.</li>
<li><a href="http://wordpress.org/extend/plugins/login-lockdown/">Login LockDown</a> &#8211; der tjekker om der har været mange forgæves loginforsøg fra en given ip adresse, samt blokerer denne.</li>
<li><a href="http://wordpress.org/extend/plugins/antivirus/">AntiVirus</a> &#8211; der tjekker dine theme-filer for infektion.</li>
<li><a href="http://wordpress.org/extend/plugins/wp-security-scan/">WP Security Scan</a> &#8211; der scanner din WordPress installation for sårbarheder og foreslår udbedringer.</li>
</ul>
<p>Og endelig: Skift kodeord, skift kodeord, skift kodeord. <a href="http://www.blogherald.com/2007/05/08/protect-your-blog-with-a-solid-password/">The Blog Herald har gode tips til, hvordan man finder på et godt ét</a>.</p>
<p><strong>Har Gigahost et sikkerhedshul og bliver jeg hacket igen?</strong></p>
<p>Gigahost har ikke nødvendigvis et sikkerhedshul, men det er da problematisk, at man skal bruge samme brugernavn og kodeord til alt. Og ja, eftersom jeg ikke helt ved, hvordan hackeren kommer ind, bliver jeg måske hacket igen. Men så kan det altså godt ske, jeg skifter webhotel og ser om det løser problemet.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/wordpress-hacked-defaced-og-inficeret-med-en-grim-iframe.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>WordPress HTTP kald og firewalls</title>
		<link>http://www.netsans.dk/wordpress-http-kald-og-firewalls.html</link>
		<comments>http://www.netsans.dk/wordpress-http-kald-og-firewalls.html#comments</comments>
		<pubDate>Tue, 17 Feb 2009 13:51:13 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Fixes]]></category>
		<category><![CDATA[Hacks]]></category>
		<category><![CDATA[HTTP]]></category>
		<category><![CDATA[PHP]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=100</guid>
		<description><![CDATA[Jeg har haft en masse bøvl med WordPress MU efter opgradering til version 2.7 på Horsens kommunes bibliotekers website, og har brugt en masse tid på at finde fejlen. Symptomerne var et enormt langsomt site, hvor det tog 1,5 minut eller mere at loade hver enkelt side, både i front- og back end. Efter at]]></description>
			<content:encoded><![CDATA[<p>Jeg har haft en masse bøvl med WordPress MU efter opgradering til version 2.7 på <a href="http://horsensbibliotek.dk/">Horsens kommunes bibliotekers website</a>, og har brugt en masse tid på at finde fejlen. Symptomerne var et enormt langsomt site, hvor det tog 1,5 minut eller mere at loade hver enkelt side, både i front- og back end. Efter at have loadet længe, indlæste siden dernæst på én gang. Det lykkedes til sidst at finde en løsning, men problemerne skyldtes ikke nødvendigvis en fejl.</p>
<p>Horsens kommunes bibliotekers website står placeret bag kommunens firewall. Det er jo glimrende, for så vidt sikringen af serveren. Det viser sig dog at give visse problemer ift. WordPress.</p>
<p>WordPress har nemlig brug for at lave en række HTTP kald til sig selv for at kunne udføre en række funktioner, bl.a. cron-jobs, pinging af andre sites, plugin updates og -installation, core upgrades m.m. Men disse HTTP kald kan ikke komme igennem firewall&#8217;en og står derfor og laver time out, hvilket får sitet til at hænge i op til adskillige minutter.</p>
<p>Løsningen er at disable WordPress eksterne HTTP kald. Det gøres i filen /wp-includes/http.php</p>
<p>Omkring linie 210 finder man følgende:</p>
<pre><code>function request( $url, $args = array() ) {
  global $wp_version;</code></pre>
<p>Dette ændres til:</p>
<pre><code>function request( $url, $args = array() ) {
  return;
  global $wp_version;</code></pre>
<p>Denne løsning bør dog nok være midlertidig, da problemet reelt ligger et andet sted, nemlig i opsætningen af firewall&#8217;en. Jeg har ikke meget erfaring med firewalls, så hvis du har en ide, der kan løse problemet rigtigt, uden at gå alt for meget på kompromis med sikkerheden, vil jeg meget gerne høre om det.</p>
<p><a href="http://core.trac.wordpress.org/ticket/8590">Via WordPress Trac</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/wordpress-http-kald-og-firewalls.html/feed</wfw:commentRss>
		<slash:comments>1</slash:comments>
		</item>
		<item>
		<title>jQuery i WordPress</title>
		<link>http://www.netsans.dk/jquery-i-wordpress.html</link>
		<comments>http://www.netsans.dk/jquery-i-wordpress.html#comments</comments>
		<pubDate>Thu, 29 Jan 2009 14:51:42 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Småtips]]></category>
		<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Kodestumper]]></category>
		<category><![CDATA[Scripts]]></category>
		<category><![CDATA[Template tags]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=97</guid>
		<description><![CDATA[jQuery er allerede indbygget i WordPress, så der er ingen grund til at downloade og implementere det i hvert nyt tema, du går i gang med. Bare indsæt referencen til jQuery før kaldet til &#8220;wp_head()&#8221; i header.php. Referencen til jQuery indsættes nemt med følgende tag: < ?php wp_enqueue_script('jquery'); ?>]]></description>
			<content:encoded><![CDATA[<p>jQuery er allerede indbygget i WordPress, så der er ingen grund til at downloade og implementere det i hvert nyt tema, du går i gang med. Bare indsæt referencen til jQuery før kaldet til &#8220;wp_head()&#8221; i header.php. Referencen til jQuery indsættes nemt med følgende tag:<br />
<code><br />
< ?php wp_enqueue_script('jquery'); ?><br />
</code></p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/jquery-i-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Runde hjørner med jQuery</title>
		<link>http://www.netsans.dk/runde-hjorner-med-jquery.html</link>
		<comments>http://www.netsans.dk/runde-hjorner-med-jquery.html#comments</comments>
		<pubDate>Thu, 27 Nov 2008 10:49:24 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Webdesign]]></category>
		<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Grafiske effekter]]></category>
		<category><![CDATA[HTML]]></category>
		<category><![CDATA[Javascript]]></category>
		<category><![CDATA[jQuery]]></category>
		<category><![CDATA[Layout]]></category>
		<category><![CDATA[Runde hjørner]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=56</guid>
		<description><![CDATA[Pænt afrundede hjørner i webdesign laves på klassiske vis med grafikstumper i top og bund af de bokse, der ønskes afrundede. Denne metode har imidlertid ofte den ulempe, at den kræver ekstra opmærkning, der ikke nødvendigvis giver mening, skaber rod i koden samt kræver indlæsning af ekstra grafik, som er med til at sløve indlæsningstiden]]></description>
			<content:encoded><![CDATA[<p><a href="http://jquery.com/"><img class="alignright size-full wp-image-58" title="jQuery logo" src="http://www.netsans.dk/wp-content/uploads/2008/11/jquery-logo.gif" alt="jQuery logo" width="300" height="100" /></a>Pænt afrundede hjørner i webdesign laves på klassiske vis med grafikstumper i top og bund af de bokse, der ønskes afrundede. Denne metode har imidlertid ofte den ulempe, at den kræver ekstra opmærkning, der ikke nødvendigvis giver mening, skaber rod i koden samt kræver indlæsning af ekstra grafik, som er med til at sløve indlæsningstiden af websitet.</p>
<p><strong>Slip for unødig grafik og HTML</strong><br />
Med javascript kan man imidlertid undgå både ekstra opmærkning og grafik. <a href="http://methvin.com/jquery/jq-corner.html">Dave Methvin</a> har lavet et plugin til javascript-biblioteket jQuery, som kan netop dette. <a href="http://jquery.com/">jQuery er et glimrende letvægts-javascript framework</a>, der gør det nemt for designere med begrænset kodeerfaring at lave relativt avanceret funktionalitet i et website.</p>
<p><strong>Fra grafik-pest til javascript-kolera?</strong><br />
Skal man så rode sin kode til med javascript i stedet for grafik og opmærkning, bare for at få runde hjørner? Som sagt kan jQuery bruges til rigtig mange ting. Har man i forvejen brug for noget af jQuery&#8217;s funktionalitet, er det oplagt at anvende til også at lave visse grafiske effekter og vil klart være at foretrække fremfor den ekstra opmærkning og grafik. Jeg vil helt sikkert gøre brug af dette plugin i fremtidige projekter.</p>
<p><a href="http://malsup.com/jquery/corner/">Der er en demo af Round Corner plugin&#8217;et samt link til download af scriptet her</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/runde-hjorner-med-jquery.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Ultrakorte uddrag i WordPress</title>
		<link>http://www.netsans.dk/ultrakorte-uddrag-i-wordpress.html</link>
		<comments>http://www.netsans.dk/ultrakorte-uddrag-i-wordpress.html#comments</comments>
		<pubDate>Tue, 25 Nov 2008 16:32:45 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Kodestumper]]></category>
		<category><![CDATA[PHP]]></category>
		<category><![CDATA[Template tags]]></category>
		<category><![CDATA[Themes]]></category>
		<category><![CDATA[the_excerpt()]]></category>
		<category><![CDATA[Uddrag]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=50</guid>
		<description><![CDATA[I WordPress kan man skrive et kort uddrag til de enkelte blogindlæg. Det er ofte anvendeligt på sites, der ikke nødvendigvis har karakter af en typisk weblog, f.eks. journalistiske magasiner, portaler eller virksomhedssites. Uddraget har som udgangspunkt en størrelse på 55 ord og det kan man ikke umiddelbart ændre på. Men 55 ord kan godt]]></description>
			<content:encoded><![CDATA[<p>I WordPress kan man skrive et kort uddrag til de enkelte blogindlæg. Det er ofte anvendeligt på sites, der ikke nødvendigvis har karakter af en typisk weblog, f.eks. journalistiske magasiner, portaler eller virksomhedssites.</p>
<p>Uddraget har som udgangspunkt en størrelse på 55 ord og det kan man ikke umiddelbart ændre på. Men 55 ord kan godt være 40 ord for meget, hvis uddraget ønskes vist på en bestemt måde. Jeg har gravet lidt i uddraget og fundet frem til en måde at begrænse det på.</p>
<p><strong>The_excerpt() laver for lange uddrag</strong><br />
For at implementere uddraget i templaten bruges tag&#8217;et the_excerpt() (<a href="http://codex.wordpress.org/Template_Tags/the_excerpt">se dokumentation her</a>). Dette tag er imidlertid ikke en streng, men en funktion og derfor kan man ikke umiddelbart splitte det ad med PHP. Jeg fandt dog ud af, at grundlaget for funktionen the_excerpt() er strengen get_the_excerpt() og denne streng kan godt splittes ad.</p>
<p>Vi har altså brug for en funktion, der kan splitte indholdet i strengen op i enkeltord, tælle antallet af enkeltord og dernæst sætte det ønskede antal ord sammen igen. Jeg nåede frem til følgende opskrift:</p>
<p><strong>Opskriften på korte uddrag</strong><br />
Put nedenstående funktion ind i filen functions.php i dit theme:</p>
<pre><code>&lt;?php
function string_limit_words($string, $word_limit)
{
  $words = explode(' ', $string, ($word_limit + 1));
  if(count($words) &gt; $word_limit)
  array_pop($words);
  return implode(' ', $words);
}
?&gt;</code></pre>
<p>Placér dernæst følgende kodestump i din template, der hvor du ønsker at få spyttet uddraget ud:</p>
<pre><code>&lt;?php
  $excerpt = get_the_excerpt();
  echo string_limit_words($excerpt,25);
?&gt;</code></pre>
<p>&#8230; hvor 25 er antallet af ønskede ord i uddraget. Du kan nu styre, hvor mange ord der skal vises i dit uddrag.</p>
<p><a href="http://wordpress.org/support/topic/181187?replies=22#post-854419">Løsningen er tillige publiceret i WordPress&#8217; supportforum</a>.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/ultrakorte-uddrag-i-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Et par gode CMS plugins til WordPress</title>
		<link>http://www.netsans.dk/gode-cms-plugins-til-wordpress.html</link>
		<comments>http://www.netsans.dk/gode-cms-plugins-til-wordpress.html#comments</comments>
		<pubDate>Mon, 24 Nov 2008 14:18:58 +0000</pubDate>
		<dc:creator>Morten Brunbjerg Bech</dc:creator>
				<category><![CDATA[Webudvikling]]></category>
		<category><![CDATA[Wordpress]]></category>
		<category><![CDATA[CMS]]></category>
		<category><![CDATA[Plugins]]></category>

		<guid isPermaLink="false">http://www.netsans.dk/?p=47</guid>
		<description><![CDATA[Jeg er i øjeblikket i færd med at udvikle et nyt website på min arbejdsplads, Horsens kommunes biblioteker. Sitet kommer til at køre i WordPress MU, og jo mere man graver i det system, des mere bliver det klart, at man kan få et ganske velfungerende CMS ud af det. Jeg har dog savnet et]]></description>
			<content:encoded><![CDATA[<p>Jeg er i øjeblikket i færd med at udvikle et nyt website på min arbejdsplads, Horsens kommunes biblioteker. Sitet kommer til at køre i WordPress MU, og jo mere man graver i det system, des mere bliver det klart, at man kan få et ganske velfungerende CMS ud af det.</p>
<p>Jeg har dog savnet et par funktioner, men det findes der heldigvis plugins til.</p>
<p><strong>Fjern uaktuelle indlæg</strong><br />
Et indlæg kan sættes til blive udgivet i fremtiden, emn jeg har også behov for, at det automatisk kan udløbe, dvs. blive slettet når det er uaktuelt.</p>
<p>Til det formål er plugin&#8217;et Post Expirator glimrende. Post Expirator kan automatisk enten slette indlæg eller ændre deres status fra &#8216;udgivet&#8217; til &#8216;kladde&#8217;, således at de er skjult, på den dato hvor indlægget bliver uaktuelt.</p>
<p><a href="http://wordpress.org/extend/plugins/post-expirator/">Hent Post Expirator her</a></p>
<p><strong>Omdirigér sider og indlæg</strong><br />
Det er ikke alle punkter i menuen, der nødvendigvis skal linke til en side. F.eks. kan man have behov for at linke til et indlæg eller en emnekategori. Omvendt kan der være brug for at linke direkte fra en indlægsoverskrift til en side.</p>
<p>Page Links To er et plugin, der gør netop dette muligt. I administrationen af det enkelte indlæg eller den enkelte side giver plugin&#8217;et mulighed for at indtaste den URL, man ønsker, der i stedet skal linkes til.</p>
<p><a href="http://txfx.net/code/wordpress/page-links-to/">Hent Page Links To her</a></p>
<p><strong>Skjul bestemte sider fra menuen</strong><br />
Det kan nogle gang være nødvendigt at skjule bestemte sider fra en menu. Skal man f.eks. bruge en bekræftelsesside til formularer bør den ikke nødvendigvis fremgå af menuen.</p>
<p>Det kan man gøre med plugin&#8217;et Exclude Pages. Plugin&#8217;et skjuler ganske enkelte nærmere bestemte sider fra sidenavigationen.</p>
<p><a href="http://wordpress.org/extend/plugins/exclude-pages/">Hent Exclude Pages her</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.netsans.dk/gode-cms-plugins-til-wordpress.html/feed</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>
