On 29/4/09 15:09, Tudor wrote:
like i say my php is basic
this is answer is helpful thanks
i have changed it a bit
as the user will not be logging in with their real username in the
radius server as it is a mac adress
so i changed the line
"FROM radacct WHERE UserName = '00-00-00-00-00-13'"

the idea is that the users home page will know the mac address

and i have changed the db connect line to my details for my server

but no result
like i say guidence really would be appreciated

Did you change the 'database' string to your actual database ?

Insert

error_reporting(E_ALL);

at the top and see if you get any errors.

Oh and

/* insert HTML here */
$nRes = bcHighPow($res[0]);

should be

/* insert HTML here */
$nRes = bcHighPow(bcmul($res[0],'8'));

Arran





On 29/4/09 13:12, tudorg wrote:
I am trying to create a user login area where they can view their usage.
my php is very basic
My radius will authenticate user by mac address which i have working
so the user login for will take them to a home page in that page will
be a
link
to view usage
i would like a small pop up window (in the same page)with the result of
their total download and upload together
the mysql query would be
SELECT SUM( AcctInputOctets ) + SUM( AcctOutputOctets )/(1024*1024)
FROM radacct
WHERE UserName = '00-00-00-00-00-13'
any ideas on a small script for this would be appreciated

PHP doesn't have a long int equivalent, you can do what you're doing,
but it's better to use the BC maths library.


<?php

$unitsBytesBin =
array('B','KiB','MiB','GiB','TiB','PiB','EiB','ZiB','YiB');

function bcHighPow($val, $precision = 2, $expLimit = 10, $base = 1024){
$i = 0; $pDiv = 1; $val = (string) $val; $base = (string) $base;
while (true) {
$i++;
$div = bcpow($base, (string) $i);
if((bccomp($val, $div) === -1) || ($i >= $expLimit)){
$out = bcdiv($val,$pDiv,$precision);
break;
}else
$pDiv = $div;
}
return array((float) $out,$unitBytesBin[$i]);
}



$db = mysql_connect('mysqhost.example.com','user','password',true);
mysql_select_db('database',$db);

$dbResult = mysql_query(
"SELECT CAST(SUM(`AcctInputOctets`) + SUM(`AcctOutputOctets`) AS CHAR)".
"FROM radacct WHERE UserName = '$user'"
);

if(mysql_num_rows($dbResult)){
$res = mysql_fetch_array($dbResult,MYSQL_NUM);
/* insert HTML here */
$nRes = bcHighPow($res[0]);
echo $nRes[0]." ".$nRes[1];
}else
echo 'No data found';

mysql_free_result($dbResult);
mysql_close($db);

?>

Not tested, but should give you an idea of what to do.

-
List info/subscribe/unsubscribe? See
http://www.freeradius.org/list/users.html


--
Arran Cudbard-Bell ([email protected]),
Authentication, Authorisation and Accounting Officer,
Infrastructure Services (IT Services),
E1-1-08, Engineering 1, University Of Sussex, Brighton, BN1 9QT
DDI+FAX: +44 1273 873900 | INT: 3900
GPG: 86FF A285 1AA1 EE40 D228 7C2E 71A9 25BB 1E68 54A2
-
List info/subscribe/unsubscribe? See http://www.freeradius.org/list/users.html

Reply via email to