Sending GPS coordinates through url using Symfony 1.4

I’ve been developing an API using Symfony 1.4.18 version and I’ve noticed that you can’t send “dots” as part of the url.
Basically if you have something like this in your routing.yml:

checkin_hotel:
 url: /checkin/hotel/:minLon/:minLat/:maxLon/:maxLat
 param: { module: service, action: checkin, type: hotel }

and you try to call this url:

http://myurl/checkin/hotel/-9.15794/39.34242/-8.95677/42.34532

This wont work!

This happens because by default symfony interpret “.” and “/” as separators and so the route “checkin_hotel” wont be called.

To fix this you should specify directly that it should only use “/” as separator:

checkin_hotel:
 url: /checkin/hotel/:minLon/:minLat/:maxLon/:maxLat
 param: { module: service, action: checkin, type: hotel }
 options:
   segment_separators: [/]

Best regards,
Daniel Botelho

Protect your clients: Save hashed passwords in your database!

I’m always surprised when I open my Feed reader and over and over again I stumble upon another report saying that some website store users passwords in plain text and that those passwords got exposed.

Now, why do you need to store those passwords in plain text?

Just hash them in the database and when some user tries to login into your site, hash the password that he gave you and try to match it with the one that is stored in database.

Now if someone cracks your database security the users will not be harmed because they don’t get access to theirs passwords (at least in plain text)!

If you want to add an extra protection, append a “salt” string to the users password and hash the new string all together. (This is how it’s done in symfony sfGuardPlugin http://trac.symfony-project.org/browser/plugins/sfGuardPlugin/lib/model/sfGuardUser.php?rev=3980#L31)

Subclipse 1.4.7 in Eclipse 3.4 (Ganymede) using Ubuntu 8.10

Since I’ve made a Fresh Ubuntu install in my laptop, now I’ve to setup the environment so I can do some working in the laptop ;)

The company that I’m working now only uses PHP, so the production IDE that I use is Eclipse PDT. The great thing about Eclipse, is it’s huge plugin repository, and the one that’ll be talking here is the Subclipse.

Subeclipse is on 1.4.7 version and it’s a great SVN plugin (the only one I know ;)).

Installation Instructions

This installation instructions are based on Download and Install with the difference that here I’ll be showing Subclipse installation process for Eclipse 3.4 (Ganymede) and screens were captured in Eclipse 3.4.0 running on Ubuntu 8.10.

Step 1:

Begin the installation from the Eclipse Help menu item.

Software Updates
Software Updates

Step 2:

This screen will vary depending on the features you have installed already. You want to click on the New Remote Site button. If you are behind a proxy and the Eclipse install mechanism does not work, then you can download a zipped version of the update site and then click the New Local Site button instead.

Software Updates and Add-ons
Software Updates and Add-ons

Step 3:

This screen is showing the Add Site dialog, filled in with the correct information to install Subclipse 1.4.7 (url: http://subclipse.tigris.org/update_1.4.x)

Add Site
Add Site

Step 4:

When you first come back to this screen, the site you added will NOT be selected. Be sure to select it before clicking Next.

Install
Install

Step 5:

This next screen shows all of the features that are available to install.

Confirm Install
Confirm Install

Step 6:

Click the button to accept the license agreement.

Confirm
Confirm

Step 7:

Eclipse needs to be restarted after installing Subclipse.

Restart
Restart

Step 8:

Finally, after restarting Eclipse, you can do Import and checkout a Project from SVN

Import
Import

Running symfony task using bash script

I’m working in a project that uses a lot of symfony tasks to migrate an ancient database to a new one.
Due to some PHP garbage collection issues, we had to do some tricks so the script would run completely . This was done, using a bash script that was responsible to call symfony tasks one at a time, avoiding memory leaking from PHP.

In the script header I’ve put this:

#!/bin/bash
path=”/var/www/palcomigrator”
php=”/usr/bin/php”
symfony=”${php} ${path}/symfony”

runtask()
{
for TASK in “$@”
do
$symfony $TASK
done
}

Here I’ve put the project path location (variable “path”), the php location (variable “php”) and the symfony script location path (variable symfony). I’ve also created an function that is responsible to run a symfony task called “runtask()”.

Now If I wanted to run the symfony task’s “migratePhotos” and “migrateComments” I would create an script like this:

#!/bin/bash
path=”/var/www/palcomigrator”
php=”/usr/bin/php”
symfony=”${php} ${path}/symfony”

runtask()
{
for TASK in “$@”
do
$symfony $TASK
done
}

runtask migratePhotos migrateComments