Résolu [PHP] Problème de modification de news via un panel

Ʀagnar

Goodbye my friend
Premium
Inscription
29 Août 2014
Messages
513
Réactions
147
Points
4 046
RGCoins
25
Bonsoir, je suis actuellement entrain de faire une partie administration sur mon cms jusque là je me débrouilliez bien mais là viens le moments de faire une modification des news, donc j'ai suivis des tuto sur internet lui plus précisément : j'ai bien adapter a mon code mais lorsque je clique sur modifier sa me redirige sur la page home et non sur la page qui me permettrais de modifier la news, je tiens a précisez que toute mes page se trouve dans un répertoire nommer navigation et que pour y accéder je fait comme sa localhost/?page=staff par exemple j'aimerais avoir votre aide s'il vous plaît si vous avez besoin de plus d'information ou des codes demander moi je rajouterais

PHP:
<div id="title">Administration</div>
<div id="wapper">
<h3>Modifier</h3>
<?php
$id = $_GET["id"];
?>
<form action="?page=modifier?id=<?php echo $id;?>" method="post"> 
<fieldset>  
<?php 
$result = db1->query("SELECT * FROM news WHERE id = $id");  
foreach ($request as $affiche){ 
    ?> 
    <p>Titre de la cat&eacute;gorie :<br/>  
    <input name="titre" size="65" value="<?php echo $affiche['titre'];?>"  type="text"/> </p> 
    <p>Description de la cat&eacute;gorie :<br/>  
    <textarea name="description" rows="10" cols="50" ><?php echo $affiche['contenu'];?></textarea> </p> 
    <?php 
} 
?> 
<input name="Modifier" value="Modifier" type="submit"/> 
<input name="Effacer" value="Effacer" type="reset"/>  
</fieldset> 
</form>
 
Dernière édition:
Voilà j'ai ajouter le code mais je ne comprend pas quand je vais sur la page localhost/?page=modifier sa bug normal je sais pourquoi mais quand je vais sur localhost/?page=modifier?id=1 sa me redirige complétement sur la page home
 
Voilà j'ai ajouter le code mais je ne comprend pas quand je vais sur la page localhost/?page=modifier sa bug normal je sais pourquoi mais quand je vais sur localhost/?page=modifier?id=1 sa me redirige complétement sur la page home

Normal il faut mettre un & au-lieu d'un ? quand tu as plusieurs paramètres dans l'url

localhost/?page=modifier&id=1

Puis déjà tu as une belle faille là, vérifie si le $_GET['id'] est bien numérique ;)
 
Voilà j'ai ajouter le code mais je ne comprend pas quand je vais sur la page localhost/?page=modifier sa bug normal je sais pourquoi mais quand je vais sur localhost/?page=modifier?id=1 sa me redirige complétement sur la page home
D'une part je te déconseille vivement d'utiliser ce système d'affichage de page (?page=X) c'est souvent sujet de faille de sécurité.

Si tu veux traiter ta requête POST sur la même page PHP, tu dois mettre l'identifiant de ta news et non je ne sais quoi, je ne comprends pas pourquoi tu fais un foreach sur ta page de modification :mmh:
 
Voilà j'ai refait le code j'aimerais vos avis sur la sécurité sachant que j'ai également mis un système pour ne pas pouvoir accéder a cette page si nous ne somme pas connecter et si nous ne somme pas admin :

PHP:
<?php
$id = $_GET["id"];
if (!isset($_GET["id"]) OR !is_numeric($_GET['id']) && !is_int($_GET['id'])){

    echo '<meta http-equiv="refresh" content="0;URL=?page=home"';
}
else
{
$result = $db1->query("SELECT * FROM news WHERE id = $id");
while($new = $result->fetch())
{
?>
<form action="?page=modifier&id=<?php echo $id;?>" method="post">
   <p>Pseudo:<br/>
   <input name="pseudo" size="22" value="<?php echo ''.$new["auteur"].'';?>" type="text"/></p>
   <p>Email:<br/>
   <input name="email" size="22" value="<?php echo ''.$new["titre"].'';?>" type="text"/></p> 
   <p>Commentaire:<br/>
   <textarea name="commentaire" rows="10" cols="50" ><?php echo ''.$new["contenu"].'';?></textarea></p>
   <input name="Modifier" value="Modifier" type="submit"/>
   <input name="Effacer" value="Effacer" type="reset"/>
</form>
<?php
 }
}
?>
 
echo '<meta http-equiv="refresh" content="0;URL=?page=home"';

Pourquoi ça? En php tu peux rediriger comme :
PHP:
header('Location: page.php');

Puis pourquoi tu fais un while?

C'est inutile tu affiches le contenu de qu'une seul colonne pas besoin de faire ça.

PHP:
$q = $db->prepare('SELECT * FROM news WHERE id = :id');
$q->execute(['id' => $id]);

$news = $q->fetch();

mets ça en haut et tu récupères les valeurs avec $news['champs_de_la_base_de_donne'];
 
PHP:
<?php
$id = $_GET["id"];
if (!isset($_GET["id"]) OR !is_numeric($_GET['id']) && !is_int($_GET['id'])){

    echo '<meta http-equiv="refresh" content="0;URL=?page=home"';
}
else
{
$result = $db1->query("SELECT * FROM news WHERE id = $id");
while($new = $result->fetch())
{
?>
<form action="?page=modifier&id=<?php echo $id;?>" method="post">
   <p>Pseudo:<br/>
   <input name="pseudo" size="22" value="<?php echo ''.$new["auteur"].'';?>" type="text"/></p>
   <p>Email:<br/>
   <input name="email" size="22" value="<?php echo ''.$new["titre"].'';?>" type="text"/></p>
   <p>Commentaire:<br/>
   <textarea name="commentaire" rows="10" cols="50" ><?php echo ''.$new["contenu"].'';?></textarea></p>
   <input name="Modifier" value="Modifier" type="submit"/>
   <input name="Effacer" value="Effacer" type="reset"/>
</form>
<?php
 }
}
?>

Perso, je coderai comme sa moi :
PHP:
<?php
$id_news = $_GET["id"];
if (!isset($_GET["id"]) OR !is_numeric($_GET['id']) && !is_int($_GET['id'])){
    header("Location: ?page=home");
    exit();
}else {
$result = $db1->prepare("SELECT * FROM news WHERE id = ?");
$result->execute(array($id_news));

$data_news = $result->fetch();
?>
<form action="?page=modifier&id=<?php echo $id_news; ?>" method="post">
   <p>Pseudo:<br/>
   <input name="pseudo" size="22" value="<?= $data_news["auteur"]; ?>" type="text"/></p>
   <p>Email:<br/>
   <input name="email" size="22" value="<?= $data_news["titre"]; ?>" type="text"/></p>
   <p>Commentaire:<br/>
   <textarea name="commentaire" rows="10" cols="50" ><?= $data_news["contenu"]; ?></textarea></p>
   <input name="Modifier" value="Modifier" type="submit"/>
   <input name="Effacer" value="Effacer" type="reset"/>
</form>
<?php
}
?>
 
Retour
Haut