Forums Développement Multimédia

Les formations Mediabox
Les formations Mediabox



Faire ses propres fonctions avec PHP : Seconde Partie

Compatible PHP. Cliquer pour en savoir plus sur les compatibilités.Par zebden (Anthony Lombard), le 23 décembre 2007

Dans la première partie, nous avons pu voir comment réaliser une simple fonction qui retourne une valeur quelconque. Dans cette seconde partie, nous allons nous intéresser aux fonctions ne retournant rien, n'ayant pour but que d'exécuter des tâches définies, on définira alors cette fonction par le type Void qui n'a pour but donc de ne rien retourner.

Mise en situation :

Jean Webmaster a codé son espace membre, pour cela, il a utilisé les sessions pour vérifier un certain nombre de paramètres, il a aussi déclaré lors de la connexion, la variable $_SESSION[timerSession'] = time() , time() retournant la date courante au format timestamp.

Pierre Lambda, lui vient de connecter à son espace membre, d'un cybercafé, passe quelques heures sur le site, répond sur les forums tout en discutant sur MSN et regardant les dernières actu sur mediabox. Malheureusement, distrait comme il est, il part sans fermer son explorateur et laisse son espace membre libre de tout accès (exemple comme un autre).

Heureusement Jean, très méthodique, a pensé à cela et a fait une fonction pour vérifier, le laps de temps d'inactivité !

<?php
function setTempsLimitPourMaSession($tempsImparti) {
 
	// Recuperation du timer.
	$timer = isset($_SESSION['timerSession']) ? $_SESSION['timerSession'] : '';
 
	// Nous avons un timer, nous pouvons le tester.
	if($timer) {
 
		/*
		Le but est donc de détruire la session SI
		La dernière insertion de la date (session) ajoute au laps de temps
		imparti est superieur a la date courante retourne par time.
		Si tel n'était pas le cas, nous redefinissons le timer.
		*/
 
		if(round($timer + $tempsImparti) < time()) {
 
			// temps imparti ecoule, nous détruisons
			unset($_SESSION);
			session_destroy();
			}
 
		else {
			// Nous redefinissons le timer.
			$_SESSION['sessionTimer'] = time();
			}
		}
	}
?>

Alors dans la pratique, ça nous donnerait :

<?php
// On démarre la session
session_start();
 
// On inclut notre fonction afin de l'utiliser. 
// (Je ne la mets pas pour éviter le doublon inutile)
 
$dureeDeLaSession = 600; // 600s soit 5 min.
setTempsLimitPourMaSession($dureeDeLaSession);
// OU 
setTempsLimitPourMaSession(600);
 
// Reste du code
?>

Voyez les possibilités offertes par ce genre de fonction, ça évitera bon nombre de copié/collé. Pour le paramètre passé, j'ai volontairement changé la désignation de la variable, pour bien montrer que le nom de la variable importe finalement peu, bien qu'elle doit être explicite dans sa désignation et son but. C'est la valeur retournée qui importe donc (exécuté comme setTempsLimitPourMaSession(600);).

À suivre ...

* Article original sur http://zebden.fr/index.php?2006/03/23/9-faire-ses-propres-fonctions-avec-php-seconde-partie