Jim Lucas wrote:
So, to summarize everything said, with my own added notes.
payne@xxxxxxxxxxxxxxxxxxx wrote:
Hi,
I am currently working on a php script that will be called by cron.
But I
have an error that keeps coming up.
Parse error: syntax error, unexpected T_VARIABLE inmail_report.php on
What I am trying to do is a simple php script to send me a report
everynight. Any clues as to why? Also does anyone know of a site with
mail
srcipts that are ran on the cli?
---------------------------------------------
<?php
The following wont work if you use this from the CLI. There is not
remote addr.
$hostname = gethostbyaddr($_SERVER['REMOTE_ADDR']);
//This is a simple email to give me the status from yesterday.
//This connect the script to the db
require_once('mysql_connect.inc');
Loose the semi-colon at the end of your SELECT statements. The mysql
extension for PHP will add it on its own.
$query = "Select ip, date, time, CONCAT(city, ', ',country) as location
from ips where country !=' ' and date = current_date() order by
date,time,country asc;";
You missed a semi-colon at the end of this line
$result = mysql_query($query)
$mailsend = mail("terrorpup@xxxxxxxxx","The IP's that Attacked
$hostname", "The following are ip's that have try to attack your
system.\r\n\r\
You can't do this within a function call. Like someone else said, you
need to run the if/else and while portion before you mail call.
Capture that data and then add it to the mail call.
if ($result) { //if that ran ok, display the record
echo "<table width=\'150\'><tr><td> Country </td><td>
# of
Attacks
</td></tr>";
//fetch and print the records
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
echo "<tr><td align=\'left\'>$row[0]</td><td><div
align=\'right\'>$row[1]</div></td></tr>";
}
echo '</table>';
mysql_free_result ($result); //free up the resources
} else { //if did not run ok
echo '<p>This could not be display due to a system
error.
We apologize
fore any incovenience.</p><p>'. mysql_error() . '</p>';
}
","From:fyre@xxxxxxxxxxxx\r\nReply To:fyre@xxxxxxxxxxxx");
print("$mailsend");
?>
So here is the code re factored.
<?php
# Setup your variables for later use.
$recipient = 'terrorpup@xxxxxxxxx';
$subject = 'The IP\'s that Attacked';
$add_headers[] = 'From: fyre@xxxxxxxxxxxx';
$add_headers[] = 'Reply To: fyre@xxxxxxxxxxxx';
$separator = "\r\n";
//This is a simple email to give me the status from yesterday.
//This connect the script to the db
require_once('mysql_connect.inc');
$query = "
SELECT ip,
date,
time,
CONCAT(city, ', ',country) as location
FROM ips
WHERE country != ''
AND date = current_date()
ORDER BY date, time, country asc
";
$result = mysql_query($query);
ob_start();
echo <<<TXT
The following are ip's that have try to attack your system.
TXT;
//if that ran ok, display the record
if ($result) {
echo <<<TABLE
<table width='150'><tr><td>Country</td><td># of Attacks</td></tr>
TABLE;
//fetch and print the records
while ( $row = mysql_fetch_assoc($result) ) {
echo <<<ROW
<tr>
<td align='left'>{$row['ip']}</td>
<td><div align='right'>[$row['date']}</div></td>
</tr>
ROW;
}
echo '</table>';
//free up the resources
mysql_free_result ($result);
} else {
//if did not run ok
echo '<p>This could not be display due to a system error.
We apologize for any incovenience.</p><p>'. mysql_error() . '</p>';
}
$body = ob_get_clean();
$mailsend = mail($recipient, $subject, $body, join($separator,
$add_headers));
print($mailsend);
?>
Jim,
thanks, well I am still trying to work it out. Your scripts gives me
this when I run it....
------------------------------------------------------------------
fyre@xxxxxxxxxxxx
to me
show details 9:02 PM
Reply
Reply To: fyre@xxxxxxxxxxxx
The following are ip's that have try to attack your system.
<table width='150'><tr><td>Country</td><td># of Attacks</td></tr></table>
----------------------------------------
And mine is doing this now....e-mails the html code and nothing from the
db....
<html>
<head>
<title>Attack's on $hostname</title>
</head>
<body>
if ($result) { //if that ran ok, display the record
echo "<table width='150'><tr><td> Country </td><td> # of
Attacks </td></tr>";
//fetch and print the records
while ($row = mysql_fetch_array($result, MYSQL_NUM)) {
echo "<tr><td align='left'>$row[0]</td><td><div
align='right'>$row[1]</div></td></tr>";
}
echo "</table>";
mysql_free_result ($result); //free up the resources
} else { //if did not run ok
echo "<p>This could not be display due to a system
error. We apologize fore any incovenience.</p><p>". mysql_error() . "</p>";
}
mysql_close(); //Close the database connection.
</body>
</html>
--------------------------------------------------
Here is my update code....
<?php
2 //VAR Are set here....
3
4 $hostname = `hostname -f`;
5
6 //This is a simple email to give me the status from yester day.
7 //This connect the script to the db
8
9 //To use ',' between e-mail address for multiple recipents
10 $to = 'terrorpup@xxxxxxxxxxx';
11
12
13 //Set the Subject here...
14 $subject = "The IPs that Attacked $hostname report from Fyre";
15
16 //Database Set is here...
17 require_once('mysql_connect.inc');
18
19 $query = "Select ip, date, time, CONCAT(city, ', ',country) as
location from ips where country !=' ' and date = current_date() order by
date,time,country asc;";
20 $result = mysql_query($query) ;
21
22 //The Message goes here....
23 $message = '
24 <html>
25 <head>
26 <title>Attack\'s on $hostname</title>
27 </head>
28 <body>
29 if ($result) { //if that ran ok, display the record
30 echo "<table width=\'150\'><tr><td> Country
</td><td> # of Attacks </td></tr>";
31
32 //fetch and print the records
33
34 while ($row = mysql_fetch_array($result,
MYSQL_NUM)) {
35 echo "<tr><td
align=\'left\'>$row[0]</td><td><div
align=\'right\'>$row[1]</div></td></tr>";
36 }
37
38 echo "</table>";
39
40 mysql_free_result ($result); //free up the resources
41
42 } else { //if did not run ok
43
44 echo "<p>This could not be display due to a
system error. We apologize fore any incovenience.</p><p>". mysql_error()
. "</p>";
45
46 }
47
48 mysql_close(); //Close the database connection.
49 </body>
50 </html>
51 ';
52
53
54 //To Sent HTML Mail; The Content-type header must be set
55 $headers = 'MIME-Version: 1.0' . "\r\n";
56 $headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
57 $headers = 'From: FYRE REPORT <root@xxxxxxxxxxxxxx>';
58
59 // Mail it
60 mail($to, $subject, $message, $headers);
61
62 ?>
63
--
PHP General Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php