Récupérer les valeurs des champs de saisie

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 : Récupérer les valeurs des champs de saisie

par Tracker » 26 oct. 2007, 18:00

pour la fonction serialize() je croi qu'il faut l utilisé surtout dans des cas ou vous avez un objet qui posséde des attributs objet et ce dernier(l'attribut objet) aussi pe avoir des attributs objet et ainsi de suite..
Non et c'est ce que je n'ai pas dû réussir à expliquer précedemment. Pour que tu en sois convaincu, fais un test !!

Pour conclure, une fois pour toutes, sérialiser des objects dans la session ne sert à rien du tout, c'est même une source d'erreurs dans certains cas (clonage d'instances).


Tracker.

par Invité » 26 oct. 2007, 17:48

Salut, je m excuse pour le retard de reponce en fait j etais un ptit pe occupé :) bref tres merci bcp pour l exemple :) pour la fonction serialize() je croi qu'il faut l utilisé surtout dans des cas ou vous avez un objet qui posséde des attributs objet et ce dernier(l'attribut objet) aussi pe avoir des attributs objet et ainsi de suite..

par Tracker » 26 oct. 2007, 13:37

Re,

Je t'ai fait un petit exemple pour t'aider à comprendre le principe.
Pour tester, copie les deux fichiers chez toi dans le même dossier, et ouvre un navigateur sur main.php

main.php
<?php
function __autoload($class_name) { require_once './'.$class_name.'.php'; }
session_start();
header('content-type: text/html charset=utf-8');

if(empty($_SESSION['textbox1'])) $_SESSION['textbox1'] = new TextBox('Bonjour');
if(empty($_SESSION['textbox2'])) $_SESSION['textbox2'] = new TextBox('PHPFrance');
	
?><!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="en" lang="en">
	<body>
		<form action="./main.php" method="post">
			<?php $_SESSION['textbox1']->render() ?>
			<br/> 
			<?php $_SESSION['textbox2']->render() ?>
			<br/> 
			<?php 
echo htmlspecialchars(
	$_SESSION['textbox1']->getValue().
	' '.
	$_SESSION['textbox2']->getValue()
	, ENT_NOQUOTES, 'UTF-8'); ?>
			<input type="submit" />
		</form>
	</body>
</html>
TextBox.php
<?php
class TextBox
{
	private $_value;
	private $_id;
	public function __construct($value)
	{
		if(empty($_SESSION['ctr'])) $_SESSION['ctr'] = 0;
		$this->_id = '_'.($_SESSION['ctr']++);
		$this->_value = $value;
	}
	
	public function render()
	{
		$v = htmlspecialchars($this->_value, ENT_COMPAT, 'UTF-8');
		echo <<<HTML
<input name="$this->_id" type="text" value="$v" />
HTML;
	}
	
	public function getValue() { return $this->_value; }
	
	public function __wakeup()
	{
		if(array_key_exists($this->_id, $_POST))
			$this->_value = get_magic_quotes_gpc() ? stripslashes($_POST[$this->_id]) : $_POST[$this->_id];
	}
}
?>

Tracker.

par Tracker » 26 oct. 2007, 12:06

salut, tu peux utilisé une variable de session pour garder persistants les objets qui tu cre.. pensé a utiliser la fonction php serialize(votreObjet) pour créer l objet dans la session et unserialize() pour le recuperer...
ex: dans page 1 tu met $_session['obj']=serialize(votreObjet); et tu le recupere par la suite dasn page 2 obj=unserialize($_session['obj']);
Salut,

Pourquoi serialize(...) ??
Php en fin d'exécution du script sérialise $_SESSION, donc tout ce qu'il contient dans un fichier. la (de)sérialisation est récursive!!!

Pour résumer, pas besoin de sérialiser/désérialiser EXPLICITEMENT, les codes suivants fonctionnent:
// Première page:
session_start();
require_once('MonObjet.php');
$_SESSION['MonObjet'] = new MonObjet();

// Seconde page:
session_start();
require_once('MonObjet.php');
var_dump($_SESSION['MonObjet']);

Tracker.

par Invité » 26 oct. 2007, 11:39

salut, tu peux utilisé une variable de session pour garder persistants les objets qui tu cre.. pensé a utiliser la fonction php serialize(votreObjet) pour créer l objet dans la session et unserialize() pour le recuperer...
ex: dans page 1 tu met $_session['obj']=serialize(votreObjet); et tu le recupere par la suite dasn page 2 obj=unserialize($_session['obj']);

par Calimero » 25 oct. 2007, 12:07

Bonjour,

Il faut que tu transmettes les valeurs des champs à cette classe qui construit le rendu HTML. Soit tu les passes en paramètres lors de la création de l'objet (donc dans le new() ), soit tu crées une ou plusieurs méthodes pour appliquer les valeurs.

par simane » 25 oct. 2007, 11:17

Salut,

Mon problème est: lorsque je crée tous mes fichiers comme étant des classes, je ne parviens pas à récupérer les valeurs des champs de saisi si je passe sur une autre page. Les valeurs de ces champs sont vides puisque je fais un "new" de la classe qui correspond à la page d'où je viens

Quelqu’un a une idée?

Help please.

Cordialement.