Débutant en PHP Smiley langue , je n'arrive pas à faire passer ma variable modifiée lors de la relance de ma page.

Une âme charitable pourrait-elle m'aider ?

voici le code

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">

<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />

<title></title>

<link rel="stylesheet" media="screen" href="ecran.css" />
</head>
<body>

<?php
/* -- inisialisation variable -- */
$pas = 5; // pas d'incrementation.
if (!isset($limite)) $limite = 0; //si premier acces a la page

/* -- Recuperation nreference de la page active -- */
$path_parts = pathinfo($_SERVER['PHP_SELF']);
$page = $path_parts['basename'];

/* -- Calcul valeurs amont et aval -- */
$limitesuivante = $limite + $pas;
$limiteprecedente = $limite - $pas;

echo '<p>'."Limite actuel = ".$limite.'</p>';
/* -- lien suivant --*/
echo '<a href="'.$page.'?limite='.$limitesuivante.'">Page Suivante</a>'
?>

</body>
</html>
Modifié par loloH77 (28 Apr 2011 - 20:08)
Impossible de faire apparaitre l'ensemble du code dans les balises Smiley php

J'ai donc collé le code hors des balises Smiley decu
Modifié par loloH77 (28 Apr 2011 - 20:10)
Bonsoir !

Pouvez-vous remplacer cette ligne :
if (!isset($limite)) $limite = 0; //si premier acces a la page


Par les lignes suivantes :

   // On récupère l'argument "limite"
   $limite = trim($_REQUEST['limite']);
   
   // On vérifie qu'il s'agit bien d'un entier
   if(ctype_digit($limite)==FALSE)
   {
     // Il ne s'agit pas d'un entier, ou il n'y a tout simplement pas de valeur
     // ==> On utilise une valeur par défaut
     $limite = 0;
   }
Merci pour le retour, ca fait plaisir ! Smiley smile

En fait, vous avez utilisé une ancienne/vieille/ancestrale méthode d'utiliser PHP.

Du temps de Mathusalem, les arguments (monscript_a_moi.php?limite=20) étaient automagiquement transformés en variable (autoglobals.

Cette technique n'est plus valable. On utilise ce que l'on appelle des variables super-globales qui sont automatiquement remplies, et que vous devez alors utiliser. Cela permet d'avoir des variables PHP dont vous êtes (théoriquement) sûr du contenu.

$_GET, $POST et $_REQUEST sont des tableaux. $_GET et $_POST contiennent les arguments GET (via URL) et POST (via formulaires), tandis que $_REQUEST contient les deux.

Pour simplifier très grossièrement, vous n'avez pas à tenir compte de l'origine des arguments, $_REQUEST suffit.

Une petite URL de doc : http://php.belnet.be/manual/fr/language.variables.external.php

Mais il est extrêmement important de vérifier que vos variables contiennent ce qu'elles sont supposées contenir (ce que j'ai fait avec la fonction ctype_digit), sinon votre script peut constituer une porte ouverte à des usages malveillants (entres autres du spam).

Bonne soirée ! Smiley smile
Modifié par Bouchon (29 Apr 2011 - 00:27)
Bonjour

Après des recherches menées sur le net, je suis dubitatif Smiley confus

Apparemment, il existe 4 façons de faire
- Methode GET : $variable = $_GET['nomvariable'];
- Methode POST : $variable = $_POST['nomvariable'];
- Methode SESSIONS : $variable = $_SESSION['nomvariable'];
- Methode REQUEST: $variable = $_REQUEST['nomvariable'];

La méthode « REQUEST », semble effectivement tout terrain, mais ne semble pas des plus propre, car elle a les défauts de ces avantages (très peux ciblé).

La méthode « POST » impose de passer par un formulaire pour renseigner ou afficher les valeurs. D'autre part, les informations sont masquées à l'utilisateur, mais non cryptées.

La méthode « GET » semble être la solution, mais impose un contrôle strict des valeurs entrantes, car elles s'affichent en clair dans la barre d'adresse et peut donc être modifiée par l'utilisateur.


Je souhaiterai expérimenter la méthode « session », mais encore faut-il savoir ou placer le session_start ?

Je crois qu'il me faudra encore beaucoup d'apprentissage et de test pour comprendre les tenants et les aboutissants de tout ça.

A très bientôt après la fin de mes tests Smiley langue
Modérateur
Bonjour,

loloH77 a écrit :

La méthode « GET » semble être la solution, mais impose un contrôle strict des valeurs entrantes, car elles s'affichent en clair dans la barre d'adresse et peut donc être modifiée par l'utilisateur.


Le même contrôle doit se faire pour ce qui est passé en POST ou par COOKIE. Même si ces données ne sont pas aussi visibles que par GET, il n'en reste pas moins qu'elles peuvent être modifiées facilement par l'utilisateur.

La règle est de considérer toutes les données provenant d'un utilisateur (ou d'un navigateur si tu préfères) comme dangereuses et les traiter comme tel.
Modifié par Tony Monast (30 Apr 2011 - 16:32)
Merci de ces précisions. Je ferai tous les contrôles qui pourront être faits sur l'ensemble des variables que j'utiliserai.

Merci encore pour ce conseil

À trait bientôt sur ce forum.