par
Rathorian » 10 déc. 2011, 22:36
J'ai refait un peu mon code PHP au niveau des cookies, car j'avais fait un peu n'importe quoi...
La ligne qui permet de créer le cookie, je l'ai mise sur la page de traitement (minichat_post.php).
index.php :
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mini Chat</title>
<link rel="stylesheet" media="screen" href="style.css" />
</head>
<body>
<h1>Espace Chat</h1>
<form action="minichat_post.php" method="post">
<p><label for="pseudonyme">Pseudonyme : </label><input type="text" name="pseudonyme" id="pseudonyme" value="<?php echo htmlspecialchars($_COOKIE['pseudonyme'], ENT_QUOTES, 'UTF-8'); ?>" /></p>
<p><label for="message">Message : </label><input type="text" name="message" id="message" /></p>
<p><input type="submit" value="Envoyer" /></p>
</form>
<?php
// On inclue la page de connexion à MySQL.
include_once('connexion.inc.php');
$req = $pdo->query('SELECT * FROM minichat ORDER BY id_chat DESC LIMIT 0, 10');
while ($donnees = $req->fetch())
{
echo '<p><strong>' .htmlspecialchars($donnees['pseudo_chat'], ENT_QUOTES, 'UTF-8'). '</strong> : ' .htmlspecialchars($donnees['message_chat'], ENT_QUOTES, 'UTF-8').'</p>'."\n\n";
}
$req->closeCursor();
?>
</body>
</html>
minichat_post.php :
<?php
if (!isset($_COOKIE['pseudonyme']))
{
setcookie('pseudonyme', $pseudonyme, time() + 1*24*3600, null, null, false, true);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mini Chat</title>
<link rel="stylesheet" media="screen" href="style.css" />
</head>
<body>
<?php
// On inclue la page de connexion à MySQL.
include_once('connexion.inc.php');
if (isset($_POST['pseudonyme']) && isset($_POST['message']))
{
// On supprime les espaces inutiles en début et fin de chaîne.
$pseudonyme = trim($_POST['pseudonyme']);
$message = trim($_POST['message']);
if (!empty($pseudonyme) && !empty($message))
{
// On prépare la requête.
$req = $pdo->prepare('INSERT INTO minichat(pseudo_chat, message_chat) VALUES(:pseudonyme, :message)');
// Puis on insère les données dans la BDD.
$req->execute(array(
':pseudonyme' => $pseudonyme,
':message' => $message
));
// Enfin, on redirige sur la page du formulaire.
header('Location: index.php');
}
else
{
header('Location: index.php');
}
}
else
{
header('Location: index.php');
}
?>
</body>
</html>
Maintenant j'ai une erreur de type : Notice: Undefined index: pseudonyme in C:\wamp\www\cours_php\tp\tp2\index.php on line 14 Call Stack #TimeMemoryFunctionLocation 10.0009676376{main}( )..\index.php:0 " />
Par contre dans la FAQ je n'ai rien trouvé d'intéressant concernant les Cookies...
J'ai refait un peu mon code PHP au niveau des cookies, car j'avais fait un peu n'importe quoi...
La ligne qui permet de créer le cookie, je l'ai mise sur la page de traitement (minichat_post.php).
[b]index.php :[/b]
[php]<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mini Chat</title>
<link rel="stylesheet" media="screen" href="style.css" />
</head>
<body>
<h1>Espace Chat</h1>
<form action="minichat_post.php" method="post">
<p><label for="pseudonyme">Pseudonyme : </label><input type="text" name="pseudonyme" id="pseudonyme" value="<?php echo htmlspecialchars($_COOKIE['pseudonyme'], ENT_QUOTES, 'UTF-8'); ?>" /></p>
<p><label for="message">Message : </label><input type="text" name="message" id="message" /></p>
<p><input type="submit" value="Envoyer" /></p>
</form>
<?php
// On inclue la page de connexion à MySQL.
include_once('connexion.inc.php');
$req = $pdo->query('SELECT * FROM minichat ORDER BY id_chat DESC LIMIT 0, 10');
while ($donnees = $req->fetch())
{
echo '<p><strong>' .htmlspecialchars($donnees['pseudo_chat'], ENT_QUOTES, 'UTF-8'). '</strong> : ' .htmlspecialchars($donnees['message_chat'], ENT_QUOTES, 'UTF-8').'</p>'."\n\n";
}
$req->closeCursor();
?>
</body>
</html>[/php]
[b]minichat_post.php :[/b]
[php]<?php
if (!isset($_COOKIE['pseudonyme']))
{
setcookie('pseudonyme', $pseudonyme, time() + 1*24*3600, null, null, false, true);
}
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Mini Chat</title>
<link rel="stylesheet" media="screen" href="style.css" />
</head>
<body>
<?php
// On inclue la page de connexion à MySQL.
include_once('connexion.inc.php');
if (isset($_POST['pseudonyme']) && isset($_POST['message']))
{
// On supprime les espaces inutiles en début et fin de chaîne.
$pseudonyme = trim($_POST['pseudonyme']);
$message = trim($_POST['message']);
if (!empty($pseudonyme) && !empty($message))
{
// On prépare la requête.
$req = $pdo->prepare('INSERT INTO minichat(pseudo_chat, message_chat) VALUES(:pseudonyme, :message)');
// Puis on insère les données dans la BDD.
$req->execute(array(
':pseudonyme' => $pseudonyme,
':message' => $message
));
// Enfin, on redirige sur la page du formulaire.
header('Location: index.php');
}
else
{
header('Location: index.php');
}
}
else
{
header('Location: index.php');
}
?>
</body>
</html>[/php]
[i]Maintenant j'ai une erreur de type :[/i] Notice: Undefined index: pseudonyme in C:\wamp\www\cours_php\tp\tp2\index.php on line 14 Call Stack #TimeMemoryFunctionLocation 10.0009676376{main}( )..\index.php:0 " />
Par contre dans la FAQ je n'ai rien trouvé d'intéressant concernant les Cookies...