problème avec session

Par KiloOctet, il y a 5 ans


Bonjour à tous, j'ai créer un système permettant qu'un utilisateur puisse publier son post, sur ce post on droit de supprimer, s'abonner, editer, ou signaler le post sauf que si moi qui viens de me connecter normalement je devrais avoir que "supprimer(le post), editer. sur les autres post je peux supprimer leurs post j'ai essayer de faire un (if(isset($_SESSION['id])) on affiche supprimer et editer else on affiche les autres option. j'ai tout essayer malheureusement ca ne fonctionne pas ? est-ce que je me suis tromper quelques part ? merci de votre aide.

Voici mon code, la session je l'ai déclarer toute au début:

<?php require '../inc/session.php'; require '../inc/init.php'; setlocale(LC_TIME, 'fra_fra'); session_start(); if(!empty($_SESSION['id']) && !empty($_SESSION['connecte'])) { $req = $pdo->prepare("SELECT * FROM users WHERE id = ? "); $req->execute(array($_SESSION['id'])); $user = $req->fetch(); // dont' touch */ } if(!est_connecte()){ header("Location: http://localhost/xampp/DEv/connexion.php"); exit(); } <?php $req = $pdo->query('SELECT * FROM p_membrealpha ORDER BY id DESC'); while($data = $req->fetch()){ ?> <div id="feed-post-1" class="card is-post"> <div class="content-wrap"> <div class="card-heading"> <div class="user-block"> <div class="image"> <img src="../users_account/alphamembre/avatar/<?= $data['avatar'] ?>" alt="<?= $data['pseudo'] ?>" style="object-fit: cover;"> </div> <div class="user-info"> <a href="#"><?= $data['pseudo'] ?></a> <span class="time"><?= strftime('%d %B %Y', strtotime($data['date_publish']))." à ".date('H:i', strtotime($data['date_publish'])) ?></span> </div> </div> <div class="dropdown is-spaced is-right is-neutral dropdown-trigger"> <div> <div class="button" id="button-dropdown"> <i class="fas fa-chevron-down" id="chevron"></i> </div> </div> <div class="dropdown-menu dropdown-menu-post" role="menu" style="background:#0d1012;border-radius:7px;"> <?php if(isset($_SESSION['id'])){ echo '<a href="#" class="dropdown-item"> <div class="media"> <i data-feather="user-plus"></i> <div class="media-content"> <h3>Suivre '.$data['pseudo'].'</h3> <small>S\'abonner a ce compte</small> </div> </div> </a> <a href="#" class="dropdown-item"> <div class="media"> <i data-feather="flag"></i> <div class="media-content"> <h3>Signaler</h3> <small>En cas de contenu inapproprié.</small> </div> </div> </a>'; }else{ echo ' <a class="dropdown-item"> <div class="media"> <i class="far fa-trash-alt" id="drop-delete" style="font-size: 19px;margin-right: 11px;"></i> <div class="media-content drop-delete"> <h3>Supprimer</h3> <small id="drop-delete">Supprimer la publication</small> </div> </div> </a>'; } ?> <!-- <a href="#" class="dropdown-item"> <div class="media"> <i data-feather="flag"></i> <div class="media-content"> <h3>Signaler</h3> <small>En cas de contenu inapproprié.</small> </div> </div> </a>--> </div> </div> </div>

11 réponses

Carouge10, il y a 5 ans

Bonjour,
as-tu vérifié ce que contient $_SESSION avec un var_dump ?
autre chose : pourquoi mettre un echo du html pour ton menu et ne pas faire comme le code du début en faisant juste le echo de la variable php a insérer "<?= $ma_var; ?>", cela d'éviterai d'échapper les simple quote

KiloOctet, il y a 5 ans

Je vais changer pour le echo du html, session contient la session l'id de l'utilisateur connecter.

KiloOctet, il y a 5 ans

Ca y'est ca fonctionne, merci a toi Carouge10 :D

Carouge10, il y a 5 ans

et du coup c'était quoi le problème ?

Lartak, il y a 5 ans

Bonjour.
Il y a une grosse différence entre ce que tu souhaites faire et le code que tu nous montre.
Car pour qu'il y ait des auteurs différents, il te faudrait déjà commencer par créer un système de connexion et non juste pour toi.
Sinon comment vas-tu différencier un auteur d'un autre, s'il est bien l'auteur d'un article en question et si c'est toi et pas quelqu'un d'autre qui est connecté ?
Par conséquent il te faudrait des conditions du genre :

if (!empty($_SESSION['id'])): // Utilisateur connecté if ($_SESSION['is_admin']): // Administrateur else if ($data['user_id'] == $_SESSION['id']): // Auteur else: // Autre utilisateur else: // Utilisateur non connecté endif;
KiloOctet, il y a 5 ans

Bonsoir, désolé je n'avais pas vue vos message, alors moi j'ai fais ce-cis et ca m'affihe bien ce que je veux.

<div class="dropdown-menu dropdown-menu-post" role="menu" style="background:#0d1012;border-radius:7px;"> <?php if($_SESSION['pseudo'] != $data['pseudo']) { ?> <a href="#" class="dropdown-item"> <div class="media"> <i data-feather="user-plus"></i> <div class="media-content"> <h3>Suivre <?= $data['pseudo'] ?></h3> <small>S'abonner a ce compte</small> </div> </div> </a> <a href="#" class="dropdown-item"> <div class="media"> <i data-feather="user"></i> <div class="media-content"> <h3>Voir son profil</h3> <small>Acceder a son compte alpha</small> </div> </div> </a> <a class="dropdown-item"> <div class="media"> <i data-feather="link"></i> <div class="media-content"> <h3>Copier le lien</h3> <small>Copier l'url du lien</small> </div> </div> </a> <a class="dropdown-item"> <div class="media"> <i data-feather="flag"></i> <div class="media-content"> <h3>Signaler</h3> <small>En cas de contenu inapproprié.</small> </div> </div> </a> <?php } ?> <?php if($_SESSION['pseudo'] == $data['pseudo']) { ?> <a class="dropdown-item"> <div class="media"> <i data-feather="link"></i> <div class="media-content"> <h3>Copier le lien</h3> <small>Copier l'url du lien</small> </div> </div> </a> <a class="dropdown-item"> <div class="media"> <i class="far fa-trash-alt" id="drop-delete" style="font-size: 19px;margin-right: 11px;"></i> <div class="media-content drop-delete"> <h3>Supprimer</h3> <small id="drop-delete">Supprimer la publication</small> </div> </div> </a> <?php } ?> <!-- <a href="#" class="dropdown-item"> <div class="media"> <i data-feather="flag"></i> <div class="media-content"> <h3>Signaler</h3> <small>En cas de contenu inapproprié.</small> </div> </div> </a>--> </div>
KiloOctet, il y a 5 ans

Par contre j'ai un peu avancer sur mon projet. c'est au niveau des publication des post que ca me pose un problème pour publier son post avec image sa donne sa:

if(isset($_FILES['add_media']) AND !empty($_FILES['add_media']['name'])) { $nomfile = date("YmdHis"); $taille = 2097152; // 2Mo; $extensionsValides = array('jpg', 'jpeg', 'png'); if($_FILES['add_media']['size'] <= $taille) { $extensionUpload = strtolower(substr(strrchr($_FILES['add_media']['name'], '.'), 1)); if(in_array($extensionUpload, $extensionsValides)) { $chemin = "../users_account/alphamedias/alphamembre/".$user['registre_keymembre']."/".$nomfile.".".$extensionUpload; $resultat = move_uploaded_file($_FILES['add_media']['tmp_name'], $chemin); if($resultat){ $sql_update = 'UPDATE p_membrealpha SET alpha_media = :alpha_media WHERE id = :id'; $req_update = $pdo->prepare($sql_update); $req_update->execute( [ 'alpha_media' => $nomfile.".".$extensionUpload, 'id' => $_SESSION['id'] ] ); echo "Votre photo de profil a bien été mise à jours"; // a modifier }else{ echo "Une erreur s'est produite pendant l'importation"; a modifier } }else{ echo "Votre photo doit être au format: jpg, jpeg ou png"; a modifier } }else{ echo "Votre photo ne doit pas dépassé 2Mo"; a modifier } } // SECTION PUBLISH if(!empty($_POST['publish'])) { $post = trim($_POST['publish']); $datas = [ 'pseudo' => $user['pseudo'], 'fkey_membre' => $user['registre_keymembre'], 'alpha_titre' => $post, 'avatar' => $user['avatar'], ]; if(!empty($post)) { $insert_post= $pdo->prepare("INSERT INTO p_membrealpha (pseudo, alpha_titre, fkey_membre, avatar, alpha_media) VALUES (:pseudo, :alpha_titre, :fkey_membre, :avatar, :alpha_media)"); $insert_post->execute($datas) or die(print_r($pdo->errorInfo())); echo "post publish"; }else{ echo "Error"; } }

ET pour afficher le posts j'ai fais une boucle while =>

$req = $pdo->query('SELECT * FROM p_membrealpha ORDER BY id DESC'); while($data = $req->fetch()){ ?> <div class="">le post avec du code php pour afficher l'avatar de l'utilisateur et autres informations... </div> <?php ?>

et a l'intérieur de la boucle pour afficher par exemple une images qu'il aurait pris, j'ai fais ce-cis

<div class="post-image"> <a data-fancybox="post1" data-lightbox-type="comments" href="#"> <img src="../users_account/alphamedias/alphamembre/<?= $data['fkey_membre'] ?>/<?= $nomfile ?>.<?=$extensionUpload?>" alt="<?= $data['pseudo'] ?>"> </a> </div>

Le problème c'est que dès que je charge une image je l'upload il s'affiche mais lorsque j'actualise la page elle disparait, aussi j'ai l'image qui apprarait en boucle sur le même post par exemple qui a été publier hier.

en photo ce que je veux afficher:

https://ibb.co/c2KcXrK

Carouge10, il y a 5 ans

tu peux aussi remplacer ce bout de code

<?php } ?> <?php if($_SESSION['pseudo'] == $data['pseudo']) { ?>

par

<?php } else { ?>
Carouge10, il y a 5 ans

oui car tu ne dois pas prendre $nomfile est que le nom du fichier en cours d'upload mais $data['alpha_media'] qui le nom du fichier uploadé

KiloOctet, il y a 5 ans

mais je ne comprend pas, je ne sais combien de fois j'ai fais $data['alpha_media'] mais rien ne s'afficher j'ai vérifier et reverifier mon code si je n'avais pas oublier quelques chose et d'un coup ca fonctionne. merci beacuoup, et merci également a toi Lartak ;)

Carouge10, il y a 5 ans

peut-être un soucis de cache