PHP|Débutant :: Forums

Advertisement

Besoin d'aide ? N'hésitez pas, mais respectez les règles

Vous n'êtes pas identifié(e).

#1 Re : Forum Général PHP » [php] ma session ne fonctionne pas » 28-11-2018 13:40:24

Merci de votre réponse mais cela ne résout pas mon problème de variable non défini.

#2 Forum Général PHP » [php] ma session ne fonctionne pas » 28-11-2018 13:40:24

lyllouvpl
Réponses : 2

Bonjour je débute en php et je n' arrive pas à créer une session qui fonctionne.
j'ai comme erreur:
Notice: Undefined index: pseudo in C:\wamp64\wamp-instal\www\site-test\tp_minichat\index.php on line 44

si je met var_dump($donnee);
j'ai comme réponse:
C:\wamp64\wamp-instal\www\site-test\tp_minichat\index.php:41:
array (size=6)
  '.$_SESSION[pseudo].' => string '.$_SESSION[pseudo].' (length=19)
  0 => string '.$_SESSION[pseudo].' (length=19)
  'message' => string 'Message... kkkkkkkkkkkkkkkk oooooooooooooo mmmmmmmmmmmmmmm oooooooooooooooooo' (length=77)
  1 => string 'Message... kkkkkkkkkkkkkkkk oooooooooooooo mmmmmmmmmmmmmmm oooooooooooooooooo' (length=77)
  'dath' => string '20/11/2018 12h37min55s' (length=22)
  2 => string '20/11/2018 12h37min55s' (length=22)

mais si je met var_dump($_SESSION[pseudo]);
Warning: Use of undefined constant pseudo - assumed 'pseudo' (this will throw an Error in a future version of PHP) in C:\wamp64\wamp-instal\www\site-test\tp_minichat\index.php on line 41

Mon fichier index.php
<?php
session_start();
if (!empty($_POST['pseudo'])) // vérifie que pseudo existe ET n'est pas vide
{
$_SESSION['pseudo']=$_POST['pseudo'];
}
?>
<!Doctype html>
<html>
<head>
<meta charset='utf-8'/>
<title>TP mini chat</title>
<link rel="stylesheet" type="text/css" href="style_minichat.css">
</head>
<body>

<h1>Mini chat</h1>

<form method='post' action='traitement.php'>
<label for='pseudo'>Pseudo:</label><input type='text' name='pseudo' id='pseudo' value=''><br/>
<label for='msg'>Message:</label><textarea name='msg' id='msg' cols='27'>Message...</textarea>
<input type='submit' value="Envoyer">

</form>

<div class="message">
<div class="message1">
<?php
try{
$bdd=new PDO('mysql: host=localhost; dbname=test; charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e){
die('Erreur:' .$e->getMessage());
}

$req=$bdd->query('SELECT \'.$_SESSION[pseudo].\', message, DATE_FORMAT(date_post,"%d/%m/%Y %Hh%imin%ss") AS dath FROM TP_mini_chat ORDER BY id DESC LIMIT 0,20')
or die(print_r($bdd->errorInfo()));
while($donnee=$req->fetch())
{



echo ''.$donnee['dath'].' &nbsp;&nbsp;&nbsp;';
echo 'Pseudo:<strong> '.strip_tags($_SESSION['pseudo']).'</strong> <br/>';

echo 'Message: '.nl2br(strip_tags($donnee['message'])).' <br/><br/>';



}
$req->closeCursor();

?>
</div>
</div>
<?php
session_destroy();
?>
</body>
</html>





mon fichier traitement.php :
<?php
session_start();
if (!empty($_POST['pseudo'])) // vérifie que pseudo existe ET n'est pas vide
{
$_SESSION['pseudo']=$_POST['pseudo'];
}
try{
$bdd=new PDO('mysql: host=localhost; dbname=test; charset=utf8', 'root', '', array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
}
catch(Exception $e){
die('Erreur:' .$e->getMessage());
}

$req=$bdd->prepare('INSERT INTO TP_mini_chat (pseudo, message,) VALUES (:pseudo,:msg)');
if ($_SESSION['pseudo']=NULL){
$req->execute(array('pseudo'=>$_POST['pseudo'],'msg'=>$_POST['msg']));
}
if (!empty($_SESSION['pseudo'])){
$req->execute(array('pseudo'=>$_SESSION['pseudo'],'msg'=>$_POST['msg']));
}









header('Location:index.php');
session_destroy();
?>


Comment faire pour que ma $_SESSION[pseudo] fonctionne?
Et es une bonne pratique d'appeler la session dans la requête? Es ce qu'il faut que je mette une autre requête sans session, donc dans une condition? Es ce que j'ai bien écrit ma requête avec session???
Merci de votre aide.

Pied de page des forums

Propulsé par FluxBB