L'ho scritta al volo senza provarla, ma prova ad usare una cosa così:
Codice PHP:
$lim 5//Le pagine da mostrare prima e dopo

$paginazione "Pagine totali : " $tot_pages "[ ";

$prima = ($current_page-$lim <= 1) ? $current_page-$lim;
$ultima = ($current_page+$lim $tot_pages) ? $tot_pages $current_page+$lim;

if(
$prima 1)
     
$paginazione .= "<a href=\"{$_SERVER['REQUEST_URI']}&page={$prima-1}\" title=\"Vai alla pagina {$prima-1}\"><<</a> ";
else
     
$paginazione .= "<< ";

if(
$ultima $tot_pages)
     
$paginazione .= " <a href=\"{$_SERVER['REQUEST_URI']}&page={$ultima+1}\" title=\"Vai alla pagina {$ultima+1}\">>></a>";
else
     
$paginazione .= " >>";

$paginazione .= ($prima 1"<< " :  
for(
$i=$prima;$i<=$ultima;$i++) {
    if(
$i == $current_page)
        
$paginazione .= $i " ";
    else
        
$paginazione .= "<a href=\"{$_SERVER['REQUEST_URI']}&page=$i\" title=\"Vai alla pagina $i\">$i</a> ";
}
$paginazione .= " ]"