Re: Help with an error...

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

 



It seems like you're still calling functions inside the string.  Instead
of concatenating, try the output buffering like was mentioned before. 
Also, if you want HTML tags in your PHP code, you need to end and start
the PHP tags again, or print them as output in quotes.

Thank you,
Micah Gersten
onShore Networks
Internal Developer
http://www.onshore.com



Payne wrote:
> 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