Récupérer les données d'un formulaire pour faire des cookies

Statut
N'est pas ouverte pour d'autres réponses.

DeScH

AstaLaVista
Salut
Qq1 saurait m'expliquer ce qui cloche à mon code? Aucun cookie ne s'enregistre. Quand je ne mets pas de variables, ça marche sans problèmes :s
Merci

<?php
if (isset($_POST['username']) AND isset($_POST['password']))
{
$username = $HTTP_POST_VARS['username'];
$password = $HTTP_POST_VARS['password'];
?>
<?php
$timestamp_expire = time() + 365*24*3600; // Le cookie expirera dans un an
$_COOKIE('username', $username, $timestamp_expire); // On écrit un cookie
$_COOKIE('password', $password, $timestamp_expire); // On écrit un autre cookie...
}
?>
<body>
<br> <h3>Vous connecter
</h3>
<div class="element_menu">

<p>
<form action="test.php" method="get">
<div align="left">Login:<br>
<input name="username" type="text" size="12">
<br>
Password
<br>
<input name="password" type="password" value="" size="12">
<br>
</div>
<p align="left">

<input type="submit" class="button" name="Se connecter" value="Envoyer">&nbsp;
</p>
</form>
</div>
</body>
 

k o D

Elite
C'est

setcookie('username', $username, $timestamp_expire);


$_COOKIE[username] donnera la valeur de la variable username dans ton cookie.
Enfin essaye ainsi ;)

Edit:
De même, pourquoi utilises-tu la superglobale $HTTP_POST_VARS[] alors que tu utilises $_POST[] juste au-dessus?

(je peux me tromper, çà fait longtemps que je n'ai plus fait de PHP, et les nouvelles normes PHP5 je ne les connais pas o_O )
 
1er
OP
DeScH

DeScH

AstaLaVista
C'est trouvé, j'ai mis get à la place de post :baille:
 
1er
OP
DeScH

DeScH

AstaLaVista
J'ai encore un problème :s
Je n'arrive pas à mettre en parallele le mot de passe et le nom d'utilisateur que j'ai enregistré dans le cookie avec la base de donnée. Quelqu'un saurait m'expliquer?
 

II phl II

Touriste
qu'appelles-tu mettre en // ?

Enregistrer username et pass dans la DB ?
Vérifier que username et pass existe dans la DB ?
Autre chose ?
 
1er
OP
DeScH

DeScH

AstaLaVista
En fait, je veux récupérer le nom d'utilisateur et le mot de passe d'un formulaire créé dans ma page, je veux en faire un cookie
si le cookie correspond au login dans la bae de donnée, il se connectera avec son menu
sinon il réaffichera le formulaire pour se conecter
J'y arrive en sessions, mais pas moyen en cookie
 

II phl II

Touriste
ta page devrait ressembler à ça :

<?php
if (isset($_POST['username']) AND isset($_POST['password']))
{
$username = $_POST['username'];
$password = $_POST['password'];

$timestamp_expire = time() + 365*24*3600; // Le cookie expirera dans un an
setCOOKIE('username', $username, $timestamp_expire); // On écrit un cookie
setCOOKIE('password', $password, $timestamp_expire); // On écrit un autre cookie...

echo '2 cookies ont été enregistré';
exit;

}
?>
<body>
<br> <h3>Vous connecter
</h3>
<div class="element_menu">

<p>
<form action="cookies.php" method="post">
<div align="left">Login:<br>
<input name="username" type="text" size="12">
<br>
Password
<br>
<input name="password" type="password" value="" size="12">
<br>
</div>
<p align="left">

<input type="submit" class="button" name="Se connecter" value="Envoyer">&nbsp;
</p>
</form>
</div>
</body>

J'ai mis en gras ce que j'ai changé

Donc il faut bien mettre setcookie et pas $_COOKIE pour créer le cookie
Cette page sert à créer 2 cookies à partir d'un formulaire

Il te faudrait donc au préalable une page (verif.php par expl) qui vérifierait l'existence de ces 2 cookies :
- s'ils existent : on récupère la valeur de ces 2 cookies grâce à $_COOKIE['nom_cookie'] puis on compare ces valeurs avec celles qu'on a dans la DB (requette SQL + comparaison)
- s'ils n'existent pas : on les crée puis on renvoie l'utilisateur vers la page verif.php (qui va détecter les 2 cookies, comparer leur valeur et le logguer si ça correspond avec la DB)
 
1er
OP
DeScH

DeScH

AstaLaVista
Merci Phl, J'ai fait comme ça mais j'ai mis dans le meme fichier en fait.
 

II phl II

Touriste
de rien, content pour toi si tout fonctionne =]
 
1er
OP
DeScH

DeScH

AstaLaVista
En fait j'ai encore un petit problème:

<?php include('config.php');?>
<?php

if (isset($_POST['username']) AND isset($_POST['password']))
{
$username = $_POST['username'];
$user_password = md5($_POST['password']);
$timestamp_expire = time() + 365*24*3600; // Le cookie expirera dans un an



mysql_connect($dbhost, $dbuser, $dbpasswd);
mysql_select_db($dbname, $dbprotect);
$verif_query=sprintf("SELECT * FROM phpbb_users WHERE username='$username' AND user_password='$user_password'"); // requête sur la base administrateurs
$verif = mysql_query($verif_query, $dbprotect) or die(mysql_error());
$row_verif = mysql_fetch_assoc($verif);
$username1 = mysql_num_rows($verif);

if ($username1) { // On test s'il y a un utilisateur correspondant

// déclaration des variables de session
setcookie("username",$username, $timestamp_expire );
setcookie("user_pass",$user_password,$timestamp_expire );
$_COOKIE['username'] = $row_verif['username']; // Son Login
$_COOKIE['user_password'] = $row_verif['user_password']; // Son mot de passe (à éviter)
$_COOKIE['user_level'] = $row_verif['user_level']; // le privilège de l'utilisateur (permet de définir des niveaux d'utilisateur)

header("Location:test.php"); // redirection si OK
}
else {
header("Location:test.php?erreur=username"); // redirection si utilisateur non reconnu
}
}
mysql_close();

// GESTION DE LA Déconnexion
if(isset($_GET['erreur']) && $_GET['erreur'] == 'logout'){ // Test sur les paramètres d'URL qui permettront d'identifier un "contexte" de déconnexion
setcookie('username'); // exemple 1
setcookie('user_pass'); // exemple 1
header("Location:test.php?erreur=delog");
}
?>

<head>
<link rel="stylesheet" media="screen" type="text/css" title="style" href="stylemenu.css"/>
<style type="text/css">
<!--
.Style2 {font-size: 9}
-->
</style>
</head>

<body>
<br> <h3>Vous connecter
</h3>
<div class="element_menu">
<?php
if ($_COOKIE['username'] and $_COOKIE['user_pass']){ ?>
<p:colere:font color="#C0C0C0">Bienvenue <?php echo $_COOKIE['username']; ?>,
vous êtes connecté &nbsp;</font>
<p:colere:a href="gestion/accueil.php">Votre menu </a>
<p>
<form method="POST" action="test.php?erreur=logout">
<p align="center">
<input type="submit" class="button" name="deconnection" value="Déconnection">
</p>
</form>
<p>


<?php }
else
{ ?>
<form action="test.php" method="post">
<div align="left">Login:<br>
<input name="username" type="text" size="12">
<br>
Password:<br>
<input name="password" type="password" value="" size="12">
<br>
</div>
<p align="left">

<input type="submit" class="button" name="Se connecter" value="Se connecter">&nbsp;

</form>
<br>
<br>
<span class="Style2":colere:a href="/forum/profile.php?mode=register" class="Style3"> Si vous n'êtes pas encore membre de Planetnfs,
cliquez ici</a> <font color="#999999":colere:/font:colere:font color="#999999":colere:/font:colere:/span:colere:font color="#999999"> <br:colere:br>

<?php } ?>

<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "username")) { // Affiche l'erreur ?:colere:span class="Style5">Login
ou mot de passe incorrect</span> <?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "delog")) { // Affiche l'erreur ?>
</span:colere:/font>
<span class="Style2":colere:font style="font-size: 9 pts">Déconnexion
réussie... A bientôt !</font:colere:/span:colere:font style="font-size: 9pt"> <?php } else {?>
</font:colere:/font>

<?php } ?>
<?php if(isset($_GET['erreur']) && ($_GET['erreur'] == "intru")) { // Affiche l'erreur ?>
<span class="Style5">vous
n'avez pas les droits pour afficher cette page </span>

<?php } ?>
</div>


Il me met une erreur à la ligne que j'ai mis en gras:
Il dit :

Notice: Undefined index: username in c:\program files\easyphp1-7\www\nfsmwv4\menu.php on line 58

Pourtant ma variable est bien déclaré plus haut. Je ne comprend pas lol
(Je suis un noob en php encore, j'apprend tout moi meme la ^^)


PS: quand je me suis connecté et déconnecté, ça marche.
 

II phl II

Touriste
essaye p-e en mettant la ligne sous cette forme :

if (isset($_COOKIE['username']) AND isset($_COOKIE['password']))
{
}
 
1er
OP
DeScH

DeScH

AstaLaVista
il ne se connecte meme pas en mettant ca :-s
 
Ton cookie n'est pas automatiquement créé ... Voilà, le problème.

Si je peux me permettre, indente ton code.
Tu le commentes de façon assez dense bien que certaines choses sont parfois inutile.
Evite d'ouvrir, fermer, ouvrir tes balises.
Essaye de faire toutes tes connexions au début de ta page PHP.
Ne mets jamais de mot de passe et de nom d'utilisateur dans un cookie.
Il est plus facile de jouer avec des ID qu'avec des chaines de caractères (comme un "username" que l'on traduira par "utilisateur")
Le nom de tes variables sont soit en français soit en anglais mais jamais un mix des deux.
N'hésite pas à faire des echos au lieu de fermer tes balises. Tu gagneras, je trouve, en lisibilité.
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut