Saturday, October 29, 2011

Port 80 is used by System.....

Web Developers could have a lot of problems about developing on localhost, mostly when you have a lot of development tools,such as iis, apache, mysql, mssql, postgresql using the same port.
I had a lot of problems because of it, finally found out how to solve the problem of the used port 80 by the system.

1st: Open a command prompt type it: netstat -o -n -a | findstr 0.0:80
The last column is the process id (PID) of the services witch uses the port. Then start task manager (ctrl+shift+esc) go to processes and click on ,,show processes from all users", and you will find it. (If youd dont have PID column go to->select cloumns and X the process ID).

The biggest problem is when it says its PID 4, witch is in most cases the system.

2nd: In task manager go to services right down: ,,services...". Here you find all the services running, or not on your computer. If you installed visual studio it could install sql server express and some services witch can use port 80. Try to stop them one-by-one and check netstat. If the problem not solved try stopping ,,World Wide Web Publishing Service".

If non of these actions freed up the port, try stopping other processes witch could use that port.

Good Luck!

Wednesday, October 26, 2011

CodeIgniter: tank_auth vs. dx_auth

This post is about codeigniter php frameworks's 2 most used authentication systems, tank and dx auth.

Dx_auth was written by Erick Hartanto and it's based on CL Auth 0.2.5 beta developed by Jason Ashdown. Tank_auth is based on dx_auth, it was written by Ilya Konyukhov.

In both of them you can get the basic authentication features such as login, logout, register, and you can also find optionally CAPTCHA (or reCAPTCHA).

So what are the main differences?

In dx_auth there's a simple admin panel, you can create your own roles with custom permissions. However in tank_auth there are no roles and there's no admin panel, but in my opinion it's not a big problem, you can easily write an admin panel or integrate the roles.

If you want to use CI 2.0 or above, as I recognised, dx_auth is not completely compatible, you have to change the class names in each file from Classname to CI_Classname.

If you have to choose between these two, or other auth systems, I advise to use tank_auth. Dx_auth's role system is not very well designed, there can be security issues, and it uses more tables in database for not usable reason (for most of the  times). It's also not a good choice to avoid DoS and bot attacks, since it uses IP restriction instead of username and IP restriction.

If you are intrested, you can read an all-in comparison of all the authentication systems here.