Added Tell-A-Friend
v2.2
-> Added version list.
-> Added ability to only allow purchasing customers to be affiliates.
-> Added giveaway product functionality.
-> Added affiliate emailing.
-> Added a few bug fixes.
v2.3
-> Added code for parsing PHP in templates.
-> Updated code that decides who gets OTO sale.
-> Major Security update tracks purchases by IP and only allows
Completed payments to be redirected to the download page.
-> Added ability to only allow OTO customers to get commissions on the OTO.
-> Added ability to disable download emails from automatically being sent.
-> Added support for all PayPal currencies.
-> BUG FIX: Corrected 48 hour extension of download link to add 48 hours to THIS moment.
-> Added script configure util (config.php)
v2.4
-> BUG FIX: When OTO commission is set to zero, affiliate always gets the commission.
-> BUG FIX: Affiliate cookie now cleared if only customers are allowed to be affiliates.
-> BUG FIX: Removed case-sensitive referrer domain comparison for TAF.
-> IPN script now prevents people from paying less than stated price for products.
-> IPN script now prevents people from purchasing using different emails from the same domains.
-> Added admin section for viewing fraudulent transactions.
-> Added version number to ipn.php, config.php and settings.php
-> Added back-end search features for sales records.
-> Added download security.
v2.5
-> BUG FIX: Sometimes you could still purchase through your own link even if you weren't a customer and $sys_purchasers_only was true.
-> BUG FIX: If customer clicked OTO purchase link but did not purchase, their download link would be to the OTO.
-> BUG FIX: config.php file wasn't writing out the currency value to settings.php
-> BUG FIX: to prevent warning messages, a blank ipn.txt file is created automatically if it doesn't exist.
-> SECURITY: to prevent directory listing of templates folder (should someone discover its name), an index.html file is created there automatically.
-> Removed need for cookies throughout purchase/download process to prevent expired download issues.
v2.6
-> Added ability to alternate commissions on primary product as well.
-> Added version info and item/oto commission info on "Please Wait" order screen.
-> SECURITY: Added additional security for admin back-end to prevent cookie spoofing.
-> BUG FIX: Added folder location into cookie path for multiple products running on the same domain.
*/
$sys_version = 2.6;
include("settings.php");
function searchKeywords($url){
$parts = parse_url($url);
$host = str_replace("www.", "", $parts["host"]);
$keywords = "";
parse_str($parts["query"], $vars);
if(strpos(" $host", "google")){
$keywords = urldecode($vars["q"]);
}
elseif(strpos(" $host", "yahoo")){
$keywords = urldecode($vars["p"]);
}
elseif(strpos(" $host", "live")){
$keywords = urldecode($vars["q"]);
}
elseif($vars["keywords"]){
$keywords = urldecode($vars["keywords"]);
}
elseif($vars["query"]){
$keywords = urldecode($vars["query"]);
}
else{
$keywords = urldecode($vars["q"]);
}
return $keywords;
}
function evalPHP($template){
# Make all settings.php variables accessible to template PHP code.
global $sys_admin_username, $sys_admin_password, $sys_domain, $sys_support_address,
$sys_script_folder, $sys_template_folder, $sys_default_email, $sys_item_name,
$sys_item_number, $sys_item_cost, $sys_oto, $sys_oto_name, $sys_oto_number,
$sys_oto_cost, $sys_oto_percent, $sys_item_cancel_url, $sys_expire_hours,
$sys_blocked, $sys_secure_dl, $sys_tell_subject, $sys_tell_body,
$sys_purchasers_only, $sys_purchasers_override, $sys_giveaway_product,
$sys_oto_purchasers_only, $sys_oto_purchasers_override;
# Eval all php code in a template and plug result into output.
$output = "";
$last = 0;
$i = strpos($template, "", $i);
$phpcode = trim(str_replace(array(""), "", substr($template, $i, $i2 - $i)));
$val = eval($phpcode);
$output .= $val;
$last = $i2 + 3;
$i = strpos($template, "", $i);
$phpcode = trim(str_replace(array("=", "?>"), "", substr($output, $i, $i2 - $i)));
$val = eval("return $phpcode;");
$output2 .= $val;
$last = $i2 + 3;
$i = strpos($output, "=", $i2);
}
$output2 .= substr($output, $last, strlen($output) - $last);
return $output2;
}
function showTemplate($filename){
include($filename);
return;
$output = "";
$fh = @fopen($filename, "r");
while($s = fgets($fh)){
$output .= $s;
}
@fclose($fh);
echo evalPHP($output);
}
function getIPSalesRecord($oto = false){
global $sys_template_folder, $sys_oto_number;
$ip = $_SERVER["REMOTE_ADDR"];
$sales = @file($sys_template_folder . "ipn.txt");
$output = "";
foreach($sales as $sale){
$sale = explode("|", str_replace(array("\r", "\n"), "", $sale));
if($sale[14]==$ip){
$valid = true;
if($oto && $sale[2]!=$sys_oto_number){
$output = "";
$valid = false;
}
if($valid){
# Make sure sale is within valid timeframe.
if(time()<$sale[9]){
$output = $sale;
break;
}
else{
# Download has expired.
$output = "";
}
}
}
}
return $output;
}
function getOTOSalesRecord($affemail){
global $sys_template_folder, $sys_oto_number;
$sales = @file($sys_template_folder . "ipn.txt");
$output = "";
foreach($sales as $sale){
$sale = explode("|", str_replace(array("\r", "\n"), "", $sale));
if($sale[4]==$affemail){
$valid = true;
if($sale[2]!=$sys_oto_number){
$output = "";
$valid = false;
}
if($valid){
$output = $sale;
break;
}
}
}
return $output;
}
function sys_download_url($oto){
$md5 = uniqid("");
return "index.php?action=dlid&oto=$oto&pid=$md5";
}
function getPaymentEmail($itemnumber, $percent){
global $sys_template_folder, $sys_default_email;
# Use sales data to figure out who should get next OTO sale.
$sales = @file($sys_template_folder . "ipn.txt");
$afftotal = 0;
$affsales = 0;
foreach($sales as $sale){
$sale = explode("|", $sale);
if($sale[2] == $itemnumber && strtolower($sale[13]) == strtolower(urldecode($_COOKIE["aff"]))){
# Sale referred by affiliate.
$afftotal++;
if(strtolower($sale[3]) == strtolower(urldecode($_COOKIE["aff"]))){
# Affiliate got the sale.
$affsales++;
}
}
}
if($afftotal > 0){
$affper = ($affsales / $afftotal)*100;
}
else{
$affper = 0;
}
if($percent > 0 && $affper<=$percent){
# Give OTO to affiliate.
$email = urldecode($_COOKIE["aff"]);
}
else{
# Give OTO to vendor.
$email = $sys_default_email;
}
return $email;
}
$action = $_REQUEST["action"];
# Set privacy policy for IE6/WinXP users.
# If you don't do this, a lot of IE browsers wont accept the cookie.
header('P3P: CP="IDC DSP COR CURa ADMa OUR IND PHY ONL COM STA"');
if(!file_exists($sys_template_folder . "ipn.txt")){
# IPN file doesn't exist. Create a blank one.
$fh = fopen($sys_template_folder . "ipn.txt", "w+");
fwrite($fh, "");
fclose($fh);
}
if(!file_exists($sys_template_folder . "index.html")){
# index.html file doesn't exist in templates folder. Create a blank one.
$fh = fopen($sys_template_folder . "index.html", "w+");
fwrite($fh, "");
fclose($fh);
}
if(substr($action, 0, 5)=="admin" && $action != "admin" && $action != "adminlogin" && !$_COOKIE["admin"]){
# Not logged in. Redirect to login.
header("Location: $_SERVER[PHP_SELF]?action=admin");
exit;
}
# Redirectin case PayPal goofs and fails to do so.
if(!isset($_COOKIE["giveaway"]) && !isset($_GET["fdl"]) && ($action == "squeeze"| $action == "downloadoto") && !isset($_GET["e"])){
# Check for customer IP address in IPN file.
if($action=="downloadoto"){
$oto = true;
}
else{
$oto = false;
}
$sale = getIPSalesRecord($oto);
if(is_array($sale)){
# Purchase record found.
if($action=="downloadoto"){
$url = "index.php?action=download&id=$sale[0]&fdl=1";
}
elseif($action=="squeeze"|$action=="download"){
$url = "index.php?action=squeeze&id=$sale[0]&fdl=1";
}
else{
# Not sure what's up. Send to sales letter.
$url = "index.php";
}
# Send to appropriate page.
header("Location: $url");
}
elseif($_GET["tries"]<11){
# Give one minute for PayPal to post IPN record before giving up and showing an error.
if(!isset($_GET["tries"])){
$tries = 1;
}
else{
$tries = $_GET["tries"] + 1;
}
$seconds = 60 - ($tries * 5);
echo "
Waiting for PayPal confirmation of purchase, please wait...
$seconds seconds left...
(This page will refresh every 5 seconds until PayPal provides confirmation.)
";
}
else{
# IP not found in records. Show error message.
if(substr($sys_support_address, 0, 7)=="http://"){
$eaddress = $sys_support_address;
}
else{
$eaddress = "mailto:$sys_support_address";
}
echo "
Purchase record not found.
We apologize for the inconvenience, but there was a problem confirming your purchase. Please contact our technical
support staff for your download link at:
";
}
exit;
}
if(isset($_GET["e"])){
# Make sure this account hasn't been blocked.
if(!strpos(" $sys_blocked", $_GET["e"])){
# Set cookie and redirect visitor if it's through an affiliate link.
if($sys_purchasers_only){
if(strpos(strtolower(" $sys_purchasers_override"), strtolower($_GET["e"]))){
# Affiliate is in over-ride list. Let them sell.
$sellit = true;
}
else{
# Verify that this paypal email address is in our ipn.txt
$sellit = false;
$sales = @file($sys_template_folder . "ipn.txt");
foreach($sales as $sale){
$sale = explode("|", $sale);
if(strtolower($sale[4])==strtolower($_GET["e"])){
# They're a customer.
$sellit = true;
break;
}
}
}
}
else{
# Anybody can sell the product.
$sellit = true;
}
if($sellit){
setcookie("aff", $_GET["e"], time()+31536000, $sys_script_folder, "." . $sys_domain);
if($_GET["taf"]){
# This was a tell-a-friend referral.
header("Location: $sys_script_folder?taf=1");
}
else{
header("Location: $sys_script_folder");
}
}
else{
# Clear affiliate cookie.
setcookie("aff", $sys_default_email, time()+31536000, $sys_script_folder, "." . $sys_domain);
# Show a message indicating that only people who bought can sell.
showTemplate($sys_template_folder . "customersonly.html");
}
exit;
}
else{
# Clear affiliate cookie.
setcookie("aff", $sys_default_email, time()+31536000, $sys_script_folder, "." . $sys_domain);
# Inform visitor that this customers link has been blocked
# for fradulent activity.
$filename = $sys_template_folder . "fraud.html";
showTemplate($filename);
exit;
}
}
# Keep paypal email on hand at all times.
if(isset($_COOKIE["aff"])){
$email = $_COOKIE["aff"];
}
else{
$email = $sys_default_email;
}
# =============================================================================
# NO ACTION = SHOW SALES LETTER
# =============================================================================
if($action==""){
# Save referrer.
if(isset($_GET["taf"])){
setcookie("ref", "TELL-A-FRIEND", time()+31536000, $sys_script_folder, "." . $sys_domain);
}
else{
setcookie("ref", $_SERVER["HTTP_REFERER"], time()+31536000, $sys_script_folder, "." . $sys_domain);
}
# Show sales letter.
$filename = $sys_template_folder . "salesletter.html";
}
# =============================================================================
# GIVEAWAY = HANDLE GIVE-AWAY PRODUCT
# =============================================================================
elseif($action=="giveaway"){
if($sys_giveaway_product){
# Set giveaway cookie.
setcookie("giveaway", true, time()+31536000, $sys_script_folder, "." . $sys_domain);
# Send them on.
header("Location: index.php?action=squeeze&giveaway=1");
exit;
}
}
# =============================================================================
# ORDER = HANDLE ORDER VIA PAYPAL
# =============================================================================
elseif($action=="order"){
# An order. Great! :)
if(!$sys_currency){
# Default to USD.
$sys_currency = "USD";
}
# Send them through the order process.
if(isset($_GET["oto"])){
# Buying OTO.
if(!isset($_COOKIE["aff"])){
# No affiliate. Use primary email address.
$email = $sys_default_email;
}
else{
$checksale = true;
if($sys_oto_purchasers_only){
$checksale = false;
# Restrict OTO commissions to OTO purchasers only.
$sale = getOTOSalesRecord(urldecode($_COOKIE["aff"]));
if(is_array($sale)){
# They are an OTO customer.
$checksale = true;
}
}
if($checksale){
$email = getPaymentEmail($sys_oto_number, $sys_oto_percent);
}
else{
# Send payment to vendor.
$email = $sys_default_email;
}
}
$item_name = $sys_oto_name;
$item_number = $sys_oto_number;
$item_cost = $sys_oto_cost;
$item_download_url = "http://$sys_domain" . $sys_script_folder . "?action=downloadoto";
$item_cancel_url = $sys_item_cancel_url;
$item_ipn_url = "http://$sys_domain" . $sys_script_folder . "ipn.php";
}
else{
# Regular purchase.
if(!isset($sys_item_percent)){
# 100% commission is the default.
$sys_item_percent = 100;
}
if($sys_item_percent < 100){
$email = getPaymentEmail($sys_item_number, $sys_item_percent);
}
$item_name = $sys_item_name;
$item_number = $sys_item_number;
$item_cost = $sys_item_cost;
$item_download_url = "http://$sys_domain" . $sys_script_folder . "?action=squeeze";
$item_cancel_url = $sys_item_cancel_url;
$item_ipn_url = "http://$sys_domain" . $sys_script_folder . "ipn.php";
}
# Get customer IP address.
$ip = $_SERVER["REMOTE_ADDR"];
# Set affiliate email for display.
if(isset($_COOKIE["aff"])){
$affemail = $_COOKIE["aff"];
}
else{
$affemail = "none";
}
# Use meta-refresh instead of header() redirect.
# header() seems to cause session issues with PayPal.
echo "
Please wait...
You will be redirected to the PayPal checkout in 5 seconds.
Remember to click RETURN TO MERCHANT after checkout or you will not receive your download.
[affiliate = $affemail]
";
exit;
}
# =============================================================================
# SQUEEZE/DOWNLOAD WITH ID = HANDLE SQUEEZE/DOWNLOAD PAGE
# =============================================================================
elseif(($action == "squeeze" | $action=="download") && isset($_REQUEST["id"])){
# Check that: 1) ID is valid and 2) download has not timed out.
$id = $_REQUEST["id"];
$fh = @fopen($sys_template_folder . "ipn.txt", "r");
$invalid = true;
$records = array();
$changes = false;
while($rec = @fgets($fh)){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
$record = explode("|", $rec);
if($record[0]==$id){
$invalid = false;
# Valid ID. Check timeout.
if(time()<=$record[9]){
# Still active. Show download.
if($record[2]==$sys_oto_number){
# One-time offer download. Set cookie and show download.
$filename = $sys_template_folder . "downloadoto.html";
}
else{
# Already squeezed, show download page.
if($action=="squeeze"){
$filename = $sys_template_folder . "squeeze.html";
}
else{
$filename = $sys_template_folder . "download.html";
}
}
}
else{
# Expired.
$filename = $sys_template_folder . "downloadexpired.html";
}
$rec = "";
for($i=0;$i0){
# Replace message vars.
$subject = str_replace("[SENDER]", $sendername, $sys_tell_subject);
$subject = str_replace("[PAYPAL]", $senderpaypal, $subject);
$body = str_replace("[SENDER]", $sendername, $sys_tell_body);
$body = str_replace("[PAYPAL]", $senderpaypal, $body);
$headers = "From: $sendername<$senderpaypal>
X-Sender: $sendername<$senderpaypal>
X-Mailer: PHP " . phpversion() . "
X-Priority: 3
Return-Path: $sendername<$senderpaypal>
Reply-To: $sendername<$senderpaypal>";
# Read number of tell-a-friend mails sent to date.
$tafcount = @file_get_contents($sys_template_folder . "tellafriend.txt");
if(!$tafcount){
$tafcount = 0;
}
# Send the message.
foreach($emails as $email){
if($email){
@mail($email, $subject, $body, $headers);
$tafcount++;
}
}
# Write new count.
$fh = @fopen($sys_template_folder . "tellafriend.txt", "w+");
@fwrite($fh, $tafcount);
@fclose($fh);
# Thanks!
echo "Thanks! A message has been sent to the people you entered into the form.";
exit;
}
else{
# Mail can only be sent from this domain.
echo "Mail can only be sent from $sys_domain.";
exit;
}
}
else{
echo "Your name and PayPal email address are required.";
exit;
}
}
# =============================================================================
# REMOVE = REMOVE AFFILIATE FROM EMAIL LIST
# =============================================================================
elseif($action=="remove"){
# Remove affiliate from email list.
if($_REQUEST["email"]){
$fh = @fopen($sys_template_folder . "unsubs.txt", "a+");
@fwrite($fh, $_REQUEST["email"] . "\n");
@fclose($fh);
echo "
You will no longer receive email from $sys_item_name.
";
exit;
}
}
# =============================================================================
# ALL OTHER PURCHASE-REQUIRED ACTIONS
# =============================================================================
else{
# All other actions require a purchase (unless it was a giveaway).
# First verify that person actually purchased.
if($action=="downloadoto"){
$sale = getIPSalesRecord(true);
}
else{
if($sys_giveaway_product && isset($_COOKIE["giveaway"])){
$sale = array();
}
else{
$sale = getIPSalesRecord(false);
}
}
if(is_array($sale)){
if($action=="oto"){
# Show oto page.
$filename = $sys_template_folder . "oto.html";
}
elseif($action=="squeeze"){
# Show name squeeze page.
$filename = $sys_template_folder . "squeeze.html";
}
elseif($action=="download"){
if($sys_oto && !isset($_GET["dl"])){
# Show OTO page.
$filename = $sys_template_folder . "oto.html";
}
else{
# Show download page.
$filename = $sys_template_folder . "download.html";
}
}
elseif($action=="downloadoto"){
# Show OTO download page.
$filename = $sys_template_folder . "downloadoto.html";
}
else{
# Invalid action. Show expired page.
$filename = $sys_template_folder . "downloadexpired.html";
}
}
else{
# User not found in sales records. Show expired page.
$filename = $sys_template_folder . "downloadexpired.html";
}
}
# =============================================================================
# ADMIN BACK-END FUNCTIONS
# =============================================================================
if($action=="admin"){
# Get username/password for admin area.
echo "
";
exit;
}
elseif($action=="adminlogin"){
# Verify admin username/password.
if($_POST["username"] == $sys_admin_username && $_POST["password"] == $sys_admin_password){
# Valid. Cookie and redirect.
$uniq = uniqid("");
setcookie("admin", true);
setcookie("uniq", $uniq);
$fh = fopen($sys_template_folder . "uniq.txt", "w+");
fwrite($fh, $uniq);
fclose($fh);
header("Location: $_SERVER[PHP_SELF]?action=adminmenu");
exit;
}
else{
echo "Invalid username or password.";
exit;
}
}
if($_COOKIE["admin"]){
$uniq = file_get_contents($sys_template_folder . "uniq.txt");
if($_COOKIE["uniq"] != $uniq){
# Somebody's trying to hack.
setcookie("admin", "", time() - 3600);
header("Location: $_SERVER[PHP_SELF]?action=admin");
exit;
}
$adminheader = "Admin Panel
$7 Secrets Scripts v$sys_version
";
$adminfooter = "For an alternate route to Journal of Emerging finance market.There are affordable cars, and then there are cars that offer thrilling performance. Rarely do the two ever converge, but Japanese automake mazada.new impreza 2008 Impreza Photos | Subaru News, Articles, Road Tests, Test Drives, Comparisons, Concepts.manhattan beach toyota Los Angeles Toyota Dealer, is a New & Pre-Owned Toyota dealership, with OEM Toyota parts and professional Toyota service.fashions like you need it: make fashion trends work for you, get fashion on a budget, dress for your body and look great for special occasions.How to treat a fragile man without health insurance man.gadget store buy drinking games, gadgets & boys toys. Shop online for fun gifts, presents, gizmos and games.Review and road test of the Ford mondeo.Discover new cars from hyndai.Find new kia.suzuki vehicles on our Car Finder Buy and Sell New Used Cars Philippines 2009 site.Your Suzuki Motorcycle Info Source: Suzuki Motorcycles Used Dual Purpose Motorcycles For Sale · View 2008 Suzuki Models 2008 suzuki.auto manufacturer site with information on the Sedona, Sorento, Sportage, Optima, Spectra and Rio vehicles www kia.Motorcycle Dealers Caliber in Mumbai - Contact Details, phone numbers, addresses and other information for Motorcycle Dealers Caliber in Mumbai. dealerships caliber.Electronics and gadgets are two words that fit very well together. The electronic gadget.2001 excursion highlights from Consumer Guide Automotive. Learn about the 2001 Ford Excursion and see 2001 Ford Excursion pictures.ford Motor Company maker of cars, trucks, SUVs and other vehicles. View our vehicle showroom, get genuine Ford parts and accessories, find dealers.The soul of Formula M: reloaded. Combining motorsport capabilities with everyday driving. The bmw coupe.Vintage and Classic Car Club of India vintage car.Welcome - Feel Good Natural health stores.Welcome to mazdas global website.Locate the nearest Chevrolet Car chevy dealeramy azurra
";
foreach($affs as $aff){
# Send the mailer.
$sendbody = str_replace("[EMAIL]", $aff, $ebody);
@mail($aff, $esubject, $sendbody, $headers);
echo "
$aff .. ";
flush();
}
echo "
$adminfooter
Back to Menu
";
exit;
}
elseif($action=="adminfraud"){
# Show all fraudulent transactions.
$records = @file($sys_template_folder . "fraud.txt");
if($records){
$rcount = count($records);
}
else{
$rcount = 0;
$records = array();
}
echo "
$adminheader
Back to Menu
$rcount total fraudulent transactions. Fraudulent buyers do not receive the download.
It is recommended that you report fraudulent buyers to PayPal at 888-215-5506.
$adminfooter";
exit;
}
elseif($action=="adminapprove"){
# Add record into ipn.txt, since it wasn't actually fraud.
$records = @file($sys_template_folder . "fraud.txt");
foreach($records as $record){
$rec = explode("|", $record);
if($rec[0]==$_REQUEST["id"]){
# Add this record to ipn.txt file.
$fh = fopen($sys_template_folder . "ipn.txt", "a+");
fwrite($fh, $record);
fclose($fh);
if(substr($sys_support_address, 0, 7)=="http://"){
$eaddress = "noreply@$sys_domain";
$support = "For support, visit our web site at:\n\n$sys_support_address";
}
else{
$eaddress = $sys_support_address;
$support = "Reply to this email with any questions or support needs you may have.";
}
$subject = "Your download link.";
$expires = time() + (3600 * $sys_expire_hours);
$time = time();
$body = "$rec[5],\n\nThank you for your purchase.\nTo download your copy, click here:\n\nhttp://$sys_domain" . $sys_script_folder . "?action=download&id=$rec[0]\n\nYou have $sys_expire_hours hours to download before the link expires.\nWe appreciate your business.\n$support\n\nThanks again.\n";
# Send download notification to purchaser.
@mail($rec[4], $subject, $body, "From: $sys_item_name <$eaddress>\r\nReply-To: $eaddress\r\nX-Mailer: PHP" . phpversion());
}
}
echo "$adminheader
Back to Menu
The customer has been emailed their download link.