Author Archive

Magento 1.4

Na een schone installatie van Magento 1.4 kon ik niet inloggen in Admin. Na een korte zoektocht op internet vond ik een oplossing die voor mij werkt met WAMP5.

Open in een editor het volgende bestand:
app/code/core/Mage/Core/Model/Session/Abstract/Varien.php

Vervolgens schakel je de code van regel 86 tot 98 uit (zie hieronder).

/* if (!$cookieParams['httponly']) {
unset($cookieParams['httponly']);
if (!$cookieParams['secure']) {
unset($cookieParams['secure']);
if (!$cookieParams['domain']) {
unset($cookieParams['domain']);
}
}
}
if (isset($cookieParams['domain'])) {
$cookieParams['domain'] = $cookie->getDomain();
} */

Toen lukte het wel.

No Comments


WAMP instellen voor het uploaden van plaatjes

Krijg je de volgende foutmelding: ‘Call to undefined function imagecreatefromjpeg()…’

Open dan je php.ini en uncomment de volgende regel:

extension=php_gd2.dll

No Comments


WAMP instellen voor imap (mail functies)

Krijg je de volgende foutmelding: ‘Call to undefined function imap_open() in…’

Open dan je php.ini en uncomment de volgende regel:

extension=php_imap.dll

No Comments


WAMP instellen voor mod_rewrite en locaal werken

Mod_rewrite activeren in WAMP en XAMPP:

  1. Zoek het bestand ‘httpd.conf’. Deze vind je in de ‘conf’ folder van Apache.
  2. Open het bestand en zoek op ‘mod_rewrite’. Je vind dan als het goed is het regeltje: ‘#LoadModule rewrite_module modules/mod_rewrite.so’.
  3. Haal de ‘#’ weg om het regeltje te activeren. Opslaan en afsluiten.
  4. Herstart de Apache server.
  5. Test de mod_rewrite met phpinfo().

Als je het bestand ‘httpd.conf’ toch open hebt, voeg dan de volgende regels toe (onderaan het document):

# Voor de dev omgeving.
SetEnv MYAPP_CONFIG development

In de php code kun je locale instellingen verwerken door:

<?php
if(getenv(’MYAPP_CONFIG’) == ‘development’)
{
//Locale database instellingen
}
else
{
//Online database instellingen
}
?>

No Comments


$HTTP_GET_VARS en $HTTP_POST_VARS doen het niet meer!

Eigenlijk doet het gehele scala: $HTTP_XXX_VARS het niet meer in PHP5 (deprecated). Deze zijn namelijk vervangen door $_XXX. Dus $HTTP_GET_VARS wordt $_GET en $HTTP_SERVER_VARS wordt $_SERVER. Leuk als je een oude shop (van osCommerce) op je server zet. Zoek dus niet in je query’s. Die zijn heus goed (ze deden het eerst ook namelijk). Maar zoek dus eerst even op $HTTP_XXX_VARS.

Hoe ben ik er vanaf gekomen?
Simpel. Dreamweaver heeft een superfijne ‘zoek en vervang’ functie. Die doorzoekt je hele site en vervangt alles in 1x. Eerst zoek je op ‘$HTTP_’. Als je dan $HTTP_XXX_VARS tegenkomt, zoek en vervang je de specifieke code. Als je geen resultaten meer vind, ben je klaar.

Een instinkertje:
$HTTP_POST_FILES wordt $_FILES

No Comments


Favicon.ico valid in alle browsers (met Photoshop)

Onlangs moest ik voor een site een favicon maken. Keurig netjes in Photoshop een plaatje gemaakt van 16 x 16 pixels en geĆ«xporteerd als 8 bits gifje. De icon deed het in alle browsers behalve in internet explorer 7. Alles nagelopen: de link gecontroleerd, icon gecontroleerd, etc… maar kon geen vreemde zaken ontdekken.

Via Google kwam ik op deze site terecht: http://www.html-kit.com/favicon/validator/

Hier kwam ik er achter dat het icon stiekem niet valid was. Vervolgens heb ik Photoshop uitgebreid met het Windows Icon (ICO) bestandsformaat.
De plugin hiervoor kun je hier downloaden: http://www.telegraphics.com.au/sw/

Het icon heb ik vervolgens opnieuw geƫxporteerd, nu als een valid .ico file. Deze werkt nu in alle browsers. Uiteraard wel pas als je de pagina aan je favorieten toevoegd.

No Comments


Sql injectie voorkomen, ok. Maar hoe behoud ik werkbare formulieren?

Met ‘mysql_real_escape_string‘ kun je eenvoudig enkele quotes en dubbele quotes (en \x00, \n, \r, \, ‘, ” en \x1a) ‘escapen’. Hiermee voorkom je sql injectie. Volgens php.net moet deze functie altijd gebruikt worden wanneer er data vanuit een form in een database geplaatst wordt.

Niet echt lastig:
$myVar = mysql_real_escape_string($_POST["naam"]);
$myQuery = “UPDATE table SET naam = ‘” . $myVar . “‘”;

So far, so good.

Wanneer je een gebruiker de gelegenheid biedt om zijn ingevoerde content aan te kunnen passen via een formulier, kunnen er vervelende problemen ontstaan.

<input name=”naam” type=”text” value=”<?=$myRs[0]["naam"]?>” />

De output is namelijk voorzien van slashes. Je text veld bevat dan bijvoorbeeld [waarde\'s]. Niet echt handig. Zeker niet als je deze input een keer of drie submit. Je krijgt dan: [waarde\\\'s].

De functie ‘stripslashes‘ is dan een voor de hand liggende oplossing. Alleen krijg je dan een probleem met je dubbele quotes. Als je deze text probeert in te voeren [Deze "fiets" is van sjaak], zal dat niet lukken. Je krijgt het slechts voor elkaar om [Deze ] in te voeren. De eerste dubbele quote wordt namelijk gezien als afsluiter van de value in je input tag.

De enige oplossing die ik kon bedenken die in alle gevallen werkt is ‘htmlentities‘.

Dus: <input name=”naam” type=”text” value=”<?=htmlentities($myRs[0]["naam"])?>” />

Je kunt dan echt helemaal los met quotes en dubbele quotes. Alles gaat de database is.

No Comments



SetPageWidth