Vous n'êtes pas identifié(e).
Pages :: 1
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.
Hors ligne
Salut, vire ton "session_destroy();", sa efface tes données de session créés.
Les sessions sont des données un peu comme des cookie, mais pour le serveur, une fois créé, ils resteront actifs un certains temps, mais pour les garder active, vaus mieux éditer souvent les données, voir les actualiser.
Alors tu peux appeler la session ou non au besoin, tu peux simplement assurer de la "survie" de la session en ajoutant une actualisation simple d'une valeur (comme $_SESSION['alive']=rand(0,65535); )
Tu peux aussi l'appeler dans un Ajax/JSon en Javascript pour le garder actif.
Hors ligne
Merci de votre réponse mais cela ne résout pas mon problème de variable non défini.
Hors ligne
Pages :: 1