Les champs caches

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Les champs caches

Re: Les champs caches

par Fredy07 » 27 oct. 2009, 08:40

Un autre test ici:
// je recupere les donnees de la BD:
extract($rows)
 
// je serialize la donnee dont je veux recupere sur l'autre page (counter)
$counter = serialize($counter);
var_dump($counter); // affiche quelque chose comme: string(8) "s:1:"1";" string(8) "s:1:"1";" string(8) "s:1:"0";" string(8) "s:1:"0";"
 
// ce que je veux passer sur l'autre page est: 1, 1, 0.. la 3eme position apres s
 
echo $counter; // j'affiche mes donnees sur un tableau
 
// ici je construit un formulaire:
echo '<form name="form1" method="post" action="listen.php">
<input name="counter" type="hidden" value="'.$counter.'" >
  <input type="submit" name="Submit" value="go">
</form>';
 
// voila je passe a la page2, listen.php
 
$counter = $_POST["counter"];
var_dump($counter); // NE retourne rien
 

Re: Les champs caches

par FuZZyLine » 23 oct. 2009, 08:53

Salut,
FuZZyLine: A vrai dire je ne copie / colle pas les code, j'essaie de les adapter et les comprendre, je vais le tester en mot a mot et reessayer a nouveau, mais ce que j'ai compris de ton code:
- On tests si c'est un tableau ou string,
- On le seialize,
- On incremente le compteur
- On le stock dans une session pour le passer de page a page,
- On le unserialize,
- On affiche le compteur incrementer.
Alors dans mon cas, quand j'ai fait var_dump, et j'ai teste avec is_string, j'ai recu TRUE, ca veut dire que c'est une string, ce que j'ai pense c'est que serialize et unserialize fonctionne juste avec les tableaux.
Merci
Un modèle est présent pour être étudié et comprendre son fonctionnement.
Si cela avait été un script complêt & finalisé je t'aurai facturé la prestation ;)
Désolé de te l'avoir proposé lol

Piste : Tu dis toi même que ce doit être un Array() donc ton problème est en amont.
C'est au niveau de ton assignation qu'il y a cafouillage. Ta variable disparait donc reprend
"tout" depuis le début et pose des tests...

...Bref, bye.

Re: Les champs caches

par Fredy07 » 23 oct. 2009, 03:34

Voila le resultat de ton code:
Array ( )

Re: Les champs caches

par Fredy07 » 23 oct. 2009, 02:18

FuZZyLine: A vrai dire je ne copie / colle pas les code, j'essaie de les adapter et les comprendre, je vais le tester en mot a mot et reessayer a nouveau, mais ce que j'ai compris de ton code:

- On tests si c'est un tableau ou string,
- On le seialize,
- On incremente le compteur
- On le stock dans une session pour le passer de page a page,
- On le unserialize,
- On affiche le compteur incrementer.

Alors dans mon cas, quand j'ai fait var_dump, et j'ai teste avec is_string, j'ai recu TRUE, ca veut dire que c'est une string, ce que j'ai pense c'est que serialize et unserialize fonctionne juste avec les tableaux.

Merci

Re: Les champs caches

par FuZZyLine » 22 oct. 2009, 08:54

Salut,
Et si je fais ce code pour s'assurer que c'est un tableau, il n'affiche rien:
extract ($row_rec);
print_r($counter,TRUE);
et j'ai teste avec: is_string, comme resultat TRUE, donc ce n'est pas une array mais une string
M'est d'avis que tu te goures de variable quand tu passes ton incrémentation.

1) M'es les Warning php actifs
2) Pose un test juste avant et juste après ton incrémentation => echo (ou print_r) Ton_Counter
<?php
if (is_array($arraycounter))
{
   // Point de test
   //
   print_r($arraycounter);

   // Est un tableau
   //
   if (isset($arraycounter["counter"]))
   {
      // Variable existe
      //
      $arraycounter["counter"] = is_numeric($arraycounter["counter"]) ? $arraycounter["counter"] : 0;
   }
}

else 
{
   // N'est pas un tableau
   //
   $arraycounter = Array();
   $arraycounter["counter"] = 0;
}

// Secondf point de test
//
print_r($arraycounter);
.
.
.
?>
Dans le "super-génial-exception..." script que j'ai fais as-tu essayé de remplacer mes variables par les tiennes?

@+

Re: Les champs caches

par Fredy07 » 22 oct. 2009, 02:46

Et si je fais ce code pour s'assurer que c'est un tableau, il n'affiche rien:
	extract ($row_rec);
	
	print_r($counter,TRUE);
et j'ai teste avec: is_string, comme resultat TRUE, donc ce n'est pas une array mais une string

Re: Les champs caches

par fab » 22 oct. 2009, 01:59

Tu le sors d'ou le premier $counter?

Re: Les champs caches

par Fredy07 » 22 oct. 2009, 01:50

J'ai essaye comme ca et ca marche pas :(
if (is_string($counter))
	{
	$arraycounter = unserialize($counter);
	//echo 'array'.$arraycounter.'<br>';
	$arraycounter["counter"] = isset($arraycounter["counter"]) ? $arraycounter["counter"]+1 : 0;
	//echo $arraycounter;
	
	$show_counter= serialize($arraycounter);
	
	echo $show_counter;
	$_SESSION["counter"] = $arraycounter;	
	}

Re: Les champs caches

par FuZZyLine » 20 oct. 2009, 09:27

Salut,

Model d'utilisation de la fonction serial/unserial liée aux sessions:
<?php

session_start();

if (isset($_SESSION["modal"]))
{
   echo "Session encours...<br>";

   // Flag de traitement
   //
   $bfWork = true;

   $modal = $_SESSION["modal"];

   // Si la variable est un tableau
   //
   if (is_array($modal))
   {
      // Marque le flag, traitement en cours
      //
      $bfWork = false;

      // Note l'action présente
      //
      $modal["from"] = "Array";

      // Incrémente le compteur, s'il n'existe pas le créé
      //
      $modal["counter"] = isset($modal["counter"]) ? $modal["counter"]+1 : 0;

      // Conversion au Format chaine
      //
      $strModal = serialize($modal);

      // Assignation du tableau à la variable session
      //
      $_SESSION["modal"] = $strModal;

      // Affiche le tableau et la chaine
      //
      print_r($modal);      
      echo "<br>Chaine : > ".$strModal;
   }

   // Si la variable est une chaine
   //
   else if (is_string($modal))
   {
      // Marque le flag, traitement en cours
      //
      $bfWork = false;

      // Conversion au Format tableau
      //
      $arrayModal = unserialize($modal);

      // Incrémente le compteur, s'il n'existe pas le créé
      //
      $arrayModal["counter"] = isset($arrayModal["counter"]) ? $arrayModal["counter"]+1 : 0;

      // Note l'action présente
      //
      $arrayModal["from"] = "String";

      // Affiche le tableau résultant et la chaine recue
      //
      print_r($arrayModal);
      echo "<br>Chaine : > ".$modal;

      // Assignation de la chaine à la variable session
      //
      $_SESSION["modal"] = $arrayModal;
   }

   // Ni l'un ni l'autre
   //
   if ($bfWork) die("Ni array, ni string...!");

   die("Réussite de la fonction...");
}

else
{
      $_SESSION["modal"] = Array("Matin" => "Bonjour", "Soir" => "Bonsoir");
      die("Session créé...");
}
?>
Biensur, ca reste un exemple mais ca marche, peut-être, peux-tu t'en inspirer pour ce que tu
veux faire. Ca ne répond pas à toutes les questions mais peut mettre sur la piste.

@+ bon code ;)

PS: Y a quelques variables inutiles et peu de tests mais ca reste un model d'exemple ;)

Re: Les champs caches

par Fredy07 » 20 oct. 2009, 05:21

Pour quelque chose de clair va voir : http://www.phpdebutant.org/article11.php
J'ai fait ca:
	$counter			= $row_rec['counter'];
// afficher la premiere occurence
	echo $counter[0];
ca me retourne rien

Re: Les champs caches

par fab » 20 oct. 2009, 01:56

Pour quelque chose de clair va voir : http://www.phpdebutant.org/article11.php

Re: Les champs caches

par Fredy07 » 20 oct. 2009, 01:41

Je pense que c'est un peu complique ce truc la :x

Re: Les champs caches

par fab » 19 oct. 2009, 12:51

un echo d'un array ??? Y a rien qui te choques? Ca t'affiche quoi?

Re: Les champs caches

par Fredy07 » 19 oct. 2009, 12:44

$counter est censé être un array() si je comprend bien? Dans ce cas avant de la stocker en session utilise la fonction serialize() et quand tu l'as récupéré pour restitué ça sous la forme d'un array unserialize()
Oui c'est une array, j'ai mis le code suivant:

page1.php
extract ($row_rec);

$show_counter =	serialize ($row_rec['counter']);

$_SESSION['show_counter']	= $show_counter; // on stock le nom de listen
et page2.php
$show_counter = $_SESSION['show_counter]; // on stock le nom de listen

$final = unserialize ($show_counter);
echo $final;
ca ne me retourne pas la meme valeur.

Re: Les champs caches

par fab » 19 oct. 2009, 10:31

$counter est censé être un array() si je comprend bien? Dans ce cas avant de la stocker en session utilise la fonction serialize() et quand tu l'as récupéré pour restitué ça sous la forme d'un array unserialize()