Sessions php avec Joomla! Besoin d'aide
Résolu
Bonjour,
je travaille sur un site par l'intermédiaire de Joomla!.Et je voulais savoir si sur Joomla! les sessions fonctionnait autrement que sur un site autre , ou meme si Joomla! utilisait son propre système de session.
Car, dans mon script, je souhaite récupérer la suite de chiffres générée par un captcha avec une variable de session : $_SESSION['nbr'], pour ensuite la comparer avec le code rentrer par l'utilisateur:$_POST['verif__code'] (envoyé donc par un formulaire)
Cependant, lorsque je met session_start() en debut de script, il me signale que :
"Notice: A session had already been started - ignoring session_start()."
Et il ne trouve pas la variable 'nombre' citée plus haut.Et lorsque je retire session_start(), c'est pas mieu.
J'ai 3 script:
Création du captcha: captchab.php:(je vous met l'essentiel)
Formulaire d'envoi des données: lienb.php
Script de réception et de verif: arrive.php (seulement l'essentiel)
Notez que lorsque je note le chemin complet (par exemple, au lieu de marquer : http://localhost/index.php?option=com_arrive , je marque http://localhost/components/com_arrive/arrive.php) cela marche parfaitement. D'où mon questionnement sur les sessions dans Joomla.
Voila, en espérant trouver de l'aide ici, et n'hésitez pas à signaler les incohérences ou les erreurs bêtes, je débute en php donc ca m'aidera beaucoup.
Merci à vous.
je travaille sur un site par l'intermédiaire de Joomla!.Et je voulais savoir si sur Joomla! les sessions fonctionnait autrement que sur un site autre , ou meme si Joomla! utilisait son propre système de session.
Car, dans mon script, je souhaite récupérer la suite de chiffres générée par un captcha avec une variable de session : $_SESSION['nbr'], pour ensuite la comparer avec le code rentrer par l'utilisateur:$_POST['verif__code'] (envoyé donc par un formulaire)
Cependant, lorsque je met session_start() en debut de script, il me signale que :
"Notice: A session had already been started - ignoring session_start()."
Et il ne trouve pas la variable 'nombre' citée plus haut.Et lorsque je retire session_start(), c'est pas mieu.
J'ai 3 script:
Création du captcha: captchab.php:(je vous met l'essentiel)
header("Content-type: image/png");
session_start();
#
#
#
$nombre = mt_rand(1234567,123456789)+ 1;
#
#
imagestring($image, 5, 30, 75, $nombre, $couleur); //on écrit horizontalement
$_SESSION['nbr']=$nombre;
imagepng($image); //renvoie une image sous format png
imagedestroy($image); //détruit l'image, libérant ainsi de la mémoire
Formulaire d'envoi des données: lienb.php
<html>
<?php header("Content-type: image/png");
defined( '_JEXEC' ) or die( 'Restricted access' );
echo '<br/><h1>Veuiller remplir <strong>tous</strong> les champs ci-dessous.</h1><br/>';
echo '<br\n>';
echo '<A href="http://localhost/index.php?option=com_lien"><br/> <h4>Retour a la page d\'accueil</h4><br/></A>';
//affichage de la date et de l'heure
echo ("<CENTER>");
setlocale(LC_TIME,'fr_FR.utf-8');
print (strftime("%A %e %B %Y à %Hh%M"));
echo ("</CENTER>");
?>
<form action="http://localhost/index.php?option=com_arrive" method="post" enctype="multipart/form-data">
<img src="http://localhost/components/com_captchab" alt="Code de verification">
<p><label>Merci de retaper le code de l'image ci-dessus</label> : <input type="text" name="verif_code" /></p>
<p><h3>Formulaire d'envoi de fichier</h3></p>
Fichier: <input type="file" name="fichier"/><br />
Email : <input type="text" name="email"/><br />
<input type="submit" value="Envoyer les donnees" />
</form>
<a href="http://localhost/index.php?option=com_lienb"><br><h4>Restaurer barre de fichiers</h4></A>
</html>
Script de réception et de verif: arrive.php (seulement l'essentiel)
session_start();
if(isset($_SESSION['nbr']))
{
echo 'Variable declaree';
}
else
{
echo 'Variable non declaree';
}
print_r($_POST['verif_code']);
echo '<br/>';
print_r($_SESSION['nbr']);
$debut_html = '<html>
<head>
<title>Inscription</title>
</head>
<body>
<p>';
$milieu_html = NULL;
$fin_html = '</p>
</body>
</html>';
if(empty($_POST['email']))
{
echo 'Tous les champs doivent etre remplis.';
echo '<a href="Javascript:history.go(-1)">RETOUR</a>';
}
else
{
if(isset($_FILES['fichier']) AND $_FILES['fichier']['error'] == 0)
{
if(empty($_POST['verif_code']))
{
echo 'Tous les champs doivent etre remplis.';
echo '<a href="Javascript:history.go(-1)">RETOUR</a>';
}
###################################################################################
# Si le code est correcte, on passe à la suite.
else
{
if($_POST['verif_code']==$_SESSION['nbr']) #Là où le script bloque
Notez que lorsque je note le chemin complet (par exemple, au lieu de marquer : http://localhost/index.php?option=com_arrive , je marque http://localhost/components/com_arrive/arrive.php) cela marche parfaitement. D'où mon questionnement sur les sessions dans Joomla.
Voila, en espérant trouver de l'aide ici, et n'hésitez pas à signaler les incohérences ou les erreurs bêtes, je débute en php donc ca m'aidera beaucoup.
Merci à vous.
1 réponse
-
Si vous travaillez sous Joomla, l'API de programmation offre plusieurs facilités pour récupérer les valeurs POST/GET et pour travailler avec les sessions :
https://docs.joomla.org/Retrieving_and_Filtering_GET_and_POST_requests_with_JRequest::getVar
Les sessions pour Joomla 1.5:
http://www.thinkbigshot.com/blog/technical/147-using-sessions-in-joomla-15.html
Site en anglais, mais le code est bon.
Bon succès,