You ought to include E_NOTICE in your error reporting. This will generate an E_NOTICE for undefined variable on every call to the function
public function getURL()
{
$var=$_REQUEST;
$url.="?"; // This line
The reason you get two sets of offset and move in the href is:
Before a link click everything is fine since $REQUEST doesn't include the keys offSet and move. The first time a user clicks a link, $REQUEST includes the keys 'offSet' and 'move', so getURL() will generate a string containing at least
offSet=NN&move=MM
while(list($key,$value)=each($_REQUEST))
And then you also append 'offSet=NN&move=MM
echo '<a href="'.$this->getURL().'&offSet='.$offSet.'&move='.$this->limit.'">'.$i.'</a>';
First off, I'd do each($GET) instead. Else you will get post and cookie variables as well, and you additionally run the risk of spending time debugging because you suddenly used the same key for more than one of those arrays. If your intent is really to include information from them all, I'd array_merge the three arrays and each over that instead. Yes, the risk of conflicting keys remains, but at least it's apparent from the call to array merge in what order the values overwrite each other, without looking at ini settings.
Then
while(list($key,$value)=each($_GET)) {
if ($key != 'offSet' && $key != 'move') {
$url .= $key;
$url .= "=";
$url .= $value;
$url .= "&";
}