Puisque vous ne voulez pas vous soucier d'initialiser la variable en premier, utilisez isset() qui vérifiera si la variable est définie et n'est pas NULL :
<?php
session_start();
if(isset($_SESSION['views'])){
$_SESSION['views']++;
}else{
$_SESSION['views'] = 0;
header("location: index.php");
exit();
}
?>
Si vous ne vous souciez pas du nombre de fois que l'utilisateur a visité la page, vous pouvez simplement utiliser :
<?php
session_start();
if(!isset($_SESSION['views'])){
$_SESSION['views'] = 0;
header("location: index.php");
exit();
}
?>
La deuxième solution ne se préoccupe pas d'augmenter le nombre de views
et vérifie simplement si la valeur a déjà été définie ou non. Si ce n'est pas le cas, vous pouvez affirmer qu'il s'agit de la première visite de l'utilisateur sur la page et vous pouvez alors définir la variable et rediriger l'utilisateur. En définissant la variable, vous vous assurez que l'utilisateur n'entre pas dans une boucle alors qu'il a déjà consulté la page. Cette approche devrait mieux simplifier les choses comme demandé initialement.
Assurez-vous aussi que vous mettez exit()
après avoir redirigé l'utilisateur. Cela permet de s'assurer que le code ci-dessous ne sera pas exécuté lors de la redirection de l'utilisateur.