Friday, May 29, 2009

What A Drupal Designer Can Do For You

By: S. Reeves

There is a lot that a Drupal web designer can do for you and your website. A Drupal designer gives you all the additional expertise and access to the best the popular content management system has to offer.

The Cost Of Free Programming

The Drupal CMS may be free, but if you do not have the time or skill to devote to it, you may cost yourself more in the long run. Even those who do know how to implement installations to run a Drupal site often defer to the expertise of a true Drupal expert.There is more that a Drupal designer can offer that can't be achieved with a simple cut and paste.

What many people fail to consider when building a Drupal site without securing the services of professionals are the finer points of web design.They look to function, without always attending to the finer nuances of form and aesthetics, or to navigability and search engine optimization, all integral parts of a complete website design. In the end, business and/or function is often lost because the visitors that do get to the Drupal site (if they do...) have a hard time using the site in the way it was intended. Frustration quickly leads to loss of visitors, participation, and conversions.

Do More With A Drupal Web Designer

When you work with a professional Drupal designer on Drupal site development, you build in a system of reliability and guarantee—guarantee that you have done what it takes to build the site right from the bottom up, and the guarantee of reliability that only comes with professional support. By working with an expert Drupal web designer, you attend to more difficult aspects of website design like:

•Graphic design; while you may technically have the knowledge to change Drupal site designs, you may lack the skills and 'eye' of a professional designer. The graphic design and aesthetics of a site are very important to create a fresh, appealing, yet still functional and user-friendly website. Work with a designer who is also an expert Drupal web designer and you will have the best of both worlds.
•Ecommerce and security; your chosen Drupal expert will offer additional knowledge and expertise that will ensure the usability of your site for ecommerce, and ensure that security protocols are in place to make Drupal ecommerce safe for you and your clientele.
•Drupal web hosting services; because Drupal and it modules require more space; an effective design requires that your Drupal web hosting needs have been attended to.Many Drupal designers offer this as an additional service. When you manage Drupal web hosting services through your designer, you can be sure they will secure the space and reliability that you need to keep your website always on.
•Drupal customization; the flexibility of Drupal relies on customizing your website with the many available modules and on customizing the code for your own personal benefit. While many people can manage building a basic Drupal site, customizing a site for maximum performance is something beyond the novice site builder. For a customized website, you'll need the help of someone with advanced programming knowledge.

You can build a basic Drupal site with limited function without programming experience in many cases. But when the functionality, personality, and reliability of your website matters, it is well worth your investment to do it right and secure the services of a valuable Drupal designer.

:: +/- :: Read more...

What Makes A Hosting Service Friendly For A Web Developer?

By: Jim Hawkins

Developer friendly hosting
Why is developer-friendly hosting important? Given the technical nature of the web hosting and managed server industry, the end client or end user of a hosting service from the outset may often not know what web hosting is or even why they need it. This inevitably leaves what is the first point of contact - the web developer - in the role of organising, recommending, managing or even provider of website hosting.

In the web hosting hot seat, the web developer, whose core business is actually building and developing applications, ultimately spends a fair amount of time working with web hosting companies. With such a central role, making life easier for the web developer would seem only reasonable. So what makes a hosting service friendly for a web developer?
Up to date application support: A web hosting company doesn't really concern itself with the latest application developments, since they need to be able to adapt to all applications, old and new.
The newest releases, frameworks and technologies are critical for a web developer. When you use them you can accomplish more with less and satisfy your clients' needs. You can also stay one step ahead of the competition and design innovative applications. They are also a lot of fun!
Support early on for emerging technology is key. To name but a few that might have existed otherwise, consider Tomcat, Pylons, Zope, Drupal and Ruby on Rails.
Accessible support: Being in control of the production environment for most of the work produced by web developers and being accessible for technical support and resolution of issues is critically important.
Delivery Service is dedicated to providing fast, consistent service to our customers. We maintain foot, van, and truck divisions, and staff over 150 employees. We provide messenger service to the 5 boroughs of New York City and the Tri-State Area. Messenger service and vehicle service can either be requested for standard or rush delivery. To save time and money RS gives you the option to pre-schedule your deliveries by programming your recurring orders in our system.
Accessible means: * Phone support - some things are much faster and easier to resolve over the phone than via email. * No phone queues - sitting on hold for 20 minutes each time you need support is a sure way to kill productivity, not to mention causing hair loss. * Email tracking systems - you can't always expect to deal with the same person at your hosting provider but a ticketing system can ensure your request doesn't get lost and more importantly that all requests are dealt with, having knowledge of your support history. * Escalation - if you've got a complex problem there's nothing worse than trying to resolve it with someone that understands less about the problem than you do. Getting to the right person quickly is the key.
Discusses honesty and integrity as the basic principle of leadership. Defines quality leadership as a process beyond technical competence. Successful leaders continually demonstrate honesty and integrity as an essential element of their professional fabric; a lack of commitment to the principle renders all other skills meaningless. Depicts honesty and integrity as essential elements of human behaviour that promote and support quality relationships. Defines honesty and integrity in the context of building trust and maintaining credibility.
It's the technical competence of your team keeping services online that is ultimately responsible for making your application sing and making your life easy every time you pick up the phone or reach out via email. It's an easy issue to flag, but what defines technical competence in a web hosting team? * Not using CPanel or Plesk is often a good start. * An underlying personal interest in technology and more specifically a passion for Linux and open source technologies. * A desire to implement the best technical solution to the problems presented. * Obsessive-compulsive attention to detail. * Sound testing, troubleshooting, debugging, and analysis skills. Having the desire to drill down to the root cause of problem rather than dealing with the symptoms. * Tertiary qualifications in computer science or equivalent. * An environment which fosters ongoing development of skills, sharing of knowledge and constant improvement of process.
Rapport: Ultimately in any business relationship, when you find that supplier or client that you enjoy working with, you just know it. But what makes it so? perhaps it's rapport - "a close and harmonious relationship in which the people or groups concerned understand each other's feelings or ideas and communicate well" - or in simple terms, it's dealing with people that are on your wavelength.
In order to have a connection in that web host - web developer link this is a blend of technological competency, easy to get support and a fundamental awareness and functioning with you to see that your work hums along.
If this kind of developer-friendly hosting sounds like it suits your needs, then you should read our other web hosting articles and then contact us so that we can help you decide.

:: +/- :: Read more...

Choosing A Modern Content Management System (CMS)

By: Roberto Bell

People review and evaluate Content Management Systems (CMS) for a variety of reasons. Perhaps you are starting a new web project for yourself or a client. Maybe you are taking over responsibility for a site and want to improve and enhance it. Or maybe you run a consulting firm and are hoping to standardize on one development platform after having tried or recommended several different ones. In any case, a good CMS can be so vital to the ease and success of a project that it's an important decision, and you need to make a good one.

Of the literally thousands available, there probably is no single CMS that will fit everyone's needs. Various systems offer both drawbacks and benefits, naturally, depending on the precise needs. Obviously, you need to choose the CMS that has the proper set of characteristics to meet your online publishing needs. However, you need to do this in such a way that you also advance your business strategy. The right CMS will support you in these ways, while the wrong one can bog you down and create more problems than you originally had.

What do you expect?

You must carefully and precisely define your needs (and/or your customers') or you can waste time and money. The fact is, there are probably well over a thousand CMS available, from excellent to useless, but they do fall into several general types. The selection process begins with an understanding of what's what and who's who in this game.

You may hear the term "homegrown" applied to products that are developed and supported by individual development firms for their own projects. The big advantage, of course, is the ability to work with the company to customize the system to your specific requirements and change it whenever you so desire. However, you will be totally dependent on that single, often quite small vendor for essential bug fixes, updates and enhancements.

The commercial offerings of CMS offer a range of features, options, customizability and, of course, pricing. A major plus of using a commercial CMS is that you will get immediate delivery of a (usually) proven and (usually) standardized solution. Without a hands-on test or on-site experience with a particular CMS, it is extremely hard to evaluate quality, dependability and usefulness.

"Top dollar" versus "open source"

There are, of course, a few "high-end" vendors with "top dollar" packages that have solid reputations. They have proven their value by offering robust, ready-to-use, "enterprise-grade" CMS solutions. The downside is that they have also proven how much they can charge for the quality that they offer. Of course, if the pros and cons weigh out a certain way for you, this may be the route you will take.

There is an entire range of CMS software called "open source," where the core code is freely available. Some creative vendors have taken the open source code and packaged it into customized packages available at low and no cost. The primary advantages are tied to cost and usability, in that you will rarely be paying any license fees, and you will always be able to customize the system to your needs. There may be occasional disadvantages with some products developed this way, for instance, the lack of commercial-grade dependability, "iffy" security and the absence of support.

Narrowing the field

You will likely end up with a "short list" of CMS candidates after you have defined your needs, listed your (reasonable) expectations and investigated some of the more popular offerings. Perhaps you have even installed a demo, taken a web "tour" or used a full version of the software at the vendor's location (or another company). Whatever the source of the CMS, you should expand the short list by noting the following next to each candidate package:

TCO - Yes, the old "total cost of ownership" calculation rears its head. Whether it's project-based, or your decision is about what your own firm should be using, you need to consider the time and effort involved in custom development, as well as service, support and possibly even hosting. Don't forget one-time costs such as deployment as well as ongoing ones like training and updates.

Licensing issues - Will you be allowed to customize a commercial CMS to fulfill your customer's or your company's requirements? You also need to know if there are limits on the number of concurrent users or sites tied to a specific installation. Don't forget to find out if there are "subscription" costs or other fees.

Technical considerations - If you plan to host your own application, is the infrastructure "install ready" and do you have the expertise to be the system administrator? You might want to consider a CMS that leverages certain components, such as your operating system and web server, that you already use and that you are familiar and comfortable with.

Decision time

The popular online software guide ITerating suggests the following method of weighting criteria to help you determine overall product:

Functionality - 35%
Usability - 15%
Security - 10%
Performance - Scalability - 10%
Architecture - Quality - 10%
Support - Documentation - 10%
Adoption - Community - 10%

This list, of course, is just an example and can be modified however you want, assuming you have the technical know-how. You also need to factor in your own selection criteria, particularly as regards your in-house expertise for installing and maintaining a CMS. By specifically defining your criteria, establishing a relative importance for each individual criterion and creating a customized structure for choosing the right CMS for your particular situation, you will more than likely end up with the right one. Don't be in a hurry, and don't forget to ask questions if you are unclear about anything.

:: +/- :: Read more...

Joomla Web Design - Top 6 Reasons Why Web Design Companies and designers Use Joomla

By: Kunal Singh

Joomla has changed the way web design companies develop websites. Joomla is an open source content management system popular among web design companies and designers. Joomla is used by small businesses as well as large global conglomerates. Recently prestigious organisations such as UN have also chosen Joomla to power their website. Many businesses are also redesigning their static websites into powerful Joomla based websites. Joomla offers many advantages over regular websites.

Joomla is one of the leading content management systems in the world. It is an open source web design platform that can meet the needs of any website small or large. Joomla has been awarded the best open source content management system consecutively in the last few years.

Web designers all over the world have benefited by designing websites for customers using Joomla. Joomla’s popularity has grown exponentially especially in the last couple of years. Today it is one of the most sought after content management systems by website design companies.

1. Scalability
Joomla is highly flexible and scalable. We b design companies have used Joomla successfully to design websites for start-up businesses as well as for established b businesses. The scalability of Joomla makes it equally beneficial for developing small websites or large complex websites. It is open source and can be extended to meet bespoke needs of businesses. Web design companies and web developers are able to easily add new features that may not be available to start with.

#2 Joomla is affordable
Joomla is available on a free open source licence. You do not have to buy the software or purchase any licence or serial number for its use. It has appealed to Web design companies as they are able to download it for free form Joomla’s website and explore possibility of extending it to suit individual requirements. As ut is free and open source, this allows web design companies to develop powerful websites for smaller businesses as well, form whom high costs can be a deterrent.

#3 Joomla is Easy to use and maintain
Joomla websites are easy to administer and use. For the end user, it does not require formal training or technical qualifications to use. Joomla is built with PHP/MySql which is a widely used technology for developing dynamic websites. .Web design companies are familiar with working with PHP and MySql and are able to develop add on features with ease. Most web hosting providers can support Joomla websites within default configurations.

#4 Vast Communities
Joomla is popular and has an established community of developers and end users. The Joomla community are brought together via many developer portals, blogs and resource websites on the internet. The many independent Joomla communities are constantly involved with research and development and new features are released frequently. New features are available as add-on Joomla modules and components and can be installed easily on existing Joomla websites. Web design companies are thus able to offer enhancements to their customer’s websites either for free or at lower costs than what it would if the feature was developed form scratch.

#5 Joomla is Powerful

Joomla is powerful and has an extensive range of built-in features. Joomla’s software architecture and design is robust and it has been developed by a highly experienced team. A wide range of common features are built-in by default and automatically available on all Joomla websites. Web design companies who use Joomla make significant savings on time required to develop customer websites and as a result have more time to concentrate on other critical issues.

6# Joomla websites ate easy to design

Joomla websites are relatively easy to design and update. Managing change or updates are simplified with Joomla. Joomla websites use a template based system for its lay-out and look and feel. A web design company can manage design changes to the website with ease as there is a single point for making all changes. The remplate system provides this ability as any change made to the site template takes place on all pages of the website. Unlike a static website where any changes would ned to be applied independently to all pages of the website; in Joomla only the website template needs changing.

:: +/- :: Read more...

Internet and Web Design Companies

By: Pallavi

Wensil I Technologies is reputed Web Design Company in India. For us web design company does not only mean providing you best designs, we also mean that with the best web designs you get unique and creativity designs which Wensil promises you that we give. Client satisfaction is our motive, if you are happy with our work then we say ourselves we have got the success. There are so many web design companies around the globe and they also assure that their web designs are the best. But quality matters a lot. We do not believe in quantity and we never compromise in quality. We take very less projects and not only give 99.9%, we always assure in 100%. For us .1% means a lot.

With the good quality you must be thinking... we charge very high. But no... Wensil is affordable Web Design Company. Though we never compromise in quality but it is not like that we charge so high.

Important factor of any web design company is providing best website to the client. So now let’s start with the basics... that while designing a good website these factors should be considered. You are an affluent businessman and you know all the tactics of business how to run.... But still somewhere you are missing important thing... which is marketing. These days if promotion of a product is good then it runs superbly and internet is the best source of marketing these days. Like everything in business is important, getting a website is important too. Getting an effective website needs even more planning than running a business.
Basic things which you should know:

World Wide Web

What is internet and what is the use of it??? Basically a network of websites from all over the world you can access via your computer for which you need an internet connection and a browser. Internet connections are available from ISPs, and most of the popular browsers are free downloads from the internet. Just like writing/typing an address on a postal envelope, you type the website address in the browser beginning with http://www. and ending with either .com, .net, .org, .biz, .nz, .uk, etc. So if you want to access the Wensil website, you would type http://www.wensil.com in the browser. You get all the information about Wensil and its services on your browser. Just click on the available links and you are on your way.

Your Website

Your website will be a bunch of pages all linked together via hyperlinks. You can ofcourse have a one-page website or as many pages as you like - depending on the amount of information you want to share with your visitors. Hyperlinks are text or images pointing to another page, just like the heading of this article points to my website.

Your Audience

As the web has grown, so have the types of people who access it and how they access it. As we say, it is impossible to please everybody. It is very difficult to design a website which will be accessible to all. Carefully choose your content and design, keeping in mind who your target audience is and what type of equipment they use. Equipment here means the computer and other hardware and also includes the software used for connecting to the internet and browsing it.

Web Design Companies helps you in creating website for your company. According to your need, they design websites for your company. These days’ websites are really important for any kind of business whether it is small or large. With the passage of time, people have change now using technology is so common that people can get any kind of information by sitting at home and main credit goes to websites and web design companies.

:: +/- :: Read more...

Sunday, April 5, 2009

Clickbank Security Using PHP

by: Robert Plank


Here's a way to protect the products you sell with Clickbank, using their built-in protection and by implementing a 30-day expiration, all without having to worry about managing databases or customer lists.


THE FIRST STEP

First of all, Clickbank protection is decent as it is. If you want to keep your customers from passing the thank you page URL around to friends, there are a couple of things you can do.

Login to your Clickbank account: http://www.clickbank.com/login.html

At the top there's a link that says "Click HERE to modify your account". Click on the link.

On this page there are two links at the top, but one says "Click HERE to modify your account." Click on this one.

You should be at the page that allows you to edit the prices of all your Clickbank products. Scroll down to the bottom where it says:

Secret key (up to 16 letters & digits)

You should see a text box here. If it's empty, choose a secret key, type it in and remember it. It can be anything you want, but it should be different than your Clickbank password.

"COOKIE CUTTER" TOOLS

If you've looked around the Clickbank site you'd know that Clickbank offers some friendly pieces of code in a few different programming languages like Perl and PHP that can help you protect your downloads. Basically this is what happens:

* Your order link contains what's called a "seed". This is just a word or a piece of text, which can be anything you want.

* Your customer clicks on the order link and pays.

* Clickbank takes that seed, and uses your secret key on it -- basically mashes the two together and does a bunch of crazy stuff to come up with a garbled piece of junk. But this a garbled piece of junk that can ONLY come from this seed and secret key. You change the value of the seed or secret key even a little and this "hash" changes.

* The seed and the hash are passed back to the thank you page where your Clickbank script sits. (We have the secret key added to your script, and it never changes, so it doesn't need to be handed to us by Clickbank.) This Clickbank script takes the seed and the secret key and does the same crazy shit Clickbank did to us to compute your own hash.

Clickbank calls this their "cbpop" or Clickbank Proof of Purchase.

The hash was something we figured out on your own and the hash Clickbank are compared. If they match, we're in business because the customer here really did buy from us.. The customer can't figure this out on his or her own because they never actually saw the secret key. (And no, you can't "reverse" a hash to figure out the original secret key.)

If you get nothing out of what I just told you, remember this: it's almost impossible for anyone to figure out the right Proof of Purchase code without that secret key.

USING SOMEONE ELSE'S CODE

This is the PHP function they give us:

function cbValid($seed, $cbpop, $secret_key) {

// A bunch of stuff in here...

}

This function cbValid takes three parameters: $seed, $cbpop, and $secret_key. The script goes through that last step of ours I explained above, does the crazy shit and then compares the result to the one given to us by Clickbank.

Now we need to figure out what to do if your customer really didn't pay. The easiest thing to do, is just stop the script in its tracks, preventing the page under it from loading.

if (!cbValid($seed, $cbpop, $secret_key)) die();

The exclamation point means "not". We're saying, first try this...

cbValid($seed, $cbpop, $secret_key)

.. pass the seed, proof of purchase, and secret key into your black box. If the function tells us NO, do the rest. In this case, "die". Die stops everything immediately, so if you have HTML or PHP code below that line, it won't be looked at if the Clickbank validation fails.

The "proper" way to grab $seed from the query string is this way:

if (!cbValid($_GET["seed"], $_GET["cbpop"], $secret_key)) die();

You could also redirect the user to an error page of yours if you like:

if (!cbValid($_GET["seed"], $_GET["cbpop"], $secret_key)) {

header("Location:http://www.your.host/error.html");

die();

}

Instead of $seed and $cbpop we use $_GET["seed"] and $_GET["cbpop"]. This is because the variables don't appear magically out of thin air, they really appear in the URL as http://www.your.url/test.php?seed=SOMESEED&cbpop=SOMEPOP. We want these values to be taken out of the URL.

USE MINE

Here's a zip file containing your cb.php script: http://www.jumpx.com/tutorials/clickbank/cb.zip

Save it, unzip it, and open cb.php. Near the top should be a line such as:

$secret_key = "YOUR_SECRET_KEY";

Change YOUR_SECRET_KEY to that secret key you set in the Clickbank control panel.

Now, for usage... your thank you pages will have to end in .php here. Like, thankyou.php (and now it doesn't matter if they have obvious names or not -- because they'll be thoroughly inaccessible to thieves. Remember, you can simply rename your HTML pages so they end in .php and they'll still work just fine.

Put this line at the top of you thank you page script:

Be sure to upload cb.php to the same folder as your thank you page. Now, when someone goes to the thank you page, the first thing the thank you script will do is run everything in cb.php, and cb.php will take the data Clickbank has passed to see if it matches.

You're going to have to change your Clickbank order links a little. This is what they should look like now:

http://www.clickbank.net/sell.cgi?link=YOUR_CLICKBANK_ID/YOUR_PRODUCT_ID/YOUR_PRODUCT_NAME&seed=YOUR_SEED

Replace YOUR_CLICKBANK_ID with, of course, your Clickbank ID and YOUR_SEED with the seed you want to use. This can be anything, something simple that's short and one word like the product name. But NOT your secret key.

YOUR_PRODUCT_ID is the number Clickbank shows to the left of each thank you page as you add it. When you're testing, be sure to set the price at $0.00. Once everything's in place you can raise the price of the item to $19.95 or $29.95 or whatever it's priced at.

http://www.clickbankguide.com/merchant.htm#account will explain everything if you're a Clickbank newbie.

COULDN'T THE DOWNLOAD URL, HASH, AND RECEIPT BE SHARED?

You can't prevent sharing completely... after all, your customer can always download the file and share the file, not the download URL, to friends. We can do one thing to give these would-be freeloaders a bit of a headache, and that is expiration.

Here we can say, 30 days after someone buys your product, the thank you page will be inaccessible to them. If they buy on October 25th, they can bookmark and revisit that thank you page up until November 25th at the exact time they made their purchase. It's kind of a nice compromise because it gives honest people enough time to get what they need but at the same time it becomes impractical to share the URL.

In chapter 9 of my book, Simple PHP (http://www.simplephp.com), I explained how time works on computers, they use a big number which is just a count of how many seconds have passed since January 1st, 1970. I also explained that there was a function, called strtotime(), which we could use to determine this "number" or timestamp of a certain date. For example, 30 days ago or 1 year ago.

30 days sounds about right. To figure out the Unix timestamp of this moment, minus 30 days is:

strtotime("-30 days")

Now, to store it in a variable called $expire:

$expire = strtotime("-30 days");

But you're saying, how do I know when these people purchased? I don't have that kind of information. Aha! But you can. Remember, the seed you put in your order links can be anything you want. So let's just make it the timestamp of this exact moment.

When the customer revisits the thank you page, they can't change the seed, because as I mentioned, if you change *either* the seed or the secret key, the resulting hash (proof of purchase) will be different. So you see, they're stuck with it. But, the current time always changes!

All we have to do, in cb.php, are these two steps:

* Figure out what the timestamp was exactly 30 days ago, and store this value in $expire.

* Compare the seed and $expire. If the the value of the seed is less than that of $expire, it means that the product was purchased more than 30 days ago and the visitor shouldn't be given access to the page. Die.

We've already taken care of step one by saving the timestamp 30 days prior in $expire. Now, we compare the seed (it's $_GET["seed"], remember, because we're grabbing it out of the URL string) and $expire like:

if ($_GET["seed"] Order Now

Instead of YOUR_SEED we want PHP to call the function mktime(), which gives us the current timestamp, and output it, using echo.

echo mktime();

Now just put around it...

And shove it in there.

">Order Now

Now setup a link for $0.00 in your Clickbank control panel and try it. You can be sure it works by changing that "-30 days" in strtotime to "-5 minutes". Then try accessing the download page, then wait 5 minutes and try again. Neat, isn't it?

You say, I've done this, but I have more than one product. How do I keep someone from grabbing everything once they've grabbed one?

Have your links look like the following: ">Order Now

This way the seeds will look like "stringbeans445433" if you're selling stringbeans. Then again if you're selling corn on the cob on another sales page, you can change "stringbeans" to "cornonthecob". Now the seeds for each product will be different.

Those seeds won't be all numbers, will they? So, in cb.php, do this:

$timestamp = ereg_replace("[^0-9]","",$_GET["seed");

I won't go into a lot of detail about pattern matching, but the [^0-9] means "NOT anything from 0 to 9. It basically goes through every letter and number of $_GET["seed"], and if what's there isn't a 0, 1, 2, etc. it's replaced with nothing (hence the ""). The final result is saved in a variable called $timestamp.

Since now we're looking at $timestamp and not $_GET["seed"], let's change that if-statement:

if ($timestamp

When I extracted the timestamp from the seed, I simply removed all characters that were not numbers, leaving just the numbers contained within that string. Now I want to do the opposite. Here's an example seed:

test1074482258

I take out all the numbers and am left with "test". Next I figure out which script called cb.php (which is stored in the variable $_SERVER["SCRIPT_NAME"]). Then the script takes out everything up to the last slash (/) and everything before the first dot (.). If the script was located at "/clickbank/test.php", all that's left is "test".

If you give each thank you page a different name, and make sure all your seeds reflect the correct page, i.e. if your thank you page is called "carrots", the part of that order link containing the seed should appear as:

&seed=carrots

If you don't care how Clickbank's protection works, that's your derogative. Just get the zip file and follow the instructions I've provided in cb.php.

As far as scripts that handle several Clickbank products -- I can't recommend any at this time, since I've never across any good ones. (But you should check out Harvey Segal's free site, ClickbankGuide.com, which can answer most of your questions about Clickbank.)

Here's that script again in case you missed it: http://www.jumpx.com/tutorials/clickbank/cb.zip

Make sure to read the instructions I've supplied in cb.php, get everything setup and on your web server, and you'll be well on your way to having bulletproof protection on your Clickbank products.

:: +/- :: Read more...

Simple Solution for Php Includes - IFrames

by: Michael J Medeiros


I have recently created my first Php program. I wanted to share with others some of the problems that I encountered, and how I finally overcame these obstacles.

My Reason for needing a Php Include

To start, my most recent website features a free classified advertising solution, a modified version of PhpBB stripped to function as an Article Bulletin Board (No replying), and a link directory. The business model of my Website offers free Classified Advertising, but charges a small fee for enhanced advertisements (Featured, Bolded, and Better Placement). The Classifieds were purchased from a developer, so I had little experience with the application. The link directory was a free resource of an old program that I modernized a bit. I choose the old link directory because the links are clean. They are not replaced with coding to count outbound traffic. I figured this would increase the value of links, to sites who exchanged links with me.

To increase revenue on the new site, I realized that I needed to increase the value of, “Featured Advertisements”. To do this I wanted to randomly rotate featured advertisements, from the classifieds, across my Bulletin Board and Link Directory. Bare in mind, all three are run from a unique table, and I wanted to leave it that way. In addition, I had little experience with the development for all three applications.

I started reading tutorials and utilizing Forums to create a Php program for external pages on the site. The program would pull a random featured ad from the classified table. This program only took me about 32 hours to create, while performing research. I didn't intend to get into the schematics of the program with this post, so forgive me if you are looking for a Random generator. But I would be more than happy to share my code upon request.

The code I created was simple, it worked just the way I wanted, but I ran into one cumbersome obstacle; how do I implement this easily across two unique table driven applications? The answer was to use a Php Include

I started reading tutorials on, "Php includes and functions and classes". I realized quickly that this was a bit more confusing than creating the actual coding. In addition, I ran into parsing errors if I included the new coding in only one application.

My solution to using the, "Include ()," Php function

I found that very few people were willing to provide any feedback for such a problem, even in the most resourceful forums for Php Coding and information resources. I fumbled with the coding for over 72 hours. I thought this was a bit ridiculous, as the code itself took less time to create.

I finally came across a helpful solution that may prove beneficial, if you are in the same situation with Php Includes. The code was uploaded onto my server as a file (something.php). I removed the standard, "Php Include ()," function from all links and the PhpBB coding. I then called the Php file (page) using an Iframe tag, on pages I wanted it to appear. This proved to be a successful replacement for the Php Include.

Search Engine Results Using Iframe for Php Include

I waited until Google came around to see how the Iframe affected my sites search rankings. Finally, the other day this happened. The conclusion, my search rankings still increased due to recent link exchanges. The code is working to my needs, and it is easily included on any page that I want, even externals outside my site can call on the code, which opens more doors for advancement.

Here is the simple Iframe code I used to replace the Php Include:

iframe valign="right" marginwidth="0" marginheight="0" hspace="0" vspace="0" src="http://your.com/file-to-include.php" align="top" scrolling="no" width="600" frameborder="0" height="105"> /iframe


Using the Iframe tag for Php Include Conclusion

I have encountered no problems with including my PHP code on pages across external servers, using the iframe as a Php Include. As you can see, it is totally customizable. You can specify the width, height, alignment, border, scrolling, margins and more. The only obstacle that I have encountered, is the style sheet that the site, or page, with the, "Php Include," is not utilized. The page that the code is on seems to need its own unique style sheet.

I hope this proves beneficial to anyone having trouble with running a "Php Include" across various unique online applications.

:: +/- :: Read more...

Developing State-enabled Applications With PHP

by: John L


Installment 1

Developing State-enabled Applications With PHP

When a user is browsing through a website and is surfing from one web page to another, sometimes the website needs to remember the actions (e.g. choices) performed by the user. For example, in a website that sells DVDs, the user typically browses through a list of DVDs and selects individual DVDs for check out at the end of the shopping session. The website needs to remember which DVDs the user has selected because the selected items needs to be presented again to the user when the user checks out. In other words, the website needs to remember the State - i.e. the selected items - of the user's browsing activities.

However, HTTP is a Stateless protocol and is ill-equipped to handle States. A standard HTML website basically provides information to the user and a series of links that simply directs the user to other related web pages. This Stateless nature of HTTP allows the website to be replicated across many servers for load balancing purposes. A major drawback is that while browsing from one page to another, the website does not remember the State of the browsing session. This make interactivity almost impossible.

In order to increase interactivity, the developer can use the session handling features of PHP to augment the features of HTTP in order to remember the State of the browsing session. The are basically 2 ways PHP does this:

1. Using cookies
2. Using Sessions

The next installment discusses how to manage sessions using cookies...

Installment 2

Cookies

Cookies are used to store State-information in the browser. Browsers are allowed to keep up to 20 cookies for each domain and the values stored in the cookie cannot exceed 4 KB. If more than 20 cookies are created by the website, only the latest 20 are stored. Cookies are only suitable in instances that do not require complex session communications and are not favoured by some developers because of privacy issues. Furthermore, some users disable support for cookies at their browsers.

The following is a typical server-browser sequence of events that occur when a cookie is used:

1. The server knows that it needs to remember the State of browsing session
2. The server creates a cookie and uses the Set-Cookie header field in the HTTP response to pass the cookie to the browser
3. The browser reads the cookie field in the HTTP response and stores the cookie
4. This cookie information is passed along future browser-server communications and can be used in the PHP scripts as a variable

PHP provides a function called setcookie() to allow easy creation of cookies. The syntax for setcookie is:

int setcookie(string name, [string val], [int expiration_date], [string path], string domain, [int secure])

The parameters are:

1. name - this is a mandatory parameter and is used subsequently to identify the cookie
2. value - the value of the cookie - e.g. if the cookie is used to store the name of the user, the value parameter will store the actual name - e.g. John
3. expiration_date - the lifetime of the cookie. After this date, the cookie expires and is unusable
4. path - the path refers to the URL from which the cookie is valid and allowed
5. domain - the domain the created the cookie and is allowed to read the contents of the cookie
6. secure - specifies if the cookie can be sent only through a secure connection - e.g. SSL enable sessions

The following is an example that displays to the user how many times a specific web page has been displayed to the user. Copy the code below (both the php and the html) into a file with the .php extension and test it out.

[?php
//check if the $count variable has been associated with the count cookie
if (!isset($count)) {
$count = 0;
} else {
$count++;
}
setcookie("count", $count, time()+600, "/", "", 0);
?]

[html]
[head]
[title]Session Handling Using Cookies[/title]
[/head]
[body]
This page has been displayed: [?=$count ?] times.
[/body]
[/html]

The next installment discusses how to manage sessions using PHP session handling functions with cookies enabled...

Installment 3

PHP Session Handling - Cookies Enabled

Instead of storing session information at the browser through the use of cookies, the information can instead be stored at the server in session files. One session file is created and maintained for each user session. For example, if there are three concurrent users browsing the website, three session files will be created and maintained - one for each user. The session files are deleted if the session is explicitly closed by the PHP script or by a daemon garbage collection process provided by PHP. Good programming practice would call for sessions to be closed explicitly in the script.

The following is a typical server-browser sequence of events that occur when a PHP session handling is used:

1. The server knows that it needs to remember the State of browsing session
2. PHP generates a sssion ID and creates a session file to store future information as required by subsequent pages
3. A cookie is generated wih the session ID at the browser
4. This cookie that stores the session ID is transparently and automatically sent to the server for all subsequent requests to the server

The following PHP session-handling example accomplishes the same outcome as the previous cookie example. Copy the code below (both the php and the html) into a file with the .php extension and test it out.

[?php //starts a session session_start(); //informs PHP that count information needs to be remembered in the session file if (!session_is_registered("count")) { session_register("count"); $count = 0; } else { $count++; } $session_id = session_id(); ?] [html] [head] [title]PHP Session Handling - Cookie-Enabled[/title] [/head] [body] The current session id is: [?=$session_id ?] This page has been displayed: [?=$count ?] times. [/body] [/html]

A summary of the functions that PHP provides for session handling are:

1. boolean start_session() - initializes a session
2. string session_id([string id]) - either returns the current session id or specify the session id to be used when the session is created
3. boolean session_register(mixed name [, mixed ...]) - registers variables to be stored in the session file. Each parameter passed in the function is a separate variable
4. boolean session_is_registered(string variable_name) - checks if a variable has been previously registered to be stored in the session file
5. session_unregister(string varriable_name) - unregisters a variable from the session file. Unregistered variables are no longer valid for reference in the session.
6. session_unset() - unsets all session variables. It is important to note that all the variables remain registered.
7. boolean session_destroy() - destroys the session. This is opposite of the start_session function.

The next installment discusses how to manage sessions using PHP session handling functions when cookies are disabled...

Installment 4

PHP Session Handling - Without Cookies

If cookies are disabled at the browser, the above example cannot work. This is because although the session file that stores all the variables is kept at the server, a cookie is still needed at the browser to store the session ID that is used to identify the session and its associated session file. The most common way around this would be to explicitly pass the session ID back to the server from the browser as a query parameter in the URL.

For example, the PHP script generates requests subsequent to the start_session call in the following format:

http://www.yourhost.com/yourphpfile.php?PHPSESSID=[actual session ID]

The following are excerpts that illustrate the discussion:

Manually building the URL:

$url = "http://www.yoursite.com/yourphppage.php?PHPSESSID=" . session_id();
[a href="[?=$url ?]"]Anchor Text[/a]

Building the URL using SID:

[a href="http://www.yoursite.com/yourphppage.php?[?=SID ?]"]Anchor Text[/a]

:: +/- :: Read more...

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/)

:: +/- :: Read more...

Design Web Album and Deployment Using Adobe and Macromedia

by: Robert Kennedy


OK, here is my mission; completely install a customer example photo gallery found here http://www.cardprinting.net/ in 2 hours or less. The basic process starts from Adobe Illustrator CS or Corel Draw 12. This is the format all customers’ work is saved in. There are aproximately. 300 files I need to access export and create a photo album with full navigation.

Here's how I did it. Instead of opening each file in its native program I tried opening CDR and AI files in Adobe Photoshop. Guess what? It works with the ai files but not the cdr files. Why is this important? Because 90% of my files are in ai format! Illustrator only allows you to open 1 file at a time, Photoshop allows you to open as many as your computer's resources can handle. At the same time Photoshop converts each vector based image to a bitmap, which is required for the web. Now, you could create a course of 'actions' to complete this more efficiently, but I want to remove or retouch some undesirable from each image. I am a 'perfectionist' so I want these images looken good AND loading fast for the web. Personally I find Adobe Photoshop and Macromedia Fireworks offer the best export filters for the web.

So now I have 300 images looken good, properly cropped and optimized for the web. What is the best way to create a Photo Album from so many images? Again let's refer to my favorites for this, Macro Media or Adobe? I work with both for different projects and really can't pick a favorite here! They are both excellent for this. Macromedia Dreamweaver has a function found under commands>create photo album, shown here http://www.weprintcolors.com/screens/screen_dw_create_photo.htm. You will need Fireworks installed for this to work. Go ahead and fill in all the text fields that are required information shown here http://www.weprintcolors.com/screens/screen_dw_create_photo_menu.htm. It is important you take the time to craft your words carefully, especially in the first field as this text is written into every html file generated. Check the appropriate format, rows and columns etc. Check the box for file names on or off and check the box for, 'create navigation page for each photo'. OK that's it you're ready to fire away, click OK. Amazing, eh?

Well I am kind of busy right now working on my next project. In my next post I will talk about the same process of creating a web based photo album using adobe photo shop for the entire process.

:: +/- :: Read more...

Saturday, April 4, 2009

MySQL Database Handling in PHP

by: John L


Most interactive websites nowadays require data to be presented dynamically and interactively based on input from the user. For example, a customer may need to log into a retail website to check his purchasing history. In this instance, the website would have stored two types of data in order for the customer to perform the check – the customer’s personal login details; and the customer’s purchased items. This data can be stored in two types of storage – flat files or databases.

Flat files are only feasible in very low to low volume websites as flat files have 3 inherent weaknesses:

1. The inability to index the data. This makes it necessary to potentially read ALL the data sequentially. This is a major problem if there are a lot of records in the flat file because the time required to read the flat file is proportionate to the number of records in the flat file.
2. The inability to efficiently control access by users to the data
3. The inefficient storage of the data. In most cases, the data would not be encrypted or compressed as this would exacerbate the problem no. 1 above

The alternative which is, in my opinion, the only feasible method, is to store the data in a database. One of the most prevalent databases in use is MySQL. Data that is stored in a database can easily be indexed, managed and stored efficiently. Besides that, most databases also provide a suite of accompanying utilities that allow the database administrator to maintain the database – for example, backup and restore, etc.

Websites scripted using PHP are very well suited for the MySQL database as PHP has a custom and integrated MySQL module that communicates very efficiently with MySQL. PHP can also communicate with MySQL through the standard ODBC as MySQL is ODBC-compliant, However, this will not be as efficient as using the custom MySQL module for PHP.

The rest of this article is a tutorial on how to use PHP to:

1. Connect to a MySQL database
2. Execute standard SQL statements against the MySQL database

Starting a Session with MySQL

Before the PHP script can communicate with the database to query, insert or update the database, the PHP script will first need to connect to the MySQL server and specify which database in the MySQL server to operate on.

The mysql_connect() and mysql_select_db() functions are provided for this purpose. In order to connect to the MySQL server, the server name/address; a username; and a valid password is required. Once a connection is successful, the database needs to be specified.

The following 2 code excerpts illustrate how to perform the server connection and database selection:

@mysql_connect("[servername]", "[username]", "[password]") or die("Cannot connect to DB!");

@mysql_select_db("[databasename]") or die("Cannot select DB!");

The @ operator is used to suppress any error messages that mysql_connect() and mysql_select_db() functions may produce if an error occurred. The die() function is used to end the script execution and display a custom error message.

Executing SQL Statements against a MySQL database

Once the connection and database selection is successfully performed, the PHP script can now proceed to operate on the database using standard SQL statements. The mysql_query() function is used for executing standard SQL statements against the database. In the following example, the PHP script queries a table called tbl_login in the previously selected database to determine if a username/password pair provided by the user is valid.

Assumption:

The tbl_login table has 3 columns named login, password, last_logged_in. The last_logged_in column stores the time that the user last logged into the system.

// The $username and $passwd variable should rightly be set by the login form
// through the POST method. For the purpose of this example, we’re manually coding it.
$username = “john”;
$passwd = “mypassword”;

// We generate a SELECT SQL statement for execution.
$sql="SELECT * FROM tbl_login WHERE login = '".$username."' AND password = '".$passwd."'";

// Execute the SQL statement against the currently selected database.
// The results will be stored in the $r variable.
$r = mysql_query($sql);

// After the mysql_query() command executes, the $r variable is examined to
// determine of the mysql_query() was successfully executed.
if(!$r) {
$err=mysql_error();
print $err;
exit();
}

// If everything went well, check if the query returned a result – i.e. if the username/password
// pair was found in the database. The mysql_affected_rows() function is used for this purpose.
// mysql_affected_rows() will return the number of rows in the database table that was affected
// by the last query
if(mysql_affected_rows()==0){
print "Username/password pair is invalid. Please try again.";
}
else {

// If successful, read out the last logged in time into a $last variable for display to the user
$row=mysql_fetch_array($r);
$last=$row["last_logged_in"];
print “Login successful. You last logged in at ”.$last.”.”;

}

The above example demonstrated how a SELECT SQL statement is executed against the selected database. The same method is used to execute other SQL statements (e.g. UPDATE, INSERT, DELETE, etc.) against the database using the mysql_query() and mysql_affected_rows() functions.

:: +/- :: Read more...

Developing a Login System with PHP and MySQL

by: John L


This article is written by daBoss. daBoss is the Webmaster of Designer Banners. daBoss can be contacted at sales (at) designerbanners (dot) com.

Developing a Login System with PHP and MySQL

Most interactive websites nowadays would require a user to log in into the website’s system in order to provide a customized experience for the user. Once the user has logged in, the website will be able to provide a presentation that is tailored to the user’s preferences.

A basic login system typically contains 3 components:

1. The component that allows a user to register his preferred login id and password
2. The component that allows the system to verify and authenticate the user when he subsequently logs in
3. The component that sends the user’s password to his registered email address if the user forgets his password

Such a system can be easily created using PHP and MySQL.

Component 1 – Registration

Component 1 is typically implemented using a simple HTML form that contains 3 fields and 2 buttons:

1. A preferred login id field
2. A preferred password field
3. A valid email address field
4. A Submit button
5. A Reset button

Assume that such a form is coded into a file named register.html. The following HTML code excerpt is a typical example. When the user has filled in all the fields, the register.php page is called when the user clicks on the Submit button.

[form name="register" method="post" action="register.php"]
[input name="login id" type="text" value="loginid" size="20"/][br]
[input name="password" type="text" value="password" size="20"/][br]
[input name="email" type="text" value="email" size="50"/][br]
[input type="submit" name="submit" value="submit"/]
[input type="reset" name="reset" value="reset"/]
[/form]

The following code excerpt can be used as part of register.php to process the registration. It connects to the MySQL database and inserts a line of data into the table used to store the registration information.

@mysql_connect("localhost", "mysql_login", "mysql_pwd") or die("Cannot connect to DB!");
@mysql_select_db("tbl_login") or die("Cannot select DB!");
$sql="INSERT INTO login_tbl (loginid, password and email) VALUES (".$loginid.”,”.$password.”,”.$email.”)”;
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}

The code excerpt assumes that the MySQL table that is used to store the registration data is named tbl_login and contains 3 fields – the loginid, password and email fields. The values of the $loginid, $password and $email variables are passed in from the form in register.html using the post method.

Component 2 – Verification and Authentication

A registered user will want to log into the system to access the functionality provided by the website. The user will have to provide his login id and password for the system to verify and authenticate.

This is typically done through a simple HTML form. This HTML form typically contains 2 fields and 2 buttons:

1. A login id field
2. A password field
3. A Submit button
4. A Reset button

Assume that such a form is coded into a file named authenticate.html. The following HTML code excerpt is a typical example. When the user has filled in all the fields, the authenticate.php page is called when the user clicks on the Submit button.

[form name="authenticate" method="post" action="authenticate.php"]
[input name="login id" type="text" value="loginid" size="20"/][br]
[input name="password" type="text" value="password" size="20"/][br]
[input type="submit" name="submit" value="submit"/]
[input type="reset" name="reset" value="reset"/]
[/form]

The following code excerpt can be used as part of authenticate.php to process the login request. It connects to the MySQL database and queries the table used to store the registration information.

@mysql_connect("localhost", "mysql_login", "mysql_pwd") or die("Cannot connect to DB!");
@mysql_select_db("tbl_login") or die("Cannot select DB!");
$sql="SELECT loginid FROM login_tbl WHERE loginid=’".$loginid.”’ and password=’”.$password.”’”;
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}
if(mysql_affected_rows()==0){
print "no such login in the system. please try again.";
exit();
}
else{
print "successfully logged into system.";
//proceed to perform website’s functionality – e.g. present information to the user
}

As in component 1, the code excerpt assumes that the MySQL table that is used to store the registration data is named tbl_login and contains 3 fields – the loginid, password and email fields. The values of the $loginid and $password variables are passed in from the form in authenticate.html using the post method.

Component 3 – Forgot Password

A registered user may forget his password to log into the website’s system. In this case, the user will need to supply his loginid for the system to retrieve his password and send the password to the user’s registered email address.

This is typically done through a simple HTML form. This HTML form typically contains 1 field and 2 buttons:
# A login id field
# A Submit button
# A Reset button

Assume that such a form is coded into a file named forgot.html. The following HTML code excerpt is a typical example. When the user has filled in all the fields, the forgot.php page is called when the user clicks on the Submit button.

[form name="forgot" method="post" action="forgot.php"]
[input name="login id" type="text" value="loginid" size="20"/][br]
[input type="submit" name="submit" value="submit"/]
[input type="reset" name="reset" value="reset"/]
[/form]

The following code excerpt can be used as part of forgot.php to process the login request. It connects to the MySQL database and queries the table used to store the registration information.

@mysql_connect("localhost", "mysql_login", "mysql_pwd") or die("Cannot connect to DB!");
@mysql_select_db("tbl_login") or die("Cannot select DB!");
$sql="SELECT password, email FROM login_tbl WHERE loginid=’".$loginid.”’”;
$r = mysql_query($sql);
if(!$r) {
$err=mysql_error();
print $err;
exit();
}
if(mysql_affected_rows()==0){
print "no such login in the system. please try again.";
exit();
}
else {
$row=mysql_fetch_array($r);
$password=$row["password"];
$email=$row["email"];

$subject="your password";
$header="from:you@yourdomain.com";
$content="your password is ".$password;
mail($email, $subject, $row, $header);

print "An email containing the password has been sent to you";
}

As in component 1, the code excerpt assumes that the MySQL table that is used to store the registration data is named tbl_login and contains 3 fields – the loginid, password and email fields. The value of the $loginid variable is passed from the form in forgot.html using the post method.

Conclusion

The above example is to illustrate how a very basic login system can be implemented. The example can be enhanced to include password encryption and additional functionality – e.g. to allow users to edit their login information.

:: +/- :: Read more...

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.

:: +/- :: Read more...

Secure PHP Programming

Secure PHP Programming 101

By Michael McCann

Writing insecure code is easy. Everybody does it. Sometimes we do it accidentally because we don’t realize that the security issue exists, and sometimes we do it on purpose because we suspect the bad guys won’t notice one little vulnerability. Secure programming is often overlooked because of ignorance, time constraints, or any number of other factors. Since security isn’t flashy until something goes wrong, it is often easy put it off.

Once your application is compromised, you will realize there’s nothing more important. The best case scenario is that you lose days of productivity and suffer downtime while you fix what was damaged. The worst case scenario &em; your data is compromised and you have no idea if it is correct, much less what the hackers managed to copy and read. Did you expose usernames and passwords to the world? Did you happen to release the credit card information for thousands into the den of identity thieves? You’ll never really be able to know. It’s best to practice secure programming so you never need to ask yourself these questions.

With this in mind, let’s examine three different classes of secure programming "no-noes," storage risks, system risks, and exposure risks and discuss how we can prevent each of them. Server configuration and data transmission security are beyond the scope of this article, but the reader should be aware that they also play a major role in securing a web application.

Storage risks are those risks involved in the storing data and interacting with a database server or file system. The most widely known of these in the infamous SQL injection attack. SQL injection is when you allow the user to input data into a query, and instead of a value he adds his own SQL into the query. The easiest way to prevent this type of attack is to escape every user variable that could touch your queries. Luckily, PHP has several build in functions for handling this, such as mysql_escape_string(). Essentially, this works by escaping characters in a string that could conceivably be used to terminate your query and run a user specified query.

When should you escape user data? It all depends on who you talk to. Some programmers prefer to escape as soon as it enters the application, while others prefer to wait until just before it is placed into the query. Personally, I prefer to escape right before it is inserted into the query. I do this because I can always look at the code, see the database interaction, and see that the data was escaped before it was being used. I don’t need to search the entire source to make sure something was escaped.

The second storage risk we’ll talk about is storing passwords as plain text (hereafter referred to as clear text). I know you guys do it; I’ve seen too many open source applications and too many in-house applications to believe that it doesn’t go on. Simply put, there is never any reason to store a password in clear text. It doesn’t matter if you’re storing the password in a database or a flat file, always store passwords as a hash. You can accomplish this simply enough by using PHP’s md5() function to transform the password before you insert it into your storage medium. Since md5 is repeatable, you can validate a password by simply using

When should you transform the password to a hash? You should do it as soon as possible. Don’t let the password variable float around your application at all. As soon as you grab the password input, convert it into a hash. I prefer to do this by setting the password variable to its own hash, this avoids the chance of using the wrong variable in later code.

Next, let’s talk about the usernames and passwords your program needs in order to interact with other applications (like database servers). You should always separate these out into a different PHP file than the rest of your code, and reference them as constants or variables. This not only makes your code easier to maintain (if you need to change a password, you know exactly where to look), it the event that your source gets released, you know that the password isn’t in that file. While it’s certainly true that they could grab your password file, it does reduce the risk considerably.

Before we leave usernames behind, I want to touch on the concept of division of power. We’re not talking about the government in this case, but about database users. The database user accounts your program uses should have the minimum level of access they need in order to function correctly.

If your application only reads from a database, then the database account it uses should only have SELECT permission on that particular database, and no access to any other database.

To take this concept a step further, I prefer to create multiple database accounts for my web applications. Typically I create one account that only has INSERT permissions for the particular tables the software needs to write to, and a completely separate account that only has SELECT access. This makes sure that no INSERT queries are accidentally performed and mitigates the possible damage done by SQL injections.

Of course, multiple accounts work best when there’s a clear separation between those who can write to a database and those who can read it (such as a CMS). In theory, you could use multiple accounts in any application but you run into problems with the number of open connections to the database. This is simply something that should be considered as a possibility during the design phase of your software.

I’m a big advocate, as are most programmers, of breaking source code down into multiple files at every logical opportunity. However, I’ve noticed that a lot of PHP programmers have a nasty habit of naming PHP files they intend to use as libraries or other include types with the extension .inc, or .config, or some other non .php extension. This is a horrible idea because the server its running on might not be setup to parse these extensions as PHP files, so anyone loading the file would be exposing their source code (and potentially passwords, usernames, and other protected information) to the world. I prefer to prefix filenames myself, using inc_ or class_ when needed.

While we’re discussing included files, I would like to talk about to other security precautions. If you have a PHP file that you intend to use only as part of a larger PHP application, add this line to the beginning of the file (__FILE__, $_SERVER['PHP_SELF']).

This will cause the file to immediately terminate is someone tries to run it directly. A well written include or class file shouldn’t do anything when loaded on its own, but you can never be too careful &em; especially when a one line cut and paste can potentially save you so much heartache.

The other include-related item I’d like to talk about is the difference between include() and readfile(). Include will tell the server to parse the file as PHP, while readfile tells the server to output the file as straight text. You should never use include on a file that is publicly writable (for example, if you have an application that appends user submitted data to end in order to simulate a graffiti wall or guest book) or on a file that you don’t control (files on other servers, or that others can edit). A malicious user could easily inject his own PHP into your system, causing untold amounts of havoc. At the same time, you should never execute readfile on a file that ends in .php. On a misconfigured system, this runs the risk of exposing your source code to the world. To summarize, use readfile() on html, txt, and remote files. Use include on local files with php code you want to execute.

Now let’s talk about system risks. I think of system risks as those things related to the way code executes. The primary system risk in any application is invalid data. You can never valid data enough. As soon as user data enters the system, you should immediately verify it exists and that it is what you want it to be, if not your program should halt and prompt the user for better input.

When validating data, you should use the tightest filter possible. For example, if your program is expecting a percentage, you should not simply verify that they entered something. Your program should verify that it is numeric and between 0 and 100.

You should also validate at every level. Every time a function accepts input, verify that the data is what you expected it to be and react accordingly if the data is bad. This will make it more likely that you will catch bad data due a programming oversight, it also has the added advantage of catching logic errors in your software.

Next, I’d like to talk about eval(), exec(), and their ilk (shell_exec(),system(), passthru(), and pcntl-exec()). Visit their respective php pages to find out more about them, but in actuality there is very rarely any reason to use them. Eval will run any php code passed to it as a variable. This is inherently dangerous because you no longer have absolute control over what code is executed. If you must use eval(), don’t ever run it with a variable that has been derived from a user determined value, otherwise you run the risk of a hacker injecting his code. Exec() and the like pose similar threats, allowing your script to interact with the command line is a level of power you should rarely, if ever, need.

Finally, let’s talk about a couple of exposure risks. Usually, you don’t want to show your error messages to the world. For one, they freak people out. Secondly, they give hackers a wealth of information about potential bugs in your code. On production systems, always turn your error reporting off and use PHP’s errorlog() function instead.

The last risk we’ll talk about is using session IDs. Simply put, try not to ever send the session id to the user. Sessions aren’t secure, but if you transmit the session ID you run an even greater risk of someone other than the expected user to act as a "man in the middle" (to steal an analogy) and piggy-back off of the legitimate user’s session. An example of this would be using a session id to hijack someone’s shopping cart and change a delivery address, get credit card information, or do something even more malicious depending on the system.

We’ve discussed many security risks involved with programming in PHP, but they boil down to a few simple concepts.

* Never trust the user &em; don’t let them run code on your sever and always validate any data they send you.

* Don’t give the user, or your software, any level of access greater than the absolute minimum needed to successfully accomplish their tasks.

* Don’t tell the user more than they need to know &em; don’t let them see your code, the session id, or any error messages that you didn’t create specifically for them,.

If you have any questions, please feel free to email me at michael@mmccann.com or visit my website (http://www.MMcCann.com).

:: +/- :: Read more...

To Create Dynamic Pages Choose An Advance Programming Language Like PHP

by: Joanna Gadel


PHP is an open sourced server side scripting language and almost used in foremost operating systems like Linux, UNIX and also in Windows. PHP follows object oriented programming (OOPs), practical programming rules and nearly a combination of them. It uses command line interface, desktop applications thus it is know as the best traditional server side scripting language.

PHP programming (http://www.getaprogrammer.com.au/) supports most of the reputed database connections like Oracle, SQL, My SQL, and ODBC thus it is an easy choice for freelance programmers to build their dynamic pages with the help of PHP development. The latest version is also popular because it can be embedded HTML coding directly and can be carried by nearly all of the web servers.

PHP is a popular language because of its numerous features infused specifically to design websites or you can say to develop dynamic pages. PHP engine and the PHP coding can be used in every platform that increases flexibility of PHP language. Basically PHP is profitable for both programmers and designers, programmers who realizing its flexibility and tempo and web designers who worth its handiness and user-friendliness.

PHP language can develop giant business services like CRM solutions, community sites, chatting forums and E-Commerce shopping cart as well. Several pools of qualified web programmers (http://www.webprogrammers.com.au/) are using PHP development for organizing their goal, resource planning and fulfilling their client requirements.

Here are some few things which you can perform with PHP:

• Design HTML web forms.
• Superb Database usability to store records.
• Calculate visitors by sessions and cookies.
• You can use arrays as well.
• Play with files through file management system.
• Creating XML for large number of product list on E-Commerce

Serialization

Serialization is not needed for all kind of databases. In some particular databases like ODBC, MS SQL etc when you wish to pass a value without mentioning its type, it gets dumb. This problem is solved properly in the latest version of PHP. This is also an added advantage of PHP over all king of scripting languages.

Using PHP to Improve Design your website

PHP has many capabilities features designed specifically for use in Web sites, including the following:

1. Securing Your Website: PHP is designed to allow user level access to the file system, it's entirely possible to write a PHP script that will allow you to read system files such as password, modify your Ethernet connections, etc. thus this can provide a customer with an exclusive membership in the business.

2. Working with Web Forms: HTML form can be displayed by PHP and it is the best way to know more about the requirements of your customers and to gather note about their detailed benefits.

3. Communicate with Your Databases: When a persistent connection is requested, PHP checks if there's already an identical persistent connection and if it exists, it uses it. If it does not exist, it creates the link.

4. Customer Loyalty Functions: PHP allows content and applications to be generated and run server-side. This is highly advantageous to web users as they do not have to rely on their own system resources to generate or run content on their own systems. This allows for faster delivery of applications to the user and reduces errors and problems due to browser incompatibilities.

:: +/- :: Read more...

Friday, April 3, 2009

Graphic Design And What You Should Know Before You Start

Graphic, the magnetic word draws every human being and feel wonder about it. In early days people shown their thoughts through arts via paintings. Some of them delivered their inner thoughts through sculptures, and carvings. As time functions on artists start exposing portraits on special clothes, cardboards and in oil papers. But now people want something different. Scientific designs and other foundations create persons to think in different angle. Modern art and graphic designing are average methods among people.

by: John Davis


The creativeness has to be read through some media; the best way is graphic designing. One who designs his creativenesses is popularly loved as graphic designer. To bring a average man into the field of graphic design there are institutions and colleges. The ultimate aim in graphic design is to bring the called image into realism. Graphic designer are set to design graphic designs professionally as the importance of it increases day by day to meet out the anxiety of business advance. From ordinary video photography to film industry the importance of graphic design is felt very much. In film industry graphic designers are used in large numbers as to meet the film viewers.

We can see the various advertisements in television, internet, and magazine. The posture will be different from one another as to satisfy a viewer to bring them to their door steps. The dependence of better designs lies solely on the graphic designer. Hence a qualified and well designer is much appreciable in this industry. An art director or film director may think to bring extraordinary actions or settings in their film. It cannot be brought out through an actor but in graphic designing. A graphic designer can give life to the ideas of the director or others by using his creativity. A graphic designer should deliver his designs in an telling way to get good hold in the field. To bring life to anyone̢۪s thoughts and ambitions graphic design is very essential.

Computer literacy plays an important role to get and deliver a graphic designer̢۪s creativity. To deliver their profile every organization need a media. The newspaper, magazine, television and other media are used for that purpose. The main draw back is that these media can retain the delivered profiles for limited periods only but the web can retain the profile for a long time. Hence the thirsty of web sites goes on improving. To deliver a profile of a concern in its own way a good graphic designer is needed. The web developer and the graphic designer collectively work together or even the person knows both can very well design the required aspect in a challenged way. The field of graphic design is not limited but has no sure. In architecture, engineering, navigation, machine designing, research, tool designing, and vehicle manufacture and in all other fields the roll of graphic designer is very essential.

A manufacturer has to feel confident over a new product before marketing. In olden days a manufacturer has to create so many try products for display in marketplace and was expensive. Every time a change is needed, he has to do the job fresh. By virtue of graphics so many designs can be made in computer and can be exposed in the required model and angle. Graphic designer can bring wonders in the field of graphic.

:: +/- :: Read more...

Design contest and Logo design contest is great feature

Introduction

There are many international communities for designers. Some of them are just beginners while others are highly skilled graphic artists. The community is formed mainly around design contests with prizes ranging from $150 to $500+. These contests, called “guaranteed contests”, are only available to designers who’ve shown that they possess a certain level of design skill as well as a reasonable amount of commitment to forums

Author: astada.com

What’s in it for designers? Apart from earning some cash, participation in contests allows designers to advance their design abilities and build their portfolio all while interacting with real clients and getting feedback on their work.

Why start a contest? Most of clients will get a better deal from just one of designers than they would from anyone that they could privately contract for the project. In addition, consider the fact that you’ll have not just one, but multiple designers working on your contest and that this benefit comes without loss of design quality.

Concept is quite simple: Through website, the client (a.k.a. contest holder) submits his/her project and deposits the prize amount being offered for the work. The requirement to deposit the full prize amount is crucial. After the project has been submitted, Post it as a contest in a particular section of forums. The contest is, in fact, a regular forum thread, which refer to as a "contest thread". Within the contest thread site include a description of the company, the project details, the deadline, and the prize amount being offered as well as any additional information that the contest holder may provide. After the contest thread has been created, the competition officially begins with designers submitting their entries via replies to the thread.

Design Contest is a community shaped by the joint efforts of talented designers and contest holders. By hosting a design contest, contest holders are able to choose from a variety of great designs created by talented, professional designers. Designers compete for the prize offered, forcing them to push the limits and create innovative new designs.

It's fair to say that design contests have completely transformed our business. Instead of laboring over a design and doing a mediocre job, we get awesome design work that we can bring alive for our clients. Higher quality, a shorter turnaround on jobs, and greater profits -- hmm ... not much to argue with there!

Have you ever wondered, though, why some contests get filled with great submissions in a short amount of time, while others attract only a handful of entries that are generally of lower quality? You know the ones I'm talking about -- the project brief is only a couple of lines long, it includes no artwork, and there's no real feedback from the contest holder.

Some Tips for Great Results

1. Be Creative

Web design contest is a busy place, so getting creative with your contest will help you get more eyeballs to your project. More eyeballs mean more entries, and that means better results. A catchy title or some other fun twist is all it takes to attract designers to your contest.

A word of caution: you'll find that you need to be very committed to holding such a short contest, especially when it comes to provide feedback. Respond to each design as soon as possible so that designers have the time to make any necessary changes for you.

2. Money Talks

There's no denying the lure of a fat prize! A large prize (more than the basic prize outlined in the contest guidelines) will attract the best designers, and they'll work harder to give you what you need.

3. Communicate Often.

Are your clients taking their time deciding which design they like the best? Post a comment to your contest. Not getting what you want in the contest? Post a comment to refocus the contest. It's up to you, the contest holder, to steer the designers towards the end goal: a winning design!

4. Pay up.

As soon as you've made your decision, declare a winner and make arrangements to pay your designer. Nobody should have to wait for their money.

Remember that you're paying for the concept as well as the artwork when making a decision -- consequently, the design that you choose might still need some tweaking. This shouldn't prevent you from choosing a winner.

5. Guard Your Reputation!

Your reputation is gold -- the more contests you post, the more designers will get to know you and trust you. I've seen what happens when a contest holder loses trust, and it's ugly. Worse yet, you have the potential for getting yourself banned if you don't follow the contest guidelines. Read the guidelines carefully before you launch a contest.

6. Get Personal

Take a look at other contests, find designers who do great work and whose style you like, and invite them to join your contest. A personal invitation is not just a way to get better results; it's very flattering to the designer that you took the time to personally invite them to join your contest.

http://www.astada.com/

:: +/- :: Read more...

How To Create An Attractive, User Friendly Web Site

There are few things more important on the web than "usability," because the Internet is an interactive space and not a one-way street. You want to improve the visitor's experience, make choices simple, be pleasing to the eye and not overuse the flashy add-on du jour. In addition, your site will tell visitors a lot about your company just from the way it looks, loads and functions, before they even read a single word. The importance of creating an attractive, user-friendly website simply cannot be overstated.

Author: Gary Klingsheim


For reasons that are almost too numerous to list - marketing, sales, psychology, trust building, perceived professionalism, etc. - the way your website is experienced by users should be foremost in your mind. The following eight important reminders will get you going in the right direction, but you're the one who knows your customers (or should) so the finer points of personalization and "character" are up to you.

1. The importance of focus: You need to think like your visitors do. This is key to your site's success. Your customers simply want to find what they need, make the payment and get back to real life (jobs, family, tennis, whatever). If you can make their lives a bit simpler and easier, they'll reward you for it. If, on the other hand, you make their lives more complicated, they'll "surf away" and stay away.

2. The importance of understanding the medium: You are not creating a slideshow, a YouTube video, a TV commercial or a PowerPoint presentation. You are building a website for commercial purposes. You need to provide easy, simple, clear navigation on every page, since you never know how people will link to your site and what they will see first. Visitors to your site, no matter how hard you try, will not always go where you would like them to go, or do what you want them to do. Remember that, and give them a few tools to move around the site, like a sitemap and/or internal search engine.

3. The importance of non-aggression: Most Internet users, especially experience ones, like to stay in control of their movements. Research suggest that your first-time visitors are "hunting," not "deciding," so do not make unnecessary demands for clicking, scrolling, resizing windows or anything else. Neither should you put up any roadblocks that will slow down their hunting, like time-consuming "Flash and splash screens."

4. The importance of reduced load times: Tied into #3 is the notion of your site's real and perceived "speed." Carefully consider each page element and make each one earn its place, based on functionality, not "wow" value. Keep graphic file sizes small and do whatever else you need to do to have a fast-loading, easy to use site.

5. The importance of customer needs: Define all the kinds of people you expect to visit your site and consider what they'll be looking for. Ensure that the navigation design helps the greatest number of people to find the most popular items in the least amount of time. Don't "bury" essential information so that visitors have to dig down two or three levels to find it.

6. The importance of simplicity: Flash is powerful tool, especially helpful in demonstrating things that are difficult to describe in words, but it is so pathetically overused that it has turned people off. It can be a huge distraction, too, since animation and bright (moving) colors are exceptionally hard for our eyes to ignore even when our brains want to.

7. The importance of proportionality: Although Javascript is used on some sites to display all the links to the other pages, there is really no reason to do this when simple, straightforward, low-overhead HTML works fine. When you employ a "new, improved" or more complex means of doing something - anything - you have to take into account browser compatibilities, possible bugs and user resistance. Don't use more technology than it takes to accomplish something cleanly, clearly and consistently.

8. The importance of avoiding surprises. You should use the expected, usual and standard placements for expected, usual and standard site elements. Site navigation is not something you want to be too creative with, as it needs to be immediately understandable and usable. Such consistency across the World Wide Web is actually a good thing, as it tends to make people's lives a bit easier when they feel they are in "familiar territory." Generally speaking, your various website components should look and work as people think they're supposed to.

To borrow from Oscar Wilde, consider also the importance of being earnest. More specifically, you want to be seen as being earnest, meaning that you want every visitor to understand, implicitly if possible but explicitly if necessary, that you are doing everything possible to make their site visit a simple, straightforward experience. "No muss, no fuss" is a great slogan to remember.

Therefore, rather than get caught up in profound design metaphors or using your bandwidth to display every possible website trick and/or treat, you should focus on making your site into a solution for your customers. Make it easy for them to do what they need to do and then get on with their lives. Perhaps the most important thing you can give a site visitor, then, is respect and appreciation.

:: +/- :: Read more...

Get Money on Internet

Get Paypal Account, click link below :

Sign up for PayPal and start accepting credit card payments instantly.


Get AlertPay Account, click link below :




Earn Money with your Files, click link below :

Make Money from your Website or Blog, click link below :

Promote your Site set:

Get Free Domain, click link below:

Free Domain

Earn Cash Within Minutes! It's Free to Join!


Join Vinefire!





Get Free Webhosting :

Free Website Hosting

Free cPanel Web Hosting with PHP5/Mysql - no advertising!
Register now: Join

Twitter Advertising



The Real PTC Payout












Pay4Surf - Paying Manual Traffic Exchange!














The adf referral program is a great way to spread the word of this great service and to earn even more money with your short links, or here :Linkbee

Earn even more money with your short links, Click here :



Join short links

Adsense from Indonesia :

Adsense Indonesia

Web Hosting & Domain : Reg. Here





The best internet investment, Earn a XXX% daily profit! Easy. Safe. No risk.