Sessions en php

Comment fonctionnent les sections en php et comment créer des variables de session ?

C’est l’objet des trois premiers codes travaillés, accueil.php, autre_page.php et page_fermeture_session.php (codes recopiés en cliquant sur « lire la suite ») créées dans la première partie :

Une capture du contenu du dossier distant. On a déposé les fichier par FTP avec FileZilla

Notez-bien :

  • Tous les fichiers commencent par <?php session_start(); ?> avant tout autre code !
  • Les variables de session sont stockées dans $_SESSION, qui fonctionne un peu comme un dictionnaire python, avec des clés : par exemple $_SESSION['nom'] = "Mohamed";

Cliquer

Comment utiliser ce procédé pour sauvegarder les infos de la base de données et agencer (bientôt) un affichage rotatif ?

C’est l’objet des deux fichiers connexion_bdd.php et affichage_rotatif.php (codes recopiés en cliquant sur « lire la suite ») créées dans la deuxième partie.

Fichier accueil.php

<?php
	session_start();
	$_SESSION['nom'] = "Mohamed";
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Page accueil</title>
</head>
<body>
	<p>
		<?php
			echo "Bonjour " . $_SESSION['nom'] ." !"; 
		?>
	</p>
	<p>
		<?php
			if (isset($_SESSION['compteur'])) {
				// elle existe, je l'incrémente
				$_SESSION['compteur']++;
			} else {
				// elle n'existe pas, je la crée
				$_SESSION['compteur'] = 1;
			}
		?>
		Compteur de visites : 
		<?php 
			echo $_SESSION['compteur'];
		?>
	</p>
	<p>
		<a href="autre_page.php">Clique ici pour l'autre page</a>
	</p>
	<p>
		<a href="affichage_rotatif.php">Clique ici pour la page des infos (bientôt rotative) !</a>
	</p>
	<p>
		<a href="page_fermeture_session.php">Clique ici pour fermer la session</a>
	</p>
</body>
</html>

Fichier autre_page.php

<?php
	session_start();
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Autre page</title>
</head>
<body>
	<p>
		<?php
			$nom = $_SESSION['nom'];
			echo "Bonjour " . $nom ." !"; 
		?>
	</p>
	<p>
		<a href="accueil.php">Retour à l'accueil</a>
	</p>
</body>
</html>

Fichier page_fermeture_session.php

<?php
	session_start();
	session_destroy();
?>

<!DOCTYPE html>
<html>
<head>
	<meta charset="utf-8">
	<title>Autre page</title>
</head>
<body>
	<p>
		Session détruite !
	</p>
	<p>
		<a href="accueil.php">Retour à l'accueil</a>
	</p>
</body>
</html>

Fichier connexion_bdd.php

<?php
	session_start();

	try
	{
		$bdd = new PDO('mysql:host=localhost;dbname=tv;charset=utf8', 'tvuser', 'tv612');
	}
	catch(Exception $e)
	{
	        die('Erreur : '.$e->getMessage());
	}

	$reponse = $bdd->query('SELECT titre, corps, temps FROM infos;');

	// Création d'un tableau vide dans une variable de session
	$_SESSION['tableau'] = array();
	$i = 0; // un indice pour peupler le tableau

	while ($donnees = $reponse->fetch())
	{
		// peupler le tableau
		$_SESSION['tableau'][$i] = $donnees;
		/*
		$_SESSION['tableau'][$i] = array(
			'titre' => $donnees['titre'],
			'corps' => $donnees['corps'],
			'temps' => $donnees['temps']
		);*/
		$i ++;
	}
	$_SESSION['nombre'] = $i;
	$reponse->closeCursor();

?>

Fichier affichage_rotatif.php

<?php
	session_start();
	// déjà récupéré les infos dans le tableau ?
	if ((!isset($_SESSION['tableau'])) || (!isset($_SESSION['nombre']))){
		require "connexion_bdd.php";
	}

	// version temporaire :mieux vendredi
	for($i=0; $i<$_SESSION['nombre'];$i++){
		$tab = $_SESSION['tableau'][$i];
		echo "<h2>". $tab['titre']. "</h2>";
		echo "<p>". $tab['corps']. "</p>";
	}
?>

N'hésitez-pas à poser une question, ou faire avancer le schmilblick

Entrez vos coordonnées ci-dessous ou cliquez sur une icône pour vous connecter:

Logo WordPress.com

Vous commentez à l’aide de votre compte WordPress.com. Déconnexion /  Changer )

Photo Google

Vous commentez à l’aide de votre compte Google. Déconnexion /  Changer )

Image Twitter

Vous commentez à l’aide de votre compte Twitter. Déconnexion /  Changer )

Photo Facebook

Vous commentez à l’aide de votre compte Facebook. Déconnexion /  Changer )

Connexion à %s

Ce site utilise Akismet pour réduire les indésirables. En savoir plus sur la façon dont les données de vos commentaires sont traitées.