Perte des droits lorsque qu'on poste une news

Eléphanteau du PHP | 32 Messages

19 avr. 2006, 14:25

Donc voila, le type a les droits d'administration, il va dans le panneau afin de poster une news. Il poste une news et la "Vous n'etes pas autorisé a accéder ici" J'ai beau chercher mainte fosi dans mon code l'erreur :-° Je ne trouve pas, pouvez vous m'aider ? ^^


Les 2 pages qui posent ce probleme
liste_news.php
<?php
//Ne pas oublier de mettre le session_start()
session_start();

include('header_admin.htm');
require('config.inc.php');

//Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
{

        mysql_connect($host,$username,$password);
        mysql_select_db($bdd_name);
                        
        $sql = "SELECT * FROM membres WHERE pseudo='".$_SESSION['pseudo']."'";
        $req = mysql_query($sql) or die(mysql_error());
        $data = mysql_fetch_assoc($req);
        
        $team = $data['team'];
        $r_fdm = $data['r_fdm'];
        $admin = $data['admin'];
        
        echo 'Bienvenu, '.$_SESSION['pseudo'].'.';

        if ($team == "Fils de Midgard" )
        {
                        if ($admin == 1)
                        {
                                ?>
                                <h2><a href="rediger_news.php">Ajouter une news</a></h2>
                                <?php
                                
                                //----------------------------------------------------------------------------------------------------------------
                                // Vérification 1 : est-ce qu'on veut poster une news ?
                                //----------------------------------------------------------------------------------------------------------------
                                
                                if (isset($_POST['titre']) AND isset($_POST['contenu']))
                                {
                                        $titre = addslashes($_POST['titre']);
                                        $contenu = addslashes($_POST['contenu']);
                                        $pseudo = $_SESSION['pseudo'];
                                        // On vérifie si c'est une modification de news ou pas
                                        
                                        if ($_POST['id_news'] == 0)
                                        {
                                                // Ce n'est pas une modification, on crée une nouvelle entrée dans la table
                                                mysql_query("INSERT INTO news (id, titre, contenu, timestamp, pseudo, valide) VALUES ('','" . $titre . "', '" . $contenu . "', '" . time() . "', '" . $pseudo . "', '1')") or die(mysql_error());
                                        }
                                        else
                                        {
                                                // C'est une modification, on met juste à jour le titre, le contenu et le pseudo
                                                mysql_query("UPDATE news SET titre='" . $titre . "', contenu='" . $contenu . "', pseudo='" . $pseudo . "' WHERE id=" . $_POST['id_news']) or die(mysql_error());
                                        }
                                }                     

                        // --------------------------------------------------------------------------------------------------------------
                        // Vérification 2 : est-ce qu'on veut supprimer une news ?
                        // --------------------------------------------------------------------------------------------------------------

                        if (isset($_GET['supprimer_news']))  // Si on demande de supprimer une news
                        {
        // Alors on supprime la news correspondante
                                mysql_query('DELETE FROM news WHERE id=' . $_GET['supprimer_news']);
                        }
                        ?>

                        <table><tr>
                        <th>Modifier</th>
                        <th>Supprimer</th>
                        <th>Titre</th>
                        <th>Date</th>
                        <th>Pseudo</th>
                        <th>Valider</th>
                        </tr>

                        <?php
                        $retour = mysql_query('SELECT * FROM news ORDER BY id DESC');
                        while ($donnees = mysql_fetch_array($retour))  // On fait une boucle pour lister les news
                        {
                                ?>
                                <tr>
                                <td><?php echo '<a href="rediger_news.php?modifier_news=' . $donnees['id'] . '">'; ?>Modifier</a></td>
                                <td><?php echo '<a href="liste_news.php?supprimer_news=' . $donnees['id'] . '">'; ?>Supprimer</a></td>
                                <td><?php echo stripslashes($donnees['titre']); ?></td>
                                <td><?php echo date('d/m/Y', $donnees['timestamp']); ?></td>
                                <td><?php echo $donnees['pseudo'] ?></td>
                                <td><?php
                                if (($donnees['valide']) == 0) { //Afficher "valider" si la news a été proposée
                                ?>
                                &nbsp;&nbsp;<a href="valinews.php?ampnewsavalid=<?php echo $donnees['id'];?>">valider</a>&nbsp;&nbsp;
                                <?php
                                }
                                else
                                {
                                        echo $donnees['valide'];
                                }
                                ?>
                                </tr>
                                <?php
                        }  // Fin de la boucle qui liste les news
                        ?>
                        </table>
                        <?
                        }
                        else
                        {
                                echo ' Vous n\'êtes pas autorisés a aller ici!';
                        }
        }
        else
        {
        echo ' Vous n\'êtes pas autorisés a aller ici!';
        }
}
else
{
   echo 'Erreur : vous devez être connecté pour accéder à cette page !';
}
include('footer.htm');
?>
Et rediger_news.php
<?php
//Ne pas oublier de mettre le session_start()
session_start();

include('header_admin.htm');
require('config.inc.php'); ?>

<h3><a href="liste_news.php">Retour à la liste des news</a></h3>

<?php

//Ensuite on vérifie que la variable $_SESSION['logged'] existe et vaut bien true.
if (isset($_SESSION['logged']) && $_SESSION['logged'] == true)
{
mysql_connect($host, $username, $password);
mysql_select_db($bdd_name); 

        $sql = "SELECT * FROM membres WHERE pseudo='".$_SESSION['pseudo']."'";
        $req = mysql_query($sql) or die(mysql_error());
        $data = mysql_fetch_assoc($req);
        
        $team = $data['team'];
        $r_fdm = $data['r_fdm'];
        $admin = $data['admin'];
        
        echo 'Bienvenue, '.$_SESSION['pseudo'].'.';

        if ($team == "Fils de Midgard" )
        {
                if ($admin == 1  OR $r_fdm == 'Grand Jarl')
                {
                        if (isset($_GET['modifier_news']))  // Si on demande de modifier une news
                        {
                                // On récupère les infos de la correspondante
                                $retour = mysql_query('SELECT * FROM news WHERE id=' . $_GET['modifier_news']) or die(mysql_error());
                                $donnees = mysql_fetch_array($retour);
       
                                // On place le titre et le contenu dans des variables simples
                                $titre = $donnees['titre'];
                                $contenu = nl2br($donnees['contenu']);
                                $id_news = $donnees['id'];  // Cette variable va servir pour se souvenir que c'est une modification
                        }
                        else  // C'est qu'on rédige une nouvelle news
                        {
                                // Les variables $titre et $contenu sont vides, puisque c'est une nouvelle news
                                $titre = '';
                                $contenu = '';
                                $pseudo = '';
                                $id_news = 0;  // La variable vaut 0, donc on se souviendra que ce n'est pas une modification
                        }
                        ?>
                        <form action="liste_news.php" method="post">
                                <p>Pseudo : <?php echo ''.$_SESSION['pseudo'].''; ?></p>
                                <p>Titre : <input type="text" size="30" name="titre" value="<?php echo $titre; ?>" /></p>
                                <p>
                                Contenu :<br />
                                <textarea name="contenu" cols="50" rows="10">
                                <?php echo stripslashes($contenu); ?>
                                </textarea><br /> 
                                <input type="hidden" name="id_news" value="<?php echo $id_news; ?>" />
                                <input type="submit" value="Envoyer" />
                                </p>
                        </form>
                        <?
                }
                else
                {
                        echo ' Vous n\'êtes pas autorisés a aller ici!';
                }
        }
        else
        {
                echo ' Vous n\'êtes pas autorisés a aller ici!';
        }
}
else
{
   echo 'Erreur : vous devez être connecté pour accéder à cette page !';
}
include('footer.htm');
?>
Noob-codeur

Eléphanteau du PHP | 32 Messages

20 avr. 2006, 19:59

Up !
Noob-codeur

Eléphanteau du PHP | 12 Messages

20 avr. 2006, 22:25

Yop !

Ca donne quoi un

Code : Tout sélectionner

print_r($data);
après l'enregistrement de cette variable ? Est-ce que ça correspond à ce que tu attends ?

:roll:

Eléphanteau du PHP | 32 Messages

21 avr. 2006, 02:20

Oui :?
Noob-codeur

Eléphant du PHP | 451 Messages

21 avr. 2006, 07:17

Ben après un rapide coup d'oeil, on dirait que soit :
$team ne contient pas "Fils de Midgard"
$admin est différent de 1

La différence de comportement entre les 2 fichiers ne viendrait-il pas du fait que dans un fichier tu testes l'admin avec :
if ($admin == 1  OR $r_fdm == 'Grand Jarl')
alors que dans l'autre c'est seulement :
if ($admin == 1)
Jpaul
J'essaye d'aider : parfois je fais des erreurs, on me les corrige et j'apprends un peu plus. Super ce forum :)

Eléphanteau du PHP | 32 Messages

21 avr. 2006, 19:24

Cela ne change rien :?
Noob-codeur