Re: Regarding split text and match from data base [message #183937 is a reply to message #183935] |
Wed, 27 November 2013 11:29 |
Arno Welzel
Messages: 317 Registered: October 2011
Karma:
|
Senior Member |
|
|
Am 27.11.2013 06:22, schrieb jalaf28(at)gmail(dot)com:
> here is the Code..
>
>
> <?php
>
> $out=shell_exec("arp -a");
>
> $ex=explode(" ",$out);
>
> $j=21;
> $k=32;
>
> $ln=@mysql_connect("localhost","root","");
>
> if(!$ln)
> {
> die("Could not Connect to The Server");
> }
>
> mysql_select_db("mysql") or die("Could Not Connect with database");
>
> $rs=mysql_query("select * from mac_add");
>
>
>
> while($rr=mysql_fetch_array($rs))
> {
> $rsr=mysql_query("select * from mac_add where mac_id= '$ex[$k]'");
> while( $res=mysql_fetch_array($rsr))
> {
>
> echo "<tr><td>" . htmlspecialchars($ex[$j]) . "</td><td>" . htmlspecialchars($res[0]) . "</td> </td><td>" . htmlspecialchars($res[1]) . "</td></tr>" ;
>
> }
>
> $j +=21;
> $k +=21;
>
> }
This makes no sense - you first select ALL records which you then don't
use at all.
You also assume that every 21th character a new output line of arp
begins - an very insecure assumption and even more worse you loop
through the number of records in your mac_add table - so you assume
there are never more output lines in arp -a than records in your
database. Therefore if arp will output 15 lines and your table only has
10 records you would always miss 5 lines - since the loop only handles
the 10 records.
If you want to make sure you get a result for every output line from
"arp -a" you should split the lines of the output and loop through that
and not the database records.
This is just a quick & dirty hack and may contain typos - but you may
get the idea:
<?php
$ln=@mysql_connect("localhost","root","");
if(!$ln)
{
// TODO: Gracefully error handling - and not just
// terminating the script
die("Could not Connect to the database");
}
echo "<table>";
// Execute "arp -a" with the output lines in the $output array
// and the return code of the arp command in $returncode
exec("arp -a", $output, $returncode);
// TODO: Check $returncode and handle errors
// Loop through all output lines from the arp command
foreach($output as $line)
{
// TODO: Check, if $line contains an IP/Mac address at all
$elements = explode(" ", $line);
// Build query to look up the entry for a given MAC address
$query = "select * from mac_add where mac_id='".
mysql_real_escape_string($elements[32])."'";
// Execute query
$recordset = mysql_query($query);
// Fetch result and output it if there is one
if($record = mysql_fetch_array($recordset))
{
echo "<tr>" .
"<td>" . htmlspecialchars($elements[21]) . "</td>" .
"<td>" . htmlspecialchars($record[0]) . "</td>" .
"<td>" . htmlspecialchars($record[1]) . "</td>" .
"</tr>";
}
}
echo "</table>";
mysql_close();
?>
--
Arno Welzel
http://arnowelzel.de
http://de-rec-fahrrad.de
|
|
|