Désolé si le titre de la question est trop mauvais, je suis nouveau sur php et je ne sais pas s'il y a un nom spécifique pour cela.
J'ai seulement 2 enregistrements et j'ai limité la pagination pour montrer seulement 1 enregistrement par page, alors j'aurai 2 pages, et je peux accéder à ces pages avec &tab=1
et &tab=2
sur mon code actuel si j'écris sur l'URL : &tab=-2
, &tab=-1
, &tab=0
, &tab=3
, &tab=4
, &tab=5
Je peux aller sur cette page, et sur cette page je ne verrai aucun enregistrement car comme je l'ai dit je n'ai que 2 pages.
Mes questions :
1. Il y a des problèmes de sécurité ?
2. Comment ne pas permettre à l'utilisateur d'aller plus loin dans les pages existantes ?
Voici mon code de pagination :
<?php
if(empty($_GET['tab'])){}else{$page = $_GET['tab'];}
if(isset($page)){$page = $_GET['tab'];}else{$page = 1;}
$maximoVEP = 1;
$startVEP = (($maximoVEP * $page) - $maximoVEP);
$title = 'Asic';
$stmtVEP = $db->prepare("SELECT count(*) FROM table WHERE data = 'vm' AND title = :title");
$stmtVEP->bindValue(':title', $title, PDO::PARAM_STR);
$stmtVEP->execute();
$total = $stmtVEP->fetchColumn();
$total_pages = ceil($total/$maximoVEP);
echo '<nav aria-label="Page navigation example">';
echo '<ul class="pagination paginationEp ml-1 mr-1">';
if ($page >= 2){
echo '<li class="page-item">';
echo '<a class="page-link" href="?p=';
echo htmlentities($slug, \ENT_QUOTES, "UTF-8", false);
echo '&tab='.($page-1).'"><i class="fas fa-angle-left"></i> ANTERIOR</a>';
echo '</li>';
}
echo '<li class="page-item">';
echo '<a class="page-link" href="';
echo htmlentities($slug, \ENT_QUOTES, "UTF-8", false);
echo '"><i class="fas fa-list-ul"></i></i></a>';
echo '</li>';
if ($page < $total_pages){
echo '<li class="page-item">';
echo '<a class="page-link" href="?p=';
echo htmlentities($slug, \ENT_QUOTES, "UTF-8", false);
echo '&tab='.($page+1).'">PRÓXIMO <i class="fas fa-angle-right"></i></a>';
echo '</li>';
}
echo '</nav>';
$conn = null;
?>
Et la requête :
$stmtUTP = $db->prepare("SELECT `id`, `title` FROM table WHERE data = 'vm' ORDER BY id DESC LIMIT :start, :max");
$stmtUTP->bindValue(':start', $startVEP, PDO::PARAM_INT);
$stmtUTP->bindValue(':max', $maximoVEP, PDO::PARAM_INT);
$stmtUTP->execute();