Vous n'êtes pas identifié(e).
Pages : 1
Merci de votre réponse mais cela ne résout pas mon problème de variable non défini.
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'].' ';
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.
Pages : 1