This is a WAY open-ended question. I feel that if you did some research you’d find LOTS of answers. Here’s how I would go about it.
Install or modify your code to use a members only plugin. Lock all the Non-Member pages. I’m confused on what you men by check a banner, but if the banner is just going to a registration page then block that page unless a query string something like example.net/register?banner=true has been set. If they go to example.net/register it would return false.
I’m not sure I answer your question like I said it’s super open-ended. That’s how I would do it. (if I understand the question)
EDIT:
You’ll need to use a PHP $_SESSION or even a $_COOKIE to see if the user clicked the banner. I would do something like this.
Make a category “premium” and assign all preminum page to that category.
Add this to your functions.php in your theme
add_action( 'template_redirect', 'premium_redirect' );
function premium_redirect(){
//see if post is in category of premium
if(in_category('premium')){
//see if the banner variable is set
$banner_check =$_GET['banner'];
//set the session (or cookie)
if($banner_check == 'true'){$_SESSION['banner'] = 'true';}
///see if the $banner and the $_SESSION is set if not take them to the banner page
if($_SESSION['banner'] != 'true'){
wp_redirect('http://example.net/bannerpage');
}
return;
} //end cat check
return;
}
then have your banner link to example.net/premiumpage?banner=true
I haven’t tested this but I us similar approaches all the time. You may also need to use a custom post type for pages instead of in_category see http://codex.wordpress.org/Conditional_Tags#A_Post_Type