Bonjour. Je voudrai faire en sorte que mes membres puissent remplir un formulaire pour ajouter un article ou autre. Je souhaiterai afficher dans un champs hidden le pseudo et l'id de l'utilisateur connecté.
Sauf que quand je le fait ça ma marque toujours le premier. Je me tourne donc vers vous. Merci d'avance.
Ok impeccable, bon ton code est pas top mais on peut en faire quelque chose c'est déjà sa xD.
Alors en faite tout en haut la première ligne doit être :
session_start();
c'est obligatoire.
Ensuite dans ton accueil.php fait un
session_start(); //Première ligne de ton code
print_r($_SESSION);
et dis moi ce que sa retourne.
Variable de session.
Je te conseille de lire ce tutoriel: http://www.siteduzero.com/tutoriel-3-69651-creer-un-espace-membre-pour-son-site.html
Bonne journée.
J'ai répondu à une question de ce type je t'y renvoi donc : http://www.grafikart.fr/questions/151
J'ai regarder juste après, j'ai donc testé mais j'ai une erreur. Je vais retenter et je vous tien au courant ;).
Notice: Undefined variable: pseudo in ajout-ep.php on line 60
Notice: Undefined variable: id in ajout-ep.php on line 60
Je vous montre le code:
<?php
//On se connecte a la Base de donnee
session_start(); //Démarrage de session
$_SESSION'pseudo'] = array('pseudo' => $pseudo, 'id' => $id); //Un tableau si tu veux passer d'autres arguments
mysql_connect('localhost', 'swholocron', ' *********');
mysql_select_db('swholocron_encyclopedie');
//On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
?>
<?php
//Si lutilisateur est connecte, on lui donne un lien pour ajouter un article
if(isset($_SESSION'pseudo']))
{
?>
<?php
echo $_SESSION'pseudo']'pseudo']; //Affichage du nom
?>
C'est simplement que tes variables $pseudo et $id n'existent pas encore ligne 5 et que tu les assigne quand même à des cases du tableau.
Je dois donc mettre quoi ? :s
J'ai jamais utilisé les session et en php je suis pas pro ^^.
Tu pourrais m'expliquer ce que tu veux faire mais en bien détaillé ? Ce qu'il se passe sur ton application pas à pas stp ;)
Alors.
Sauf que quand je fais avec les sessions (code plus haut) j'ai le pseudo qui s'affiche en double, l'erreur que j'ai posté plus haut s'affiche et l'id est toujours 1.
Ok alors il faut procéder comme ceci :
Au moment où tu vérifie si l'utilisateur a le droit de s'identifier etc... Tu fais :
//Si l'utilisateur peux avoir accès tu récupères l'id et le pseudo dans la bdd
$sql = "SELECT * FROM user WHERE pseudo = $_POST'pseudo'] AND pass = $_POST'pass']";
$req = mysql_query($sql);
$user = mysql_fetch_assoc($req);
session_start();
$_SESSION'User'] = array('id' => $user'id'], 'pseudo' => $user'pseudo']);
Du coup dans ton formulaire après tu fais :
<input type="hidden" name="pseudo" value="<?php echo $_SESSION'User']'pseudo']; ?>"/>
<input type="hidden" name="id" value="<?php echo $_SESSION'User']'id']; ?>"/>
Voila, c'est en gros le principe que tu dois adopter ;)
Marche pas....
<?php
//On se connecte a la Base de donnee
mysql_connect('localhost', 'swholocron', ' *********');
mysql_select_db('swholocron_encyclopedie');
//On affiche un message de bienvenue, si lutilisateur est connecte, on affiche son pseudo
?>
<?php
//Si lutilisateur est connecte, on lui donne un lien pour ajouter un article
if(isset($_SESSION'pseudo']))
{
?>
<?php
//Si l'utilisateur peux avoir accès tu récupères l'id et le pseudo dans la bdd
$sql = "SELECT * FROM utilisateurs WHERE pseudo = $_POST'pseudo'] AND pass = $_POST'pass']";
$req = mysql_query($sql);
$user = mysql_fetch_assoc($req);
session_start();
$_SESSION'User'] = array('id' => $user'id'], 'pseudo' => $user'pseudo']);
?>
<form action="ajout-art_1.php" method="post">
<input type="hidden" name="pseudo" value="<?php echo $_SESSION'User']'pseudo']; ?>"/>
<input type="hidden" name="id" value="<?php echo $_SESSION'User']'id']; ?>"/>
Erreur:
Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/serietvfilms/public_html/membres/ajout-ep.php on line 71
Tu as récopié texto ce que j'ai dis c'est normal xD, c'était juste pour te mettre sur la voix. A la place de $_POST'...'] faut mettre tes variable que tu récupére du formulaire de login
Nom d'utilisateur:<input type="text" name="pseudo" value="<?php if(isset($_POST'pseudo'])){echo $_POST'pseudo'];} ?>" /><br />
Mot de passe:<input type="password" name="pass" /><br />
C'est un script de supportduweb.com
J'ai utilisé les même...
Sa devient très compliqué la xD. En fait c'est pas compliqué. Quand tu te loggue il faut que tu mettre en session le pseudo et l'id de la personne. Et quand tu veux ajouter l'article tu as juste à récupérer la session en cours
<div class="corp_ctn">
<?php
//On se connecte a la Base de donnee
include('mysqlcnn.php');
//Si lutilisateur est connecte, on le deconecte
if(isset($_SESSION'pseudo']))
{
//On le deconecte en supprimant simplement la session pseudo
unset($_SESSION'pseudo']);
?>
Vous avez bien été déconnecté.<br />
<a href="accueil.php">Accueil</a>
<?php
}
else
{
//On verifie si le formulaire a ete envoye
if(isset($_POST'pseudo'], $_POST'pass']))
{
//On echappe les variables pour pouvoir les mettre dans des requetes SQL
if(get_magic_quotes_gpc())
{
$pseudo = mysql_real_escape_string(stripslashes($_POST'pseudo']));
$pass = stripslashes($_POST'pass']);
}
else
{
$pseudo = mysql_real_escape_string($_POST'pseudo']);
$pass = $_POST'pass'];
}
//On recupere le mot de passe de lutilisateur
$req = mysql_query('select pass from utilisateurs where pseudo="'.$pseudo.'"');
$dn = mysql_fetch_array($req);
//On le compare a celui quil a entre et on verifie si le membre existe
if($dn'pass']==$pass and mysql_num_rows($req)>0)
{
//Si le mot de passe, on ne vas pas afficher le formulaire
$form = false;
//On enregistre son pseudo dans les sessions
$_SESSION'pseudo'] = $_POST'pseudo'];
?>
<?php
echo "Vous avez bien été connecté.";
header("Location: accueil.php");
?>
<?php
}
else
{
//Sinon, on indique que la combinaison nest pas bonne
$form = true;
$message = 'La combinaison que vous avez entré n\'est pas bonne.';
}
}
else
{
$form = true;
}
if($form)
{
//On affiche un message sil y a lieu
if(isset($message))
{
echo '<strong>'.$message.'</strong>';
}
//On affiche le formulaire
?>
<form action="connection.php" method="post">
Veuillez entrer vos identifiants pour vous connecter:<br />
Nom d'utilisateur:<input type="text" name="pseudo" value="<?php if(isset($_POST'pseudo'])){echo $_POST'pseudo'];} ?>" /><br />
Mot de passe:<input type="password" name="pass" /><br />
<input type="submit" value="Connection" />
</form>
<?php
}
}
?>
</div>
</div>
Avant l'include ? de la page de connexion, l'include y'a:
"session_start();
<ICI lES INFOS POUR SE CONNECTER A LA BDD>"
Ok, dans ce cas la session est déjà lancée donc pas besoin de session_start(), comme j'ai dit. Par contre ton include doit être tout en haut. Un session_start() doit être lancé avec tout contenu. Il faut que se soit la première ligne de ton code.
Enfait j'ai enlevé le session_start de l'include.
Je l'ai mis sur la première ligne de l'accueil ensuite y'a la connection a la BDD et ensuite print_r($_SESSION);
Et j'ai: "Array ( ) Bonjour,..."
A bin enfin ^^ Bon bin a toi de continuer alors ;) Bonne chance et oublie pas de valider la question.