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
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:

Ʀagnar

Goodbye my friend
Premium
Inscription
29 Août 2014
Messages
513
Réactions
147
Points
4 046
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
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 492
Points
32 425
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 ;)
 

Rivals

Ancien staff
Inscription
27 Août 2016
Messages
1 705
Réactions
895
Points
13 104
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:
 

Ʀagnar

Goodbye my friend
Premium
Inscription
29 Août 2014
Messages
513
Réactions
147
Points
4 046
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
 }
}
?>
 

WhiiTe'

Administateur
Ancien staff
Inscription
22 Octobre 2011
Messages
14 706
Réactions
8 492
Points
32 425
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'];
 

Westiix

Fortnite Player || PHP & VB.NET
Premium
Inscription
5 Octobre 2011
Messages
2 219
Réactions
88
Points
12 753
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
}
?>
 
Haut