Had a play around today and came up with something that works! Although it is fairly basic and so is probably missing some of the features of the other one.
This script will email you the deadlink site's id number, site name, url and tell you the url to go to check it and the url to type in to delete it. All the visitor does is click on report 'deadlink' next to a site. An email to the webmaster is sent and the visitor is redirected to a mail success page.
First copy the text below and save it as linkdead.cgi. Upload it to where your links cgi files are:
#!/usr/bin/perl
# -------------
# Links
# -------------
# Links Manager
#
# File: linkdead.cgi
# Notifies the webmaster of a deadlink
# Based on and designed to be used with
#Links 2 by: Alex Krohn
# Email: alex@gossamer-threads.com
# Web: http://www.gossamer-threads.com/
# Version: 2.0
#
# (c) 1998
Gossamer Threads Inc.
#
# This script is not freeware! Please read the README for full details
# on registration and terms of use.
# =====================================================================
#
#
# Setup:
# Make sure the require statement below points to the config file.
eval {
($0 =~ m,(.*)/[^/]+,) && unshift (@INC, "$1"); # Get the script location: UNIX /
($0 =~ m,(.*)\\[^\\]+,) && unshift (@INC, "$1"); # Get the script location: Windows \
require "admin/links.cfg"; # Change this to full path to links.cfg if you have problems.
require "$db_lib_path/db_utils.pl";
require "$db_lib_path/links.def";
$build_use_templates ?
require "$db_lib_path/site_html_templates.pl" :
require "$db_lib_path/site_html.pl";
};
if ($@) {
print "Content-type: text/plain\n\n";
print "Error including libraries: $@\n";
print "Make sure they exist, permissions are set properly, and paths are set correctly.";
exit;
}
# ========================================================
eval { &main; }; # Trap any fatal errors so the program hopefully
if ($@) { &cgierr("fatal error: $@"); } # never produces that nasty 500 server error page.
exit; # There are only two exit calls in the script, here and in in &cgierr.
sub main {
# --------------------------------------------------------
# Sends an email to the admin, letting him know that there is a dead link.
my %in = &parse_form();
# Check to make sure that there is an admin email address defined.
$db_admin_email or &cgierr("Admin Email Address Not Defined in config file!");
my $to = $db_admin_email;
my $from = $in{$db_cols[$db_contact_email]};
my $subject = "Deadlink ID number: $in{'ID'}\n";
my $msg = qq|
The following link is reported to be dead:
ID number: $in{'ID'}
Site title: $in{'Title'}
Site URL: $in{'URL'}
Category: $in{'Category'}
To check the link, please go to:
$db_cgi_url/jump.cgi?ID=$in{'ID'}
Or to delete the link please go to:
$db_cgi_url/$db_script_path/admin.cgi?db=links&ID=$in{'ID'}&Title=&URL=&Date=&Category=---&Description=&Contact+Name=&Contact+Email=&Hits=&isNew=---&isPopular=---&Rating=&Votes=&ReceiveMail=---&Graphic=&Gwidth=&Gheight=&Priority=---&Password=&MonthHits=&isMonthPopular=---&DateAdded=&keyword=&mh=10&sb=---&so=ascend&delete_form=Search&delete=$in{'ID'}
Sincerely,
Visitor.
|;
# Then mail it away!
require "$db_lib_path/Mailer.pm";
my $mailer = new Mailer ( { smtp => $db_smtp_server,
sendmail => $db_mail_path,
from => $from,
subject => $subject,
to => $to,
msg => $msg,
log => $db_mailer_log
} ) or return;
$mailer->send or return;
print &site_html_deadlink_mail;
}
Next add the following to link.html
<a href="<%db_cgi_url%>/linkdead.cgi?ID=<%ID%>&URL=<%URL%>&Title=<%Title%>&Category=<%Category%>"> Report a deadlink</a>
Make a template called something like deadlinkmailed.html (this will be what the visitor will see after submitting a deadlink)
Then add a sub routine called:
sub site_html_deadlink_mail
into site_html_templates.pl and refer to deadlinkmailed.html
use something like below:
sub site_html_deadlink_mail {
# --------------------------------------------------------
# This routine determines how the deadlink mail success page will look like.
&html_print_headers();
print &load_template ('deadlinkmailed.html', {
%in,
%globals
});
}
That should do it. I've tested it on my site and so far it works fine.