Path: csiph.com!usenet.pasdenom.info!aioe.org!news.swapon.de!fu-berlin.de!uni-berlin.de!individual.net!not-for-mail From: Arno Welzel Newsgroups: comp.lang.php Subject: Re: Regarding split text and match from data base Date: Wed, 27 Nov 2013 12:31:03 +0100 Lines: 83 Message-ID: <5295D7F7.7080308@arnowelzel.de> References: <676203c7-7d21-4513-92d5-7a9111c2eaa6@googlegroups.com> <2ca0dc82-85a2-4e57-b6b8-ada747640289@googlegroups.com> <5295D781.8090403@arnowelzel.de> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit X-Trace: individual.net fFouoF2FmBeRFz/Ur7MUzw3h5oj/7AkO7KYMtSWtIEoZkLn1gf Cancel-Lock: sha1:KDocKHp44J/gmZlo/GkQi61opn4= User-Agent: Mozilla/5.0 (Windows NT 6.1; WOW64; rv:24.0) Gecko/20100101 Thunderbird/24.1.1 In-Reply-To: <5295D781.8090403@arnowelzel.de> Xref: csiph.com comp.lang.php:11997 Am 27.11.2013 12:29, schrieb Arno Welzel: > Am 27.11.2013 06:22, schrieb jalaf28@gmail.com: > [...] >> $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 Of course "element", not "character"... > 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: > > $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 ""; > > // 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 "" . > "" . > "" . > "" . > ""; > } > } > > echo "
" . htmlspecialchars($elements[21]) . "" . htmlspecialchars($record[0]) . "" . htmlspecialchars($record[1]) . "
"; > > mysql_close(); > ?> -- Arno Welzel http://arnowelzel.de http://de-rec-fahrrad.de