PHPとJavascript、jQueryで画面遷移なしでログイン処理等の処理ができます。
この方法を応用すると、結構なんでも出来ます。

ログイン処理、メール送信処理、投稿処理など、PHPだけで作ると画面遷移が必ず伴う処理が画面遷移なしで実現できます。
jQueryの非同期で処理したい時等に便利です。

仕組みを説明すると、buttonをクリック。
jQueryでidの値とpassの値を取得し、ajaxでphpプログラムへpostし結果を返す。
と簡単な仕組みです!

まずは、html側のフォームのサンプルです。
[html]

<script type="text/javascript" src="./js/jquery.js"></script>

<p>ログインID</p>
<input type="text" id="login_id" value="" />
<p>パスワード</p>
<input type="password" id="login_pass" value="" />
<p><input type="button" id="btn_login" value="ログイン" /></p>
[/html]

ちょっとPHPのプログラムが分かる人ならあれ?と思うかもしれませんが、

タグがありません。
別に、POSTする訳じゃないのでいらないんです!

このbuttonをクリックすると、作動するjQueryの方のJavascriptはこちらです。
[php]
// 他のjavascriptとバッティングしないように注意してください。

$(document).ready(function(e) {
// 送信ボタンを押した時に作動する処理
$("#btn_login").bind("click",function(){
// フォームの値を取得
var login_id = $("#login_id").val();
var login_pass = $("#login_pass").val();
// 簡単なバリデーション
if(login_id == ”){
alert("入力に不備があります。");
} else if(login_pass == ”){
alert("入力に不備があります。");
} else {
// ログイン処理
doLoginProccess(login_id, login_pass);
}
});
});

function doLoginProccess(_login_id,_login_pass){
$.ajax({
type:"POST",
url:"ログインのチェックのphpプログラムのURL",
data:"login_id="+_login_id+"&login_pass="+_login_pass,
success:function(response){
// ログイン処理の結果を返す
}
});
}

[/php]

最後の結果を判定しやすい形でphp側から返せば受け取ったjavascriptがわで分岐させメッセージを表示できます。
一度作ったらかなり便利で、いろんな所で使えそうなので、結構おすすめですよ!