Hi,
Thanks for your help.
Here is the issue.
I am able to use this script and it works for Me.
My partner is testing it and gets an error when clicking on the button to make a purchase.
The Error and the Code are listed below.
Thank You VERY Much for helping to resolve this.
Respectfully,
FirstBorn
--------------------------
---
Environment:
--------------------------
---
Apache version 1.3.37 (Unix)
PHP version 4.3.11
--------------------------
---
Here are the Errors:
--------------------------
---
Warning: fgets(): supplied argument is not a valid stream resource in /home/blah/public_html/bla
h/blah/ind
ex.php on line 880
Warning: fclose(): supplied argument is not a valid stream resource in /home/blah/public_html/bla
h/blah/ind
ex.php on line 883
--------------------------
--
Here is the code:
--------------------------
--
<?php
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;
}
$action = $_REQUEST["action"];
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($_COOKIE["first"]>0 && $_SERVER["REQUEST_METHOD"]
=="POST" && $action=="" && $_SERVER["HTTP_REFERER"]==
""){
if(isset($_COOKIE["oto"]))
{
setcookie("otodl", time(), time()+(3600*$sys_expire_h
ours), "/", "." . $sys_domain);
$url = "index.php?action=download
oto";
}
elseif(isset($_COOKIE["ord
ered"])){
$url = "index.php?action=squeeze"
;
}
else{
# No cookie--no purchase.
$url = "/";
}
setcookie("first", 0, time()-3600, "/", "." . $sys_domain);
#setcookie("firstdl", time(), time()+(3600*$sys_expire_h
ours), "/", "." . $sys_domain);
echo "
<html>
<head>
<title>Thank you!</title>
</head>
<body>
<form action='$url' method=post>
<p><b>Thank you for your purchase!</b></p>
<p>
Click the button below to continue.
</p>
<input type=submit value='Please Click Here To Continue'>
</form>
</body>
</html>
";
exit;
}
if(strpos(" $_SERVER[QUERY_STRING]", "Return+To+Merchant") | strpos(" $_SERVER[QUERY_STRING]", "form_charset=UTF-8") | strpos(" $_SERVER[HTTP_REFERER]", "paypal")){
# Redirect user to squeeze page. For some weird reason,
# if the user views their printable receipt or does
# ANYTHING other than click "Return to Merchant",
# PayPal will send people back to the home page.
# We have to anticipate that and redirect them.
if(isset($_COOKIE["oto"]))
{
$url = "index.php?action=download
oto";
}
elseif(isset($_COOKIE["ord
ered"])){
$url = "index.php?action=squeeze"
;
}
else{
# No cookie--no purchase.
$url = "/";
}
echo "
<html>
<head>
<title>Please wait...</title>
<meta http-equiv='refresh' content='0;url=$url'>
</head>
<body>
<i>Please wait...</i>
</body>
</html>
";
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.
# 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"');
setcookie("ref", $_SERVER["HTTP_REFERER"], time()+31536000, "/", "." . $sys_domain);
setcookie("aff", $_GET["e"], time()+31536000, "/", "." . $sys_domain);
header("Location: $sys_script_folder");
exit;
}
else{
# Inform visitor that this customers link has been blocked
# for fradulent activity.
$filename = $sys_template_folder . "fraud.html";
$fh = @fopen($filename, "r");
while($s = fgets($fh)){
echo $s;
}
@fclose($fh);
exit;
}
}
# Keep paypal email on hand at all times.
if(isset($_COOKIE["aff"]))
{
$email = $_COOKIE["aff"];
}
else{
$email = $sys_default_email;
}
if($action==""){
# Save referrer.
setcookie("ref", $_SERVER["HTTP_REFERER"], time()+31536000, "/", "." . $sys_domain);
# Show sales letter.
$filename = $sys_template_folder . "salesletter.html";
# Set test cookie to make sure this will work for user.
setcookie("cookietest", true, time()+31536000, "/", "." . $sys_domain);
}
elseif($action=="order"){
# An order. Great! :)
# First, make sure cookies work for this user (since they are required).
if(isset($_COOKIE["cookiet
est"])){
# Yup. 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{
srand();
$r = rand(1, 100);
if($r<=$sys_oto_percent){
# Send OTO to affiliate.
$email = $_COOKIE["aff"];
}
else{
# Use primary.
$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_download_url = "
http://$sys_domain" . $sys_script_folder;
$item_cancel_url = "
http://$sys_domain" . $sys_script_folder;
$item_ipn_url = "
http://$sys_domain" . $sys_script_folder . "ipn.php";
setcookie("oto", time(), time()+($sys_expire_hours * 3600), "/", "." . $sys_domain);
}
else{
# Regular purchase.
$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_download_url = "
http://$sys_domain" . $sys_script_folder;
$item_cancel_url = "
http://$sys_domain" . $sys_script_folder;
$item_ipn_url = "
http://$sys_domain" . $sys_script_folder . "ipn.php";
}
setcookie("first", time(), time()+600, "/", "." . $sys_domain);
# Set ordered cookie.
setcookie("ordered", time(), time()+($sys_expire_hours * 3600), "/", "." . $sys_domain);
$paypal = "
https://www.paypal.com/cgi-bin/webscr?cmd=_xclick&business=$email&item_name=$item_name&item_number=$item_number&amount=$item_cost&no_shipping=2&return=$item_download_url&cancel_return=$item_cancel_url&no_note=1¤cy_code=USD&lc=US&bn=PP%2dBuyNowBF&charset=UTF%2d8";
# Use meta-refresh instead of header() redirect.
# header() seems to cause session issues with PayPal.
echo "
<html>
<head>
<title>Please wait...</title>
</head>
<body>
<p align=center>
<table width=100% height=100%><tr><td align=center valign=center>
<table width=420px cellpadding=5 border=1><tr><td>
<font face=verdana>
<p>You will be redirected to the PayPal checkout in 5 seconds.</p>
<p>Remember to click <b>RETURN TO MERCHANT</b> after checkout or you will not receive your download.</p>
</font>
</td></tr></table>
</table>
</p>
<form action=\"
https://www.paypal.com/cgi-bin/webscr\" method=\"post\" id=paymentform>
<input type=\"hidden\" name=\"cmd\" value=\"_xclick\">
<input type=\"hidden\" name=\"business\" value=\"$email\">
<input type=\"hidden\" name=\"item_name\" value=\"$item_name\">
<input type=\"hidden\" name=\"item_number\" value=\"$item_number\">
<input type=\"hidden\" name=\"amount\" value=\"$item_cost\">
<input type=\"hidden\" name=\"no_shipping\" value=\"1\">
<input type=\"hidden\" name=\"return\" value=\"$item_download_url
\">
<input type=\"hidden\" name=\"cancel_return\" value=\"$item_cancel_url\"
>
<input type=\"hidden\" name=\"no_note\" value=\"1\">
<input type=\"hidden\" name=\"shipping\" value=\"0.00\">
<input type=\"hidden\" name=\"currency_code\" value=\"USD\">
<input type=\"hidden\" name=\"lc\" value=\"US\">
<input type=\"hidden\" name=\"bn\" value=\"PP-BuyNowBF\">
<input type=\"hidden\" name=\"rm\" value=\"2\">
<input type=\"hidden\" name=\"notify_url\" value=\"$item_ipn_url\">
<input type=\"hidden\" name=\"custom\" value=\"$_COOKIE[ref]\">
</form>
<script language=javascript>
setTimeout('redir()', 5000);
function redir(){
document.getElementById('p
aymentform
').submit(
);
}
</script>
</body>
</html>
";
exit;
}
}
elseif($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_folde
r . "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. Set cookies and show download.
setcookie("ordered", time(), $record[9], "/", "." . $sys_domain);
if($record[2]==$sys_oto_nu
mber){
# One-time offer download. Set cookie and show download.
setcookie("oto", time(), $record[9], "/", "." . $sys_domain);
$filename = $sys_template_folder . "downloadoto.html";
}
else{
#if($record[10]==0){
# # Show squeeze page.
# $filename = $sys_template_folder . "squeeze.html";
# $record[10] = 1;
# $changes = true;
#}
#else{
# Already squeezed, show download page.
$filename = $sys_template_folder . "download.html";
#}
}
}
else{
# Expired.
$filename = $sys_template_folder . "downloadexpired.html";
}
$rec = "";
for($i=0;$i<count($record)
;$i++){
if($i<count($record)-1){
$rec .= $record[$i] . "|";
}
else{
$rec .= $record[$i];
}
}
$records[] = $rec;
}
else{
$records[] = $rec;
}
}
}
if($invalid){
# Invalid ID.
$filename = $sys_template_folder . "invalid.html";
}
if($changes){
# Update IPN file.
$done = false;
$fh = @fopen($sys_template_folde
r . "ipn.txt", "w+");
while(!$done){
$fl = flock($fh, LOCK_EX);
if($fl){
foreach($records as $record){
fwrite($fh, $record . "\n");
}
$done = true;
flock($fh, LOCK_UN);
}
}
@fclose($fh);
}
}
# All other actions require that user has ordered and
# cookie is set. If it's not, then it's expired.
elseif(isset($_COOKIE["ord
ered"])){
# Kill "first" cookie
if($action=="oto"){
# Show oto page.
$filename = $sys_template_folder . "oto.html";
}
elseif($action=="squeeze" && $_SERVER["REQUEST_METHOD"]
=="POST"){
# Show name squeeze page.
$filename = $sys_template_folder . "squeeze.html";
}
elseif($action=="download"
){
$safe = true;
if($sys_secure_dl && $_SERVER["REQUEST_METHOD"]
!="POST"){
$safe = false;
}
if($safe){
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";
}
}
else{
# Not safe, show expired.
$filename = $sys_template_folder . "downloadexpired.html";
}
}
elseif($action=="downloado
to" && isset($_COOKIE["oto"]) && $_SERVER["REQUEST_METHOD"]
=="POST"){
# Show OTO download page.
$filename = $sys_template_folder . "downloadoto.html";
}
elseif($action=="downloado
to"){
# Show expired since visitor doesn't have oto cookie.
$filename = $sys_template_folder . "downloadexpired.html";
}
elseif($action=="thankyou"
){
# Show thank you page.
$filename = $sys_template_folder . "thankyou.html";
}
elseif($action=="thankyouo
to"){
# Show OTO thank you page.
$filename = $sys_template_folder . "thankyouoto.html";
}
else{
# Expired.
$filename = $sys_template_folder . "downloadexpired.html";
}
}
elseif($action=="order" && !isset($_COOKIE["cookietes
t"])){
# No cookies. Show error.
$filename = $sys_template_folder . "nocookies.html";
}
elseif($action){
# Cookie's gone. Download has expired.
$filename = $sys_template_folder . "downloadexpired.html";
}
if($action=="admin"){
# Get username/password for admin area.
echo "
<font face=arial size=2>
<form action='$_SERVER[PHP_SELF]
' method=post>
<b>Admin Login</b>
<p>
<table>
<tr><td>username</td><td><
input type=text name=username size=20></td></tr>
<tr><td>password</td><td><
input type=password name=password size=20></td></tr>
</table>
<input type=submit value='Login'>
<input type=hidden name=action value=adminlogin>
</p>
</form>
</font>
";
exit;
}
elseif($action=="adminlogi
n"){
# Verify admin username/password.
if($_POST["username"] == $sys_admin_username && $_POST["password"] == $sys_admin_password){
# Valid. Cookie and redirect.
setcookie("admin", true);
header("Location: $_SERVER[PHP_SELF]?action=
adminmenu"
);
exit;
}
else{
echo "<font face=arial color=red><b>Invalid username or password.</b></font>";
exit;
}
}
if($_COOKIE["admin"]){
$adminheader = "<html><head><title>Admin Panel</title><head><body>"
;
$adminfooter = "</body></html>";
# Admin functions.
if($action=="adminmenu"){
echo "
$adminheader
<p>
<b>Admin Panel</b>
</p>
<ol>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nbuys'>Sho
w All Sales</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nbuys&coun
t=50'>Show
Last 50 Sales</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nbuys&coun
t=100'>Sho
w Last 100 Sales</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nmine'>Sho
w My Sales</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nrefs'>Ref
errer Report</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nrefdomain
s'>Referre
r Domains Report</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nrefsmine'
>My Sales Referrer Report</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nrefdomain
smine'>My Sales Referrer Domains Report</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
naffiliate
s'>Affilia
tes Report</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nexport'>E
xport Purchases to CSV</a>
<li> <a href='$_SERVER[PHP_SELF]?a
ction=admi
nlogout'>L
ogout</a>
</ol>
$adminfooter
";
exit;
}
elseif($action=="adminbuys
"|$action=
="adminmin
e"){
# Show all customers.
$records = @file($sys_template_folder
. "ipn.txt");
$count = 0;
$count = $_REQUEST["count"];
$rcount = count($records);
if($count){
$showing = "last $count";
}
else{
$showing = "all $rcount";
}
if($action=="adminmine"){
$showing = "only sales paid to you";
}
echo "
$adminheader
<a href='$_SERVER[PHP_SELF]?a
ction=admi
nmenu'>Bac
k to Menu</a>
<p>
<i>Clicking the EXPIRES link will add another $sys_expire_hours hours to the customer's download link expiration.</i>
</p>
<p>
$rcount total records. Showing $showing. Your sales are <span style='background-color: #ffffcc;'>highlighted</spa
n>.
<table border=1 cellspacing=0 cellpadding=0><tr>
<td><font size=1 face=arial><b>PayPal Receipt ID</b></font></td>
<td><font size=1 face=arial><b>Item Number</b></font></td>
<td><font size=1 face=arial><b>Affiliate Email</b></font></td>
<td><font size=1 face=arial><b>Customer Email</b></font></td>
<td><font size=1 face=arial><b>First Name</b></font></td>
<td><font size=1 face=arial><b>Last Name</b></font></td>
<td><font size=1 face=arial><b>Payment</b><
/font></td
>
<td><font size=1 face=arial><b>Bought</b></
font></td>
<td><font size=1 face=arial><b>Expires</b><
/font></td
>
</tr>
";
$bgcolor = "#ffffff";
$c = $rcount;
foreach($records as $rec){
$c--;
if(!$count | $c<=$count){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
$record = explode("|", $rec);
$date = "";
if($record[11]){
$date = date("Y-m-d H:i:s", $record[11]);
}
$expires = date("Y-m-d H:i:s", $record[9]);
if($record[3]==$sys_defaul
t_email){
# Our sale. Yay! :)
$bgcolor = "#ffffcc";
}
$show = true;
if($action=="adminmine"){
if($record[3]!=$sys_defaul
t_email){
$show = false;
}
}
if($show){
echo "
<tr>
<td bgcolor=$bgcolor><font size=1 face=arial><a href='index.php?action=dow
nload&id=$
record[0]'
target=_blank>$record[0]</
a></font><
/td>
<td bgcolor=$bgcolor><font size=1 face=arial>$record[2]</fon
t></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$record[3]</fon
t></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$record[4]</fon
t></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$record[5]</fon
t></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$record[6]</fon
t></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$record[8]</fon
t></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$date</font></t
d>
<td bgcolor=$bgcolor><font size=1 face=arial><a href='$_SERVER[PHP_SELF]?a
ction=admi
nextend&id
=$record[0
]'>$expire
s</a></fon
t></td>
</tr>
";
}
if($bgcolor=="#ffffff"){
$bgcolor = "#eeeeee";
}
else{
$bgcolor = "#ffffff";
}
}
}
}
echo "</table>$adminfooter";
exit;
}
elseif($action=="adminexpo
rt"){
# Export purchase records to CSV.
$first = true;
header("Content-Type: application/octet-stream")
;
header("Content-Dispositio
n: attachment; filename=export.csv");
header("Content-Transfer-E
ncoding: binary");
$records = @file($sys_template_folder
. "ipn.txt");
foreach($records as $rec){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
if($first){
# Output headers.
echo '"PayPal Receipt ID","Item Name","Item Number","Affiliate Email","Customer Email","First Name","Last Name","Company","Payment",
"Bought","
Expires"' . "\r\n";
$first = false;
}
$record = explode("|", $rec);
$date = "";
if($record[11]){
$date = date("Y-m-d H:i:s", $record[11]);
}
$expires = date("Y-m-d H:i:s", $record[9]);
echo "\"$record[0]\",\"$record[
1]\",\"$re
cord[2]\",
\"$record[
3]\",\"$re
cord[4]\",
\"$record[
5]\",\"$re
cord[6]\",
\"$record[
7]\",\"$re
cord[8]\",
\"$date\",
\"$expires
\"\r\n";
}
}
exit;
}
elseif($action=="adminrefs
"|$action=
="adminref
smine"){
# Show referrer report.
$records = @file($sys_template_folder
. "ipn.txt");
$count = 0;
$count = $_REQUEST["count"];
$rcount = count($records);
if($count){
$showing = "last $count";
}
else{
$showing = "all $rcount";
}
if($action=="adminrefsmine
"){
$showing = "only sales paid to you";
}
echo "
$adminheader
<a href='$_SERVER[PHP_SELF]?a
ction=admi
nmenu'>Bac
k to Menu</a>
<p>
$rcount total records. Showing $showing. Your sales are <span style='background-color: #ffffcc;'>highlighted</spa
n>.
<table border=1><tr>
<td><font size=1 face=arial><b>Referrer</b>
</font></t
d>
<td><font size=1 face=arial><b>Domain</b></
font></td>
<td><font size=1 face=arial><b>Keywords</b>
</font></t
d>
<td><font size=1 face=arial align=right><b>Sales</b></
font></td>
</tr>
";
$bgcolor = "#ffffff";
$c = $rcount;
$refs = array();
foreach($records as $rec){
$c--;
if(!$count | $c<=$count){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
$record = explode("|", $rec);
$date = "";
if($record[11]){
$date = date("Y-m-d H:i:s", $record[11]);
}
$expires = date("Y-m-d H:i:s", $record[9]);
if($record[3]==$sys_defaul
t_email){
# Our sale. Yay! :)
$bgcolor = "#ffffcc";
}
$show = true;
if($action=="adminrefsmine
"){
if($record[3]!=$sys_defaul
t_email){
$show = false;
}
}
if($show){
if(strlen($record[12])>100
){
$ref = substr($record[12], 0, 98) . "..";
}
else{
$ref = $record[12];
}
if(isset($refs[$record[12]
])){
$refs[$record[12]]++;
}
else{
$refs[$record[12]]=1;
}
}
}
}
}
arsort($refs);
foreach($refs as $ref => $sales){
$parts = parse_url($ref);
$host = str_replace("
www.", "", $parts["host"]);
$keywords = searchKeywords($ref);
if(strlen($ref)>100){
$sref = substr($ref, 0, 98) . "..";
}
else{
$sref = $ref;
}
echo "
<tr>
<td bgcolor=$bgcolor><font size=1 face=arial><a href='$ref' target=_blank>$sref</a></f
ont></td>
<td bgcolor=$bgcolor><font size=1 face=arial><a href='
http://$host' target=_blank>$host</a></f
ont></td>
<td bgcolor=$bgcolor><font size=1 face=arial>$keywords</font
></td>
<td bgcolor=$bgcolor align=right><font size=1 face=arial>$sales</font></
td>
</tr>
";
if($bgcolor=="#ffffff"){
$bgcolor = "#eeeeee";
}
else{
$bgcolor = "#ffffff";
}
}
echo "</table>$adminfooter";
exit;
}
elseif($action=="adminrefd
omains"|$a
ction=="ad
minrefdoma
insmine"){
# Show referrer report.
$records = @file($sys_template_folder
. "ipn.txt");
$count = 0;
$count = $_REQUEST["count"];
$rcount = count($records);
if($count){
$showing = "last $count";
}
else{
$showing = "all $rcount";
}
if($action=="adminrefdomai
nsmine"){
$showing = "only sales paid to you";
}
echo "
$adminheader
<a href='$_SERVER[PHP_SELF]?a
ction=admi
nmenu'>Bac
k to Menu</a>
<p>
$rcount total records. Showing $showing. Your sales are <span style='background-color: #ffffcc;'>highlighted</spa
n>.
<table border=1><tr>
<td><font size=1 face=arial><b>Domain</b></
font></td>
<td><font size=1 face=arial align=right><b>Sales</b></
font></td>
</tr>
";
$bgcolor = "#ffffff";
$c = $rcount;
$refs = array();
foreach($records as $rec){
$c--;
if(!$count | $c<=$count){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
$record = explode("|", $rec);
$date = "";
if($record[11]){
$date = date("Y-m-d H:i:s", $record[11]);
}
$expires = date("Y-m-d H:i:s", $record[9]);
if($record[3]==$sys_defaul
t_email){
# Our sale. Yay! :)
$bgcolor = "#ffffcc";
}
$show = true;
if($action=="adminrefdomai
nsmine"){
if($record[3]!=$sys_defaul
t_email){
$show = false;
}
}
if($show){
$parts = parse_url($record[12]);
$host = str_replace("
www.", "", $parts["host"]);
if(isset($refs[$host])){
$refs[$host]++;
}
else{
$refs[$host]=1;
}
}
}
}
}
arsort($refs);
foreach($refs as $ref => $sales){
echo "
<tr>
<td bgcolor=$bgcolor><font size=1 face=arial><a href='
http://$ref' target=_blank>$ref</a></fo
nt></td>
<td bgcolor=$bgcolor align=right><font size=1 face=arial>$sales</font></
td>
</tr>
";
if($bgcolor=="#ffffff"){
$bgcolor = "#eeeeee";
}
else{
$bgcolor = "#ffffff";
}
}
echo "</table>$adminfooter";
exit;
}
elseif($action=="adminaffi
liates"){
# Show referrer report.
$records = @file($sys_template_folder
. "ipn.txt");
$count = 0;
$count = $_REQUEST["count"];
$rcount = count($records);
if($count){
$showing = "last $count";
}
else{
$showing = "all $rcount";
}
echo "
$adminheader
<a href='$_SERVER[PHP_SELF]?a
ction=admi
nmenu'>Bac
k to Menu</a>
<p>
$rcount total records. Showing $showing. Your sales are <span style='background-color: #ffffcc;'>highlighted</spa
n>.
<table border=1><tr>
<td><font size=1 face=arial><b>Affiliate</b
></font></
td>
<td><font size=1 face=arial align=right><b>Sales</b></
font></td>
</tr>
";
$bgcolor = "#ffffff";
$c = $rcount;
$refs = array();
foreach($records as $rec){
$c--;
if(!$count | $c<=$count){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
$record = explode("|", $rec);
$date = "";
if($record[11]){
$date = date("Y-m-d H:i:s", $record[11]);
}
$expires = date("Y-m-d H:i:s", $record[9]);
if($record[3]==$sys_defaul
t_email){
# Our sale. Yay! :)
$bgcolor = "#ffffcc";
}
if(isset($refs[$record[3]]
)){
$refs[$record[3]]++;
}
else{
$refs[$record[3]]=1;
}
}
}
}
arsort($refs);
foreach($refs as $ref => $sales){
echo "
<tr>
<td bgcolor=$bgcolor><font size=1 face=arial><a href='mailto:$ref'>$ref</a
></font></
td>
<td bgcolor=$bgcolor><font size=1 face=arial>$sales</td>
</tr>
";
if($bgcolor=="#ffffff"){
$bgcolor = "#eeeeee";
}
else{
$bgcolor = "#ffffff";
}
}
echo "</table>$adminfooter";
exit;
}
elseif($action=="adminexte
nd"){
# Extend duration of purchase download link.
$id = $_REQUEST["id"];
$records = @file($sys_template_folder
. "ipn.txt");
$recs = array();
foreach($records as $rec){
$rec = str_replace("\n", "", $rec);
if(trim($rec)){
$record = explode("|", $rec);
if($record[0]==$id){
# Extend this record.
$changes = true;
$record[9] += (3600 * $sys_expire_hours);
$rec = "";
for($i=0;$i<count($record)
;$i++){
if($i<count($record)-1){
$rec .= $record[$i] . "|";
}
else{
$rec .= $record[$i];
}
}
$recs[] = $rec;
}
else{
$recs[] = $rec;
}
}
}
if($changes){
# Update IPN file.
$done = false;
$fh = @fopen($sys_template_folde
r . "ipn.txt", "w+");
while(!$done){
$fl = flock($fh, LOCK_EX);
if($fl){
foreach($recs as $record){
fwrite($fh, $record . "\n");
}
$done = true;
flock($fh, LOCK_UN);
}
}
@fclose($fh);
echo "
$adminheader
<a href='$_SERVER[PHP_SELF]?a
ction=admi
nmenu'>Bac
k to Menu</a>
<p>
Link expiration has been extended by $sys_expire_hours hours.
</p>
<p>
Give customer this link to download:
</p>
<p>
http://$sys_domain" . $sys_script_folder . "?action=download&id=$id
</p>
$adminfooter
";
}
else{
echo "
<a href='$_SERVER[PHP_SELF]?a
ction=admi
nmenu'>Bac
k to Menu</a>
<p>
No matching purchase record found.
</p>
";
}
exit;
}
elseif($action=="adminlogo
ut"){
# Logout.
setcookie("admin", "", time() - 3600);
header("Location: $_SERVER[PHP_SELF]");
exit;
}
}
# If we made it here, this needs to be cleared.
setcookie("first", 0, time()-3600, "/", "." . $sys_domain);
# Show appropriate page.
$fh = fopen($filename, "r");
while($s = fgets($fh)){
echo $s;
}
fclose($fh);
?>