Re: Help with an error...

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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


[Index of Archives]     [PHP Home]     [Apache Users]     [PHP on Windows]     [Kernel Newbies]     [PHP Install]     [PHP Classes]     [Pear]     [Postgresql]     [Postgresql PHP]     [PHP on Windows]     [PHP Database Programming]     [PHP SOAP]

  Powered by Linux