Wednesday, October 17, 2007

Something About AJAX - PHP

The asynchronous JavaScript and XML technology, simply called AJAX technology is one main technology that is playing a major part in Web 2.0 revolution. Web developers are facing a major challenge from several years. They are unable to change the information on a part of the web page with out actually reloading the whole web page. This has really been a big problem over the years and it largely irritates the users while doing small changes in the information on a given web page. AJAX has solved this problem up to a great extent.

The asynchronous JavaScript and XML technology, simply called AJAX technology is one main technology that is playing a major part in Web 2.0 revolution. Web developers are facing a major challenge from several years. They are unable to change the information on a part of the web page with out actually reloading the whole web page. This has really been a big problem over the years and it largely irritates the users while doing small changes in the information on a given web page. AJAX has solved this problem up to a great extent.

With the help of AJAX, web programmers can make the web page to request web server to just change information which is on a part of the web page with out reloading the whole web page. In order to achieve this, SAJAX (Simple AJAX toolkit), which is a toolkit that is totally written in PHP programming language, has been introduced. This tool kit helps the web programmer to integrate the java Script with web server side PHP language. This will make the life of the web developer very easy.

But still, there are some down sides to this AJAX technology also just like with any other web technology, for that matter any technology. One of the major limitations of AJAX technology is related to the option of book marking. This limitation can create many hectic problems for the users of the web sites especially when the information requests to the web server are done through Post and Get methods. One another major limitation is related to the Back option on any web page. When a user presses on this option, this will take the user to first page rather than the last page which he viewed. This can surely surprise many web users who use extensively this option day in and day out.

AJAX technology can be easily used with many programming languages like java, PHP and so on. However, PHP is the most suitable web programming language to implement AJAX technology. Most of tool kits including SAJAX are also written in PHP. This should make the life of PHP programmers even easier.

GOOGLE is extensively using AJAX technology in many of its products, which includes GMail, Google Suggestions and so on. It is promoting this in a big way. So, if you are a web programmer, especially if you are a PHP developer then you should try and implement AJAX technology in your future projects to realize its real potential and power.

Copyright (c) 2006 Darren Dunner

Monday, October 8, 2007

PHP and Cookies

PHP and Cookies; a Good Mix!
by: Dennis Pallett

Introduction

Cookies have long been used in PHP scripts, and are a very useful function. But what exactly are cookies? Maybe you have used then, but you still don't know exactly what they are. Or you are completely new to cookies? It doesn't matter, because in this tutorial I will show you exactly what cookies are, and what they are used for.

Cookies in a nutshell

Cookies are small pieces of information that is stored on the computer of your visitors. Each browser handles it differently, but most simply store the information in a small text file. Internet Explorer has a special folder, which can be found in your C:\Windows or C:\Windows\System32 folder. You can delete all your cookies, by going to the Options and 'Clearing Cookies' or deleting them by hand. I don't recommend this though.

Almost every website uses cookies. If you go to Amazon.com, you will get several cookies. The same goes for CNN.com. Even Google uses cookies! They are extremely useful for (temporarily) storing information. For example, if you have a login system for your visitors, you could save their userid and password (very heavily encrypted!) so they are automatically logged in the next time they visit your website.

Or you could remember their last visit, and highlight everything that is new. And that's just the beginning.

Using Cookies

Using cookies in PHP is extremely easy. In fact, there is nothing to it, because of PHP's inbuilt setcookie() function (http://php.net/setcookie). Have a look at the documentation, and then try the following example:


// Set a cookie
// Cookie name: name
// Cookie value: Dennis Pallett
// Cookie expire: in 24 hours

setcookie ('name', 'Dennis Pallett', time() + (60*60*24));
?>

If you run the code above, then a cookie will be set. That's all. The cookie name and value are pretty obvious. The cookie expire is when the cookie expires, or goes away. Simply use the time() function (http://php.net/time) and add the number of seconds you want to have the cookie available to it. In the example I added 60*60*24=86400 seconds, or 24 hours.

If you have looked at the documentation, you probably noticed there are additional arguments. As the documentation says, the path is to limit a cookie to a specific path on your web server. This is often used when you run multiple instances of the same script in separate directories. You can safely omit this argument when it doesn't matter if the cookie is available site-wide.

There is also the domain argument. This can be used to limit the cookie to a specific sub-domain, e.g. test.example.com. You can also safely ignore this argument, or set it to .example.com (note the beginning period, this is essential!).

Finally, there is also the secure argument. This argument is only used for cookies that are sent over a secure HTTPS connection (SSL). Just ignore this argument, unless you're working with a secure connection.

One thing that should be mentioned is that cookies must be set, before you display any HTML/text. It's probably best if you turn on output buffering by putting ob_start() (http://php.net/ob_start) at the top of your page.

Now that you have set a cookie, you probably want to retrieve the value as well. After all, that is the whole point of using cookies. Thankfully, as PHP is ever so easy, you can retrieve the same way as you retrieve a GET value. See the following example to retrieve the value of the previous example:

echo 'Your name is ' . $_COOKIE['name'];
?>

This should print "Your name is Dennis Pallett". There's nothing more to it. It's just that easy!

Finally, one thing you probably want to do as well is remove cookies. This is as easy as setting them. Simply change the value of the cookie to FALSE, and change the expire date to -3000 seconds. See the following example:

setcookie ('name', FALSE, time()-1000);
?>

Checking if cookies are enabled

Before you start using cookies, you must make sure your visitor has cookies enabled. This can be done with a simply PHP checking script. Unfortunately, the PHP page needs to reload to check for cookies. But this can be done very transparently, and your visitor should hardly notice anything.

The following example will first set a test cookie, then reload the page, and finally check whether cookies are enabled.

error_reporting (E_ALL ^ E_WARNING ^ E_NOTICE);

// Check if cookie has been set or not
if ($_GET['set'] != 'yes') {
// Set cookie
setcookie ('test', 'test', time() + 60);

// Reload page
header ("Location: checkcookies.php?set=yes");
} else {
// Check if cookie exists
if (!empty($_COOKIE['test'])) {
echo "Cookies are enabled on your browser";
} else {
echo "Cookies are NOT enabled on your browser";
}
}
?>

Run the code above, and see what the output is. Check if cookies are enabled in your browser. If they're not enabled, then you can enable them by going to your browser's options. Unfortunately, this is different from each browser, so I can't give you exact instructions. But Google can.

Storing Arrays

One feature of cookies that is often missed in articles is the ability to story arrays. Cookies can be used to store multi-dimensional arrays, which can be extremely useful to store data.

Consider the following code;

setcookie ("name[first]", "Dennis", time() + (60*60*24));
setcookie ("name[last]", "Pallett", time() + (60*60*24));
?>

You can then display these two cookies using the following code:

echo "First Name: " . $_COOKIE['name']['first'];
echo "
Last Name: " . $_COOKIE['name']['last'];
?>

The cookie 'name' is an array, and has multiple values. You can even go deeper and have multi-dimensional arrays, e.g. $_COOKIE['name']['test']['something']['value']. You could store whole arrays of data in cookies. But beware that you don't store too much data, there are certain size limits to cookies.

In Conclusion...

Cookies are really versatile, and can be used for a lot of different purposes. Many websites use cookies, and cookies can really make your website more personalized. Using cookies in PHP isn't hard at all, and you should be able to use them without any difficulty.

Before actively using cookies in your website, you must check whether the visitor has enabled them in their browser. If they don't have cookies enabled, you must either redirect to a non-cookies version of your website, or you can make sure your website also works without cookies.

You can download a sample script at http://www.phpit.net/demo/php%20and%20cookies/logger.zip, where cookies are used in a (somewhat) practical way. In this example, there is a logging module, called log.php and a display module, called history.php. Basically, you include the log.php in other PHP pages, and then you can view history.php to lookup all the pages you have viewed and how often. The example uses arrays, and stores them in cookies.

The examples in this article can be downloaded at http://www.phpit.net/demo/php%20and%20cookies/examples.zip.

If you have a really unique practical way of using cookies, please let me know at dennis [AT] nocertainty [DOT] com. I'd really like to hear about interesting ways of using cookies.

For Automated Sites PHP and MySQL are A Perfect Match

by: Halstatt Pires

You’ve decided to automate your web site. Now what? Here are some ideas to help you choose how to automate your site.

A bit of programming is going to be necessary if you want to automate a site. There are many types of programs that can be used to automate a web site including JavaScript, PHP, Perl, ASP, Java and more. So, which do you use? For many, it is a personal choice.

I prefer PHP for programming. PHP is a particularly useful programming language because it allows for advanced programming and is easy to integrate with web pages. Another plus of PHP is that the language interfaces very well with MySQL, a popular type of online database.

Yet another plus of PHP is that it is Open Source Code. The actual code that is PHP is available to the public for free, while the source code for products such as ASP are not. Because PHP is open source, there is a large community of PHP programmers that help each other with code. This means PHP programmers can rely on each other by using reusable pieces of code called functions and classes rather than constantly reinventing the wheel. This can dramatically cut down on production time.

Overall, PHP is flexible, cheaper than many alternatives, and built around a community. PHP and MySQL are excellent choice for webmasters looking to automate their web sites.

What Can PHP and MySQL do for me? Just about anything you can think of. That is the beauty of custom programming. A few ideas of what you can do with a PHP and MySQL driven site include:

1. E-commerce
2. User Polls
3. Keyword Tracking
4. Set User Preferences
5. Manage Password Protected Member's Areas
6. Lead Follow Up
7. Customer Relations
8. Content Management
9. Email Newsletters
10. Accounting
11. Invoicing
12. Scheduled Updates

The list is limited only by your imagination. Once you have decided to go with a PHP and MySQL site, you can either get a custom program created, use a prepackaged version or a combination of both. Many PHP and MySQL programs that come prepackaged are easy to customize and can save you a lot of time and money over starting from the ground up.

Mastering Regular Expressions in PHP

by: Dennis Pallett

What are Regular Expressions?

A regular expression is a pattern that can match various text strings. Using regular expressions you can find (and replace) certain text patterns, for example "all the words that begin with the letter A" or "find only telephone numbers". Regular expressions are often used in validation classes, because they are a really powerful tool to verify e-mail addresses, telephone numbers, street addresses, zip codes, and more.

In this tutorial I will show you how regular expressions work in PHP, and give you a short introduction on writing your own regular expressions. I will also give you several example regular expressions that are often used.

Regular Expressions in PHP

Using regex (regular expressions) is really easy in PHP, and there are several functions that exist to do regex finding and replacing. Let's start with a simple regex find.

Have a look at the documentation of the preg_match function (http://php.net/preg_match). As you can see from the documentation, preg_match is used to perform a regular expression. In this case no replacing is done, only a simple find. Copy the code below to give it a try.


// Example string
$str = "Let's find the stuff in between these two previous brackets";

// Let's perform the regex
$do = preg_match("/(.*)<\/bla>/", $str, $matches);

// Check if regex was successful
if ($do = true) {
// Matched something, show the matched string
echo htmlentities($matches['0']);

// Also how the text in between the tags
echo '
' . $matches['1'];
} else {
// No Match
echo "Couldn't find a match";
}

?>

After having run the code, it's probably a good idea if I do a quick run through the code. Basically, the whole core of the above code is the line that contains the preg_match. The first argument is your regex pattern. This is probably the most important. Later on in this tutorial, I will explain some basic regular expressions, but if you really want to learn regular expression then it's best if you look on Google for specific regular expression examples.

The second argument is the subject string. I assume that needs no explaining. Finally, the third argument can be optional, but if you want to get the matched text, or the text in between something, it's a good idea to use it (just like I used it in the example).

The preg_match function stops after it has found the first match. If you want to find ALL matches in a string, you need to use the preg_match_all function (http://www.php.net/preg_match_all). That works pretty much the same, so there is no need to separately explain it.

Now that we've had finding, let's do a find-and-replace, with the preg_replace function (http://www.php.net/preg_replace). The preg_replace function works pretty similar to the preg_match function, but instead there is another argument for the replacement string. Copy the code below, and run it.


// Example string
$str = "Let's replace the stuff between the bla brackets";

// Do the preg replace
$result = preg_replace ("/(.*)<\/bla>/", "new stuff", $str);

echo htmlentities($result);
?>

The result would then be the same string, except it would now say 'new stuff' between the bla tags. This is of course just a simple example, and more advanced replacements can be done.

You can also use keys in the replacement string. Say you still want the text between the brackets, and just add something? You use the $1, $2, etc keys for those. For example:


// Example string
$str = "Let's replace the stuff between the bla brackets";

// Do the preg replace
$result = preg_replace ("/(.*)<\/bla>/", "new stuff (the old: $1)", $str);

echo htmlentities($result);
?>

This would then print "Let's replace the new stuff (the old: stuff between) the bla brackets". $2 is for the second "catch-all", $3 for the third, etc.

That's about it for regular expressions. It seems very difficult, but once you grasp it is extremely easy yet one of the most powerful tools when programming in PHP. I can't count the number of times regex has saved me from hours of coding difficult text functions.

An Example

What would a good tutorial be without some real examples? Let's first have a look at a simple e-mail validation function. An e-mail address must start with letters or numbers, then have a @, then a domain, ending with an extension. The regex for that would be something like this: ^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$

Let me quickly explain that regex. Basically, the first part says that it must all be letters or numbers. Then we get the @, and after that there should be letters and/or numbers again (the domain). Finally we check for a period, and then for an extension. The code to use this regex looks like this:


// Good e-mail
$good = "john@example.com";

// Bad e-mail
$bad = "blabla@blabla";

// Let's check the good e-mail
if (preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $good)) {
echo "Valid e-mail";
} else {
echo "Invalid e-mail";
}

echo '
';

// And check the bad e-mail
if (preg_match("/^[a-zA-Z0-9_\.\-]+@[a-zA-Z0-9\-]+\.[a-zA-Z0-9\-\.]+$/", $bad)) {
echo "Valid e-mail";
} else {
echo "Invalid e-mail";
}

?>

The result of this would be "Valid E-mail. Invalid E-mail", of course. We have just checked if an e-mail address is valid. If you wrap the above code in a function, you've got yourself a e-mail validation function. Keep in mind though that the regex isn't perfect: after all, it doesn't check whether the extension is too long, does it? Because I want to keep this tutorial short, I won't give the full fledged regex, but you can find it easily via Google.

Another Example

Another great example would be a telephone number. Say you want to verify telephone numbers and make sure they were in the correct format. Let's assume you want the numbers to be in the format of xxx-xxxxxxx. The code would look something like this:


// Good number
$good = "123-4567890";

// Bad number
$bad = "45-3423423";

// Let's check the good number
if (preg_match("/\d{3}-\d{7}/", $good)) {
echo "Valid number";
} else {
echo "Invalid number";
}

echo '
';

// And check the bad number
if (preg_match("/\d{3}-\d{7}/", $bad)) {
echo "Valid number";
} else {
echo "Invalid number";
}

?>

The regex is fairly simple, because we use \d. This basically means "match any digit" with the length behind it. In this example it first looks for 3 digits, then a '-' (hyphen) and finally 7 digits. Works perfectly, and does exactly what we want.

What exactly is possible with Regular Expressions?

Regular expressions are actually one of the most powerful tools in PHP, or any other language for that matter (you can use it in your mod_rewrite rules as well!). There is so much you can do with regex, and we've only scratched the surface in this tutorial with some very basic examples.

If you really want to dig into regex I suggest you search on Google for more tutorials, and try to learn the regex syntax. It isn't easy, and there's quite a steep learning curve (in my opinion), but the best way to learn is to go through a lot of examples, and try to translate them in plain English. It really helps you learn the syntax.

In the future I will dedicate a complete article to strictly examples, including more advanced ones, without any explanation. But for now, I can only give you links to other tutorials:

The 30 Minute Regex Tutorial (http://www.codeproject.com/dotnet/RegexTutorial.asp)

Regular-Expressions.info (http://www.regular-expressions.info/)

How To Install And Run phpAdsNew

by: Bedrich Omacka

What is phpAdsNew? It is great script written in PHP which can be used to manage different ad campaigns on your website. PhpAdsNew supports banners of any size (including flash banners), pop-ups, text ads and many different types of rich media ads. Using this script you can manage third party ads, e.g. ads from banner exchanges. And the good message is that this script is free.

How to install phpAdsNew?

First, ensure that your web hosting provider offers PHP support (PHP 4.0.4 or higher) and MySQL database (3.23.3 or higher). Then download the zip or tgz package and unzip it to your hard drive. You can use WinZip or Total Commander to do this. Now upload the files to your web host. Change the permissions of the config.inc.php file using "chmod a+w config.inc.php". Create new MySQL database with any name, e.g. phpadsnew (or use existing database). Now you are able to run the installer. Point your browser to http://www.yourdomain.com/phpadsnew (or another folder where you copied the files). Follow the instruction on the screen and finish the installation process.

Another and easier solution how to install this PHP script is to sign up for a quality web hosting service which offers pre-installed PHP scripts. Then easily go to your control panel, find the section with pre-installed scripts and select phpAdsNew. The installer will do all the job for you. All you need to do is to choose the script you want to install.

How to run phpAdsNew?

Go to admin interface and create at least one zone. Zone is the place on your website where the ads will be displayed (e.g. top banner on the home page can be zone 1, bottom banner on the section page zone 2 etc.). Then create a new client. When you're done, create new campaign for this client. You can set up the zone(s), limit of banner / text ads / rich media... impressions, when the campaign will start and finish, the frequency at which the ad will be shown and many other options.

Ok, we have some campaigns now and they are sucessfully running. But every advertiser wants to check the results of his campaign. From this reason phpAdsNew has very detailed stats section. Your advertisers (or you if you use this script to manage your own ads) will be able to see how many times was particular ad viewed by the website visitors and click through rate (how many % of visitors clicked the ads). In addition, you can watch weekly and daily stats. Stats can be exported to *.csv file (data from *.csv files can be opened by software like MS Excel on your computer).

I hope you will find these information helpful when you will start using phpAdsNew. If you will need some advanced functions I suggest to open phpAdsNew/misc/documentation folder where are stored three *.pdf files with very detailed description of this script. The first one, administrator-guide.pdf, will help you with the installation process and configuration. Developer-guide.pdf is for advanced users with PHP knowledge. The most important file is user-guide.pdf which will provide you by all the functions. Btw. this file has 109 pages. Good luck!

Displaying An RSS Feed On Your Website Using PHP And MagpieRSS

by: Mikel Beck

These days everybody wants to have fresh content on their web site. Search engines like to see dynamic web pages, where the content is updated on a regular basis. Static pages that have information that doesn't change are not only boring, but less likely to be visited by a search engine spider than a page that changes every time it is displayed.

By using RSS and the MagpieRSS toolkit, you can import data from another web site or news source and display that information on your own site.

First, download the MagpieRSS kit from http://magpierss.sourceforge.net.

Next, unpack the archive, into a directory off your root on your web site called "rss".

Then, create a directory off your root called "cache". CHMOD this directory to 777.

You'll need to know the URL for the feed that you want to display. You can find this by searching for "RSS feed" in Google, or by going to one of the many sites that allow you to search thrown various sources for feeds. Syndic8.com is one, for example.

To display data from a single source, you can use code similar to this:

require_once('rss/rss_fetch.inc');

$news_feed = '';

error_reporting(E_ERROR);

$rss = fetch_rss("http://www.url-of-the-rss-feed.com");
$items = array_slice($rss->items, 0);
foreach ($items as $item )
{
$news_feed .= '' . $item['title'] . '' . $item['summary'] . '';
}

echo $news_feed;

MagpieRSS not only decodes the data, but it will also cache the data so it will retrieve news articles only once per hour.

Utilizing RSS in this fashion will allow your web site to have fresh content displayed constantly, and will (hopefully!) keep the search engine spiders interested in your site. The more the spiders index your site, the more pages you will have listed in the search engines. And with more pages listed in the search engine indexes you have a much better chance of attracting people to your web site.

Copyright © 2005 by Mikel Beck.

Saturday, October 6, 2007

Web Languages: PHP vs. ASP.NET

by: Kevin Jordan

While the average web developer has a lot of options these days. It's really more of a bi-partisan system between ASP.NET and PHP, the rest being just independents. The battle rages between the supporters of the two languages, with no clear winner every coming out. While both can be used to complete the same project, it really depends on what you're looking for: price, speed, security, etc.

ASP.NET

If you program in ASP.NET you'll typically get too responses from the other side. Either you're rich (or your company is) or you're a Microsoft lover. While the name comes from Microsoft's old ASP technology, they made a huge leap with the .NET Framework, and the CLR allows you to use other languages for back end processing: typically Visual Basic.NET or C#.

ASP.NET's strength lies in object oriented features, and it's flexibility. Because of the CLR you can have C# programmers and VB.NET programmers working on the same project, or switch languages half way through and not have to rewrite all of your old classes. The .NET class library is organized into inheritable classes based around particular tasks, such as working with XML or image manipulation, so a lot of the more common tasks have been already handled for you.

Visual Studio .NET is a massive development IDE that (as long as your computer is fast enough) will shave tons of time of your coding. It has built in debugging along with IntelliSense, which allows for auto-completion of methods and variables so you don't have to memorize everything.

On the down side, ASP.NET is expensive. One it uses tons more resources on the web server so you'll require either better server or more servers in the farm. Windows 2003 and Visual Studio .NET are pretty tough on the pocket book as well. It's extremely rare for an ASP.NET app not to be running on IIS. And if you pay attention to any of the bug reports, you'll notice that Windows and IIS have had a bit of a history with vulnerabilities being exploited.

PHP

PHP works in combination of HTML to display dynamic elements on the page. PHP only parses code within its delimiters, such as . Anything outside its delimiters is sent directly to the output and not parsed by PHP.

PHP strength lies mostly in LAMP. The LAMP architecture has become popular in the Web industry as a way of deploying inexpensive, reliable, scalable, secure web applications. PHP is commonly used as the P in this bundle alongside Linux, Apache and MySQL. PHP can be used with a large number of relational database management systems, runs on all of the most popular web servers and is available for many different operating systems. This flexibility means that PHP has a wide installation base across the Internet; over 18 million Internet domains are currently hosted on servers with PHP installed.

With PHP 5 finally came exception handling and true OOP, but it still lack namespacing to prevent class naming collisions. PHP's type checking is very loose, potentially causing problems. Another drawback is that variables in PHP are not really considered to have a type. Finally, for some reason big corporations feel that if they're not paying for something, then it's not worth buying. If that's you're company's mentality, they just need to wake up and check out all the awesome free software that's out there.

So Which Is Better?

We'll I have my opinions and you may have yours as well. But in general, PHP is cheap, secure, fast, and reliable, while ASP.NET has quicker development time and is easier due to its class library system can probably be maintained more easily. Both are great languages, and it's up to you to make the decision.