Re: [PHP] Help with an error...



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
.



Relevant Pages

  • NOCC Webmail <= 1.0 multiple vulnerabilities
    ... "NOCC is a webmail client written in PHP. ... remote code execution, there are two ways of execute arbitrary code on ... is defined in conf.php, by default no path is defined, but script suggests ... echo nl2br); ...
    (Bugtraq)
  • Re: [PHP] Help with an error...
    ... Also, if you want HTML tags in your PHP code, you need to end and start ... I am currently working on a php script that will be called by cron. ... echo 'This could not be display due to a system ...
    (php.general)
  • Re: [PHP] Help with an error...
    ... I am currently working on a php script that will be called by cron. ... echo 'This could not be display due to a system error. ...
    (php.general)
  • Re: Help: a script to display most popular pages within my website
    ... >> Does anyone know of a script or simple programming allowing me to ... >> scouted the net searching for a script to do this with no success. ... My site is PHP ... JavaScript to display the same headers and footers across the entire site -- ...
    (alt.php)
  • HELP!!!! Scrolling Div Problem
    ... I am putting together a logging application, I created a layered dhtml ... simple echo no problem there so I know the file im including IS ... (This gets called in the php code... ... will display, if it has more then 1 lines 2 or more even, it will now ...
    (comp.lang.javascript)