Afficher id et pseudo utilisateur connecter

Par Guilhem, il y a 15 ans


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.

34 réponses

Guilhem, il y a 15 ans

Oui
connexion.php
et
ajout-art.php

mespeche, il y a 15 ans

Colle moi le code de ton connexion.php

Guilhem, il y a 15 ans

J'ai regarder juste après, j'ai donc testé mais j'ai une erreur. Je vais retenter et je vous tien au courant ;).

mespeche, il y a 15 ans

C'est quoi ton erreur ?

Guilhem, il y a 15 ans

Notice: Undefined variable: pseudo in ajout-ep.php on line 60

Notice: Undefined variable: id in ajout-ep.php on line 60

Guilhem, il y a 15 ans

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  
?>
mespeche, il y a 15 ans

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.

Guilhem, il y a 15 ans

Je dois donc mettre quoi ? :s
J'ai jamais utilisé les session et en php je suis pas pro ^^.

mespeche, il y a 15 ans

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 ;)

Guilhem, il y a 15 ans

Alors.

  • Le membre se connecte.
  • Il atterrit sur une page accueil.php
  • Il peut choisir d'éditer son profil ou d'ajouter un article.
  • Pour ajouter un article il arrive sur "ajout-art.php".
  • Et je voudrais que dans le code source dans deux champs hidden il y ai dans le formulaire:
    <input type="hidden" value="PSEUDO_UTILISATEUR"/>
    <input type="hidden" value="ID_UTILISATEUR"/>

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.

mespeche, il y a 15 ans

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 ;)

Guilhem, il y a 15 ans

Ok :) Merci je vais tester et je te dis ! :D

Guilhem, il y a 15 ans

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

mespeche, il y a 15 ans

Il me faudrait peut être la ligne 71 xD

Guilhem, il y a 15 ans

xD Je te dis laquelle c'est la 16.

mespeche, il y a 15 ans

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

Guilhem, il y a 15 ans
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...

mespeche, il y a 15 ans

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

Guilhem, il y a 15 ans

.... Désolé mais je vois pas comment faire :/ xD

mespeche, il y a 15 ans

Tu as deux pages, ta page de login et ta page qui permet d'écrire les articles c'est sa ?

Guilhem, il y a 15 ans
<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>
mespeche, il y a 15 ans

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.

Guilhem, il y a 15 ans

Avant l'include ? de la page de connexion, l'include y'a:

"session_start();
<ICI lES INFOS POUR SE CONNECTER A LA BDD>"

mespeche, il y a 15 ans

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.

Guilhem, il y a 15 ans

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,..."

Guilhem, il y a 15 ans

Je ne suis pas très dégourdi en php :D

mespeche, il y a 15 ans

Ton print_r($_SESSION) est bien dans ta page où tu veux récupérer ton pseudo ?

Guilhem, il y a 15 ans

C'est bon ça marche ! :
Array ( [pseudo] => Keller )

mespeche, il y a 15 ans

A bin enfin ^^ Bon bin a toi de continuer alors ;) Bonne chance et oublie pas de valider la question.

Guilhem, il y a 15 ans

Merci a toi ! :)

Et comment on valide ? xD

mespeche, il y a 15 ans

De rien, l'icône verte à côté de nos messages à droite.

ndiayejp, il y a 15 ans

un tableu de session