Saturday, September 27, 2008

Prevent accidental window closing: alert onbeforeUnLoad

Today, I'm going to show you how to stop your visitor to close window of your site, using JavaScript.

It's useful when they have unfinished processes, or unsaved data, in which they whether accidentally or deliberately clicked on the close button of your page.

It's also useful for your marketing strategy, like one-time offer, final discounts, and so on.

Simple. First, use this following function. Then I'll show you with 3 situations for example.

<script>
var askFirst = false;
function preventerOn() {
askFirst = true;
}

function preventerOff() {
askFirst = false;
}
window.onbeforeunload = sureUnload;
function sureUnload() {
if (askFirst)
return "Are you sure you want to exit this page?";
}
</script>


Situation 1, if you want to prevent window closing from the beginning, you may want to use the body tag, like this:

<body onload="return preventerOn();">


Situation 2, if you want to prevent window closing when your visitor enter something in a form, use it like this:

<input type="text" name="input1" onchange="return preventerOn();">


Situation 3, if you want to prevent window closing before reached an amount of time (i.e: 20 seconds), you may add this one to the script above:

function setTimer() {
preventerOn();
setTimeout("clear();",20000); // 1000 is for 1 second, so 20000 is for 20 seconds
}
function clear() {
preventerOff();
}


You may need to change in the body tag, from this:

<body onload="return preventerOn();">


to this:

<body onload="return setTimer();">


That's all.

If you have any questions regarding this, please feel free and don't hesitate to ask me through the comment form.

Thank you.

Monday, September 22, 2008

More elaboration on 'signed-by' and 'mailed-by'

A friend of mine, Tim recently asked me about the mail function in PHP programming which I wrote on how to edit or remove the default 'signed-by' or 'mailed-by' label during the sending activity.

His question is, where to put the code? As far as I'm concerned, I was not talking about the code, or even code positioning.

I'm talking about a particular technique that we would use in order to edit or to remove the distracting label when we use mail() function in our code (programming).

The real situation yet to be explained
The default value for the labels is usually the domain name of the server hosting company we run from.

In example, let say you use a web hosting from the well-known BlueHost company. Then you planned to send mass email to your friends about your new site, without revealing your friends' details among them.

So all you need to do is having your list in a database, and then use loop function to send mail to them, one by one, using the php mail() function. Perhaps, you'll use a fake email, or your self-hosted email, or even your true email from Google mail or Yahoo! mail.

Unfortunately, when using this method, recipients will see the header (if they checked on it) of the email, stated that the mail you sent was mailed by (in example) mailserver#.bluehost.com.

This is what we don't like to see. It'll tell the recipients what hosting service we are using.

So, in order to remove or edit the default value, we need to do those things that I explained earlier. To see the post, click here.

I hope my friend Tim will get what I was actually saying. What say you?

Friday, September 19, 2008

Edit or remove 'signed-by' or 'mailed-by'

Recently I was trying to remove the labels 'signed-by' or 'mailed-by' which displayed the server name of my web hosting company when I do mailing activities from PHP script.

I was actually wanted to have my domain or perhaps my 'fake' domain address to be there. I don't want to display the web hosting company.

The labels are like distracting me as a mailer, because I don't really need that to be displayed. They're like disturbing my privacy.

After having some research, I finally found the answer. There's actually five arguments in the mail() function, instead of just four like this:

mail($mailto,$subject,$message,$header);
The fifth argument is the answer to my question. I believe some of you might get in the same situation.

So lets get straight to the point. Choose one of these below:
  1. You want your domain to be displayed; or
  2. You want nothing to be displayed.
You can't have them to display other than that. I.e: You want it to display 'signed-by: google.com' or 'mailed-by: yahoo.com'. No you can't have it. Just choose one of the stated above.

If you want the first choice, do this:
  1. Create an email address from your domain, or take one you've had, like admin@yourdomain.com.
  2. Set your code like this:
    mail($mailto,$subject,$message,$header,'-f admin@yourdomain.com');
  3. There's no number 3, you're done!
If you want the second choice, you only have to do the second one in the first choice. You may change the 'admin@yourdomain.com' to any email you'd like, i.e: myself@yahoo.com.

Easy, huh?

Wednesday, September 17, 2008

I'll be continuing from now on...

I've paused my blogging activity for such a long period. I think I have to go back to work, from now on.


Recently, I signed up for EntreCard. I wanted to see how exactly this program works. If I find this social networking tool helping me much i building my personal ranking, I would stay. Otherwise, I'm moving away. 

So let's give it some time. Maybe I should try this for about a month or two. What say you?