Thursday, January 24, 2008
Wednesday, December 19, 2007
PHP filters
Gone are days of writing secure functions for validating URL, email address,etc.
In october 2005, first version of Filter package was released by PECL and within 1 year and 5 more releases PECL released final version 0.11 of Filter pack
age.
You can download filter package from here http://pecl.php.net/package/filter.
All you need is Php5.0 or higher and PEAR installer.
Installation steps are simple just write this in your console
$ pecl install filter
Usage Documentation.
Although filter functions are documented in php.net (http://in.php.net/filter), I find these documentation incomplete.
While doing some googling I found a good link which described different usages of Filter functions in a simple manner.
The Link is : http://phpro.org/tutorials/Filtering-Data-with-PHP.html
I won't provide you with entire usage as it would be a waste of time when I already have good link doing the same for me.
I will only provide a snapshot to show you the power of PHP filters
Filter IP Address
Following on from validation of URLs, we often find we need to validate an IP Address. Of course, and IP address may be of different formats for ipv4 and ipv6. An IP address may also need to be within a range of private or reserved ranges. The filter extension makes it possible to discern these differences and to validate an IP address to fit most needs. In its simplest form the validation of a url will look like this.
/*** an IP address ***/
$ip = "192.168.0.1";
if(filter_var($ip, FILTER_VALIDATE_IP) === FALSE)
{
echo "$ip is not a valid IP";
}
else
{
echo "$ip is valid";
}
?>
As we have supplied the above with a valid IP address it validates and all is well. But now we may wish to validate an IPV6 address or an address with a private range. The IP filter has several flag with which to validate an IP address with. Listed here.
- FILTER_FLAG_IPV4
- FILTER_FLAG_IPV6
- FILTER_FLAG_NO_PRIV_RANGE
- FILTER_FLAG_NO_RES_RANGE
Starting at the top we will check to see if an IP is a valid IPV4 address.
/*** an IP address ***/
$ip = "192.168.0";
/*** try to validate as IPV4 address ***/
if(filter_var($ip, FILTER_VALIDATE_IP, FILTER_FLAG_IPV4) === FALSE)
{
echo "$ip is not a valid IP";
}
else
{
echo "$ip is valid";
}
?>
Please visit the above link, read carefully and start saving time by using the above
Friday, November 16, 2007
Checking Apache Runtime Status
This tutorial will show you how to enable this feature in such a way that only requested issued from localhost will be accepted and served.
Setting mod_status up
By default, server status report is commented so you can not access it. To enable it, you need to uncomment from /etc/apache2/apache2.conf or /usr/local/apache/conf/httpd.conf :
SetHandler server-status
Order deny,allow
Deny from all
Allow from .your_domain.com
This is a default setting, and will not work out of the box. What is said here is: server status will be acessible at location http://servername/server-status, access will be denied to everybody but people connecting from domain your_domain.com and any sub-domain from your_domain.com.
We want the server status to be provided only to people connected directly from the host running the apache server. Therefore we are going to deny access to /server-status to everybody except for people connecting from localhost, in the end the setting will look like:
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
Note: You could be using localhost instead of 127.0.0.1, but keep in mind that if the directive HostnameLookups is turned to Off, apache won't let you access to http://localhost/server-status .
OK, now that everything is set up, check that there is no error in your configuration by using:
$apache2ctl -t or $ /usr/local/apache/bin/apachectl configtest
if everything is fine, reload apache2 configuration with:
$sudo /etc/init.d/apache2 reload or $ /usr/local/apache/bin/apachectl restart
Accessing Apache Status
To access apache status and activity, you need to request the page http://localhost/server-status, you could use text mode navigators such as elinks or links in order to connect through a console using ssh.
Now, you can access information such as server start time, server uptime, number of requests being processed, number of slots available .... The different keys are explained just under the server activity.
A neat feature of server-status is the ability to refresh every X seconds, in order to get up-to-date activity, by calling:
elinks http://localhost/server-status?refresh=2
In the previous example, the status will be updated every 2 seconds.
Getting more from Apache Server-status
If you want to get more information from your server activity, you can add the directive:
just above the
But in another hand, you will be able to access more informations such as:
- Total accesses
- CPU usage
- number of requests/sec, Bytes/sec and Bytes/request
- See the different clients connected to your server, on which virtual host as well as the page there are requesting, you can even access the time it took to request a specific page as well as the resources required.
References : http://www.debuntu.org/apache-activity-performance-mod_status
Thursday, November 15, 2007
Web Developers Link Farm
Some of the link categories of this farm contains are listed below:
- Ajax
- Firefox Plugins
- Ruby
- Traffic / SEO
- Flash
- Asp.net
- Design
Go here http://www.devlisting.com/
Friday, October 26, 2007
Steps to Improve Front End
- With reference to my last post that Front End Performance are more important than Back End performance I have finally managed to find a nice descriptive article stating how to exactly achieve it.
All the points are covered in this link http://developer.yahoo.com/performance/rules.html
- Make Fewer HTTP Requests
- Use a Content Delivery Network
- Add an Expires Header
- Gzip Components
- Put Stylesheets at the Top
- Put Scripts at the Bottom
- Avoid CSS Expressions
- Make JavaScript and CSS External
- Reduce DNS Lookups
- Minify JavaScript
- Avoid Redirects
- Remove Duplicate Scripts
- Configure ETags
- Make Ajax Cacheable
In addition to these Yahoo also provides developers with their custom FireFox extension which finds out what components of your page are slow and what can be done for improvement.
download Page :
http://developer.yahoo.com/yslow/
https://addons.mozilla.org/en-US/firefox/addon/5369
Wednesday, October 24, 2007
Reduce your page load time
Ever wondered why Super sites like Yahoo, AOL, etc load faster than your site.
If you are still wondering than this small article and the link mentioned at the bottom may help you reduce your page load time.
In any optimization effort it's critical to profile current performance to identify where the greatest improvement can be made. It's clear that the place to focus for fast web pages is the front end:
1. There is more potential for improvement by focusing on the front end. Making the back-end twice as fast reduces response times by 5-10%, whereas making the front end twice as fast saves 40-45%.
2. Front end improvements typically require less time and resources than back-end performance projects.
3. Focusing on front end improvements has proven to work. Over fifty teams at Yahoo! have reduced their end-user response times by following the best practices described here.
As web applications evolve to contain more functionality and content, these best practices are expected to have an even bigger impact.
Results Php Benchmark tests:
http://www.php.lt/benchmark/phpbench.php
The above link serves only the programming aspect of PHP.
There is still lot of improvement you can do in JavaScript and DOM.
So keep googling you might end up with what you exactly want.
Friday, August 31, 2007
Send Header without error
For long I always thought that header function will only work when there is nothing rendered before the header call.
But recently I discovered(ofcorse with help of google) that we can render anything before the header call and still redirect the page.
Normal Usage with error is
echo "This will give error"
header("location:http://www.yahoo.com");
echo "This will NOT give error";
header("refresh:0; url:http://www.yahoo.com");
Here refresh:0 means the page will load after 0 seconds(which is instantly).
Basically this can be used when we want to have delay the page loading say we want to load yahoo after 2 seconds.
In this case the code will be
header("refresh:2; url:http://www.yahoo.com");
So start using this header call and redirect the page anytime during page execution.