Rafraichire une page php

Résolu/Fermé
Utilisateur anonyme - Modifié le 13 sept. 2019 à 15:41
 Utilisateur anonyme - 23 sept. 2019 à 15:28
Bonjour,

je désire comprendre comment rafraîchir une page après l'envoie d'un <form type="post">
alors oui la méthode je la connais :

header('Location: admin.php');

ou encore
header("Refresh: 0;url=admin.php");


sauf que dans mon cas ça ne correspond pas a ce que je veux.
je m'explique avec du code :

admin.php :
  <?php if (!isset($_POST['mdp']) OR $_POST['mdp'] != "CHOCOLAT")
  { ?>
    <div class="Authentification master">
      <form class="slave" action="admin.php" method="post">
        <p>
          <label for="mdp">Admin Password</label><br>
          <input type="password" name="mdp" />
          <input type="submit" value="Valider" />
        </p>
      </form>

[...]


admin.php comprend 2 formulaires :
- l'authentification
- l'upload de document

Quand je m'authentifie sur admin.php je peut donc upload mes documents.

if ($fileSize > 100000) {
        $fileNameNew = uniqid('', true). "." . $fileActualExt;
        $fileDestination = 'uploads/'. $fileNameNew;
        move_uploaded_file($fileTmpName, $fileDestination);

        $sql = "INSERT INTO OC (PicturePath, PictureName, titre, instruction)
        VALUES ('$fileDestination', '$fileName', '$fileTitle', '$instruction')";

        if ($conn->query($sql) === TRUE) {
          header("Refresh: 0;url=admin.php");
        } else {
          echo "Error: " . $sql . "<br>" . $conn->error;
        }
      }else {
        echo "Your file is too big !! -> " . $fileSize . " > 100000";
      }


comme vous pouvez le comprendre une fois l'upload terminé la page est rafraichie.
mais du coup je me retrouve a devoir de nouveau taper mon mot de passe .... pour chaque nouveau fichiers ... c'est pénible a force .

POURTANT :
quand je rafraîchie manuellement cette page avec le bouton du navigateur cela fonctionne correctement .
mon image est ajoutée a la collection et pas besoin d'une seconde authentification ..

avez vous une méthodes ?

j'ai testé en passant mon formulaire en GET et en utilisant
header('Location: admin.php?mdp=CHOCOLAT');

mais c'est le mème problème étrangement.
et puis GET .... c'est pas terrible niveau discrétion.

une fois de plus merci de votre aide.





Configuration: Linux / Firefox 69.0
A voir également:

3 réponses

jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
13 sept. 2019 à 18:34
Bonjour,

Pour commencer... je t'invite à lire et à appliquer le contenu de ce lien
https://forums.commentcamarche.net/forum/affich-37584947-php-gestion-des-erreurs-debogage-et-ecriture-du-code

Ensuite ... reviens nous voir avec ton code COMPLET.
Car là.. avec juste quelques morceaux.. difficile de dire ce qui ne va pas.
(mais ne reviens qu'après avoir appliqué les conseils donnés dans le lien que je viens de te donner... sinon ce n'est pas la peine ! )

0
Utilisateur anonyme
13 sept. 2019 à 19:01
Malheureusement Jordane, je pourrais noyer mon code sous les debugs (ce que je fait couramment d'ailleurs ) je doute qu'ici, un seul d'entre eux ne me soit utile ...
en effet il ne s'agit pas d'un bug ... mon code fonctionne très bien.

Mais mème après de nombreuse recherches sur internet et forums dédié je ne parvient pas a trouver chaussure a mon pied.

(Je t'assure que l’étape "poser ma question sur CCM" arrive seulement après "debugs" puis "recherche internet" puis "demande a un ami", je débute en php depuis 3 jours mais j'ai 5 ans de code derrière moi.)
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
13 sept. 2019 à 19:04
As tu lu le contenu du lien au moins ???
Il n'y est pas que question de debug... mais aussi de récupération propre des variables... d'activation des erreurs php... du decoupage du code...
Mais visiblement tu ne l'as pas lu...
Essaye encore...tu verras que ça aide pas mal..
Ensuite montre nous ton cofe complet et modifié...
0
Utilisateur anonyme
13 sept. 2019 à 19:32
oui oui je t'assure l'avoir lu.

afficher les variables c'est du debug a mes yeux si ce n'est pas destiné a rester.
et j'ai déjà activé l'affichage des erreurs php tout comme sql d'ailleurs .

j'estime que mon code est assez lisible, mais si c'est pas le cas je suis ouvert aux conseils ou reproches.

Mais peut être désire tu que je laisse mes debugs quand je poste sur le forum ??
j’enlève tout généralement par peur d’alourdir le code et de vous noyer dans ce qui n'est pas essentiel.
0
Utilisateur anonyme
13 sept. 2019 à 19:19
Pour rappel -

Après m’être authentifié une première fois et avoir utilisé le formulaire d'upload (admin.php ligne 49)
je rafraîchie cette mème page MAIS ne desire pas retomber de nouveau sur le formulaire d’authentification (admin.php ligne 30).
Cela fonctionne quand je clique sur rafraîchir via mon navigateur mais pas quand je le demande (collector.php ligne 35) avec
header('Location: admin.php');
ou
header("Refresh: 0;url=admin.php");


admin.php :

<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>OC | Admin panel</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  <link rel="stylesheet" href="css/master.css">
  <title>website | Admin</title>
</head>

<body>
  <?php
  try
  {
    $bdd = new PDO('mysql:host=localhost;dbname=OpinionCollector;charset=utf8', 'root', '');
  }
  catch(Exception $e)
  {
    die('Erreur : '.$e->getMessage());
  }
  ?>
  <?php if (!isset($_POST['mdp']) OR $_POST['mdp'] != "666-999")
  { ?>
    <div class="nav-bar">
      <h1>titre</h1>
      <a href="index.php">BACK</a>
    </div>
    <div class="Authentification master">
      <form class="slave" action="admin.php" method="post">
        <p>
          <label for="mdp">Admin Password</label><br>
          <input type="password" name="mdp" />
          <input type="submit" value="Valider" />
        </p>
      </form>
    </div>
  <?php }
  else
  { ?>
    <div class="nav-bar">
      <h1>titre</h1>
      <a href="index.php">BACK</a>
    </div>
    <div class="container-fluid Administration">
      <div class="row">
        <div class="col-lg-6 split master">
          <div class="slave">
            <form class="slave" action="back/collector.php" method="post" enctype="multipart/form-data">
              <input type="file" name="fileUpload"  required><br>
              <input type="text" name="title"  placeholder="give a title" required><br>
              <input type="text" name="instruction" placeholder="give some instructions" required><br>

              <button type="submit" name="submit">UPLOAD</button>
            </form>
          </div>
        </div>
        <div class="col-lg-6 split">
          <div class="row">
            <div class="col-lg-12 pictureCol">
              <div class="row">
                <?php $reponse = $bdd->query('SELECT PicturePath, titre, NbrLikes, NbrDislikes FROM OC ORDER BY ID DESC LIMIT 0, 50');
                while ($donnees = $reponse->fetch())
                { ?>
                  <div class="slave picture" style="background-image: url( <?php echo( htmlspecialchars($donnees['PicturePath']) ) ?> )">
                    <div class="stats">
                      <div class="row">
                        <div class="col-lg-12 master">
                          <h2 class="slave"> <?php echo( htmlspecialchars($donnees['titre'])) ?> </h2>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-md-6">
                          <img src="media/details/like.png" title="like">
                          <h2 class="count"> <?php echo( htmlspecialchars($donnees['NbrLikes']) ) ?> </h2>
                        </div>
                        <div class="col-md-6">
                          <img src="media/details/dislike.png" title="dislike">
                          <h2 class="count"> <?php echo( htmlspecialchars($donnees['NbrDislikes']) ) ?> </h2>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-lg-12">
                          <button type="button">comment(s)</button>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-lg-12">
                          <a>
                            <img src="media/details/cross.png" title="delete this picture ?" class="button">
                          </a>
                        </div>
                      </div>
                    </div>
                  </div>
                  <?php
                }
                $reponse->closeCursor(); ?>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <?php
  } ?>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>



Collector.php (appelé par le formulaire d'upload)

<?php
$conn = new mysqli("localhost", "root", "", "OpinionCollector");
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}

if (isset($_POST['submit'])) {
  $file = $_FILES['fileUpload'];

  $fileTmpName = $_FILES['fileUpload']['tmp_name'];
  $fileSize = $_FILES['fileUpload']['size'];
  $fileError = $_FILES['fileUpload']['error'];
  $fileType = $_FILES['fileUpload']['type'];
  $allowed = array('jpg', 'png', 'jpeg', 'pdf');

  $fileName = $_FILES['fileUpload']['name'];
  $fileTitle = $_POST['title'];
  $instruction = $_POST['instruction'];

  $fileExt = explode('.', $fileName);
  $fileActualExt = mb_strtolower(end($fileExt));

  if (in_array($fileActualExt, $allowed)) {
    if ($fileError === 0) {
      if ($fileSize > 100000) {
        $fileNameNew = uniqid('', true). "." . $fileActualExt;
        $filePath = 'uploads/'. $fileNameNew;
        $fileDestination = '../uploads/'. $fileNameNew;
        move_uploaded_file($fileTmpName, $fileDestination);

        $sql = "INSERT INTO OC (PicturePath, PictureName, titre, instruction)
        VALUES ('$filePath', '$fileName', '$fileTitle', '$instruction')";

        if ($conn->query($sql) === TRUE) {
          header("Refresh: 0;url=../admin.php");
        } else {
          echo "Error: " . $sql . "<br>" . $conn->error;
        }
      }else {
        echo "Your file is too big !! -> " . $fileSize . " > 100000";
      }
    }else {
      echo "There is an error uploading your file !!";
    }
  }else {
    echo "you canot upload files of [ " . $fileExt . " ] type !!";
  }
}
$conn->close();
?>


j'espere que ce sera plus explicite ainsi.
désolé pour l'orthographe et si vous avez le sentiment que j'abuse du forum.
0
Utilisateur anonyme
13 sept. 2019 à 19:35
Est il nécessaire de crée un cookie pour garder ma session active ?
je voudrais éviter cette technique, sauf si c'est impossible sans ...
0
yg_be Messages postés 22717 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 22 avril 2024 1 476 > Utilisateur anonyme
13 sept. 2019 à 20:46
bonjour, quelle autre technique te semble-t'elle préférable, et pourquoi?
0
Bonsoir,
non il y a les variables de sessions pour cela. Je ne vois d'ailleurs pas le rapport entre les cookies du navigateur et une session PHP qui par définition existe côté PHP uniquement.
Quand à l'intitulé de votre question/sujet j'ai beau creuser je ne comprends pas ce que veux dire rafraîchir une page PHP. Ce qui est actualisé c'est l'affichage HTML, PHP fonctionne avant que la page existe(préprocesseur comme dit dans le nom du langage) donc il n'y a rien à rafraîchir de ce côté là : le programme est exécuté, récupère les données sur la base pour les filer au HTML ou inversement.
L'inverse par contre est vrai et très répandu, très utile aussi: Ne pas faire appel au serveur(comme PHP et celui de la base de données) pour que les pages mettent moins de temps à charger et afficher quelque chose. Celà peut se faire avec AJAX donc le principe est de mettre en 'mémoire'(métadonnées) des résultats de requêtes probables sur la base pour pouvoir les fournir sans avoir à exécuter à nouveau le script PHP et SQL; ainsi la page HTML peut être actualisé sans les quelques millisecondes nécessaires aux requêtes et à fournir celles ci.

Donc non n'essayez pas d'actualiser PHP, PHP est simplement exécuté(interprété plutôt) côté serveur pour fournir de la matière à la page HTML et automatiser certaines tâches nottament sérielles et en rapport avec un SGBD relationnel.
0
Utilisateur anonyme > tihuboueux
13 sept. 2019 à 21:10
autant pour moi Tihuboueux, c'est vrais que après réflexion ça n'a pas beaucoup de sens de rafraîchir du php.
je me suis laisser piéger du faite que les pages a rafraîchir sont a format [file.php] ...
peux tu m'en dire d’avantage concernant les variables de sessions ?

s'agit t'il d'un booléen qui passe de 0 a 1 lors de la première authentification et qui permet de by pass les prochaines ?

je vais aller me renseigner de mon coté également.
merci de tes indications .
0
mieux que moi il existe tout un tas de ressources en ligne pour que vous appreniez et trouvez ce qui est nécessaire quand vous en avez besoin.
Bien sûr il faut approfondir; Rome ne s'est pas fait en un jour et un développeur expérimenté non plus.
Recherche sur "variables de session PHP" me donne tout un tas de réponses , en voici une parmi d'autres(notez le session_start() 'voir lien' qui indique une création ou renouvellement de session).


https://www.php.net/manual/fr/reserved.variables.session.php
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
13 sept. 2019 à 21:27

oui oui je t'assure l'avoir lu.

afficher les variables c'est du debug a mes yeux si ce n'est pas destiné a rester.

Parfois je me demande si les gens savent lire....

Je ne te parle pas de debug... ni d'affichage de tes variables.... je te parle de RECUPERER PROPREMENT LES VARIABLES AVANT DE LES UTILISER....

Le lien explique également où écrire son code... en l'occurence... placer le maximum de php EN DEHORS du html afin de rendre sa lecture plus simple ainsi que facilité son évolution et sa maintenance...



Bref...

Dans les choses étranges de ton code... on peut voir par exemple que tu utilises du mysqli d'un côté ... et du PDO de l'autre.... ce à quoi je demanderai... POURQUOI ?

Ensuite

Après m’être authentifié une première fois et avoir utilisé le formulaire d'upload (admin.php ligne 49)
je rafraîchie cette mème page MAIS ne desire pas retomber de nouveau sur le formulaire d’authentification (admin.php ligne 30).

Normal .. vu que ton formulaire d'authentification réagit en fonction des variables POST ...
Hors.. quand tu fais ta redirection via le header... les variables PHP ne sont pas re transmises...
Comme le dit tihuboueux ... il faut utiliser les variables de session...

Voila à quoi devrait ressembler ton code..(si tu avais lu les liens que je t'ai donné... )

Fichier cnxBdd.php
<?php
  //connexion à la bdd ET activation des erreurs PDO
  try{
    $bdd =new PDO('mysql:host=localhost; dbname=OpinionCollector; charset=utf8', 'root', '');
    // Activation des erreurs PDO
    $bdd->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
    // mode de fetch par défaut : FETCH_ASSOC / FETCH_OBJ / FETCH_BOTH
    $bdd->setAttribute(PDO::ATTR_DEFAULT_FETCH_MODE, PDO::FETCH_ASSOC);
} catch(PDOException $e) {
    die('Erreur : ' . $e->getMessage());
}
?>


Fichier Admin.php
<?php
//Démarrage des sessions
session_start();
  
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);  

//connexion à la bdd
require_once "cnxBdd.php";
  
   
  //récupération PROPRE des variables AVANT de les utiliser !
  $isLoged = !empty($_SESSION['isLogued']) ? $_SESSION['isLogued'] : NULL;
  $mdp = !empty($_POST['mdp']) ? $_POST['mdp'] : NULL;
  
  //on vérifie la connexion
  if(!$isLoged && $mdp){
    $isLoged = $mdp == "666-999" ?  true : false;
    $_SESSION['isLogued'] = $isLogued
    
    //exécution de la requête
    $sql = 'SELECT PicturePath, titre, NbrLikes, NbrDislikes FROM OC ORDER BY ID DESC LIMIT 0, 50';
    try{
      $reponse = $bdd->query($sql);
    }catch(Exception $e){
      echo "Erreur dans la requete : ".$sql;
      die($e->getMessage());
    }
    
  }else{
    unset($_SESSION['isLogued']);
  }
  
  
  ?>
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>OC | Admin panel</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  <link rel="stylesheet" href="css/master.css">
  <title>website | Admin</title>
</head>

<body>
   <div class="nav-bar">
      <h1>titre</h1>
      <a href="index.php">BACK</a>
    </div>
    
<?php 
if (!$isLoged){ 
?>
    
    <div class="Authentification master">
      <form class="slave" action="admin.php" method="post">
        <p>
          <label for="mdp">Admin Password</label><br>
          <input type="password" name="mdp" />
          <input type="submit" value="Valider" />
        </p>
      </form>
    </div>
  <?php 
}  else  { 
?>
    <div class="container-fluid Administration">
      <div class="row">
        <div class="col-lg-6 split master">
          <div class="slave">
            <form class="slave" action="back/collector.php" method="post" enctype="multipart/form-data">
              <input type="file" name="fileUpload"  required><br>
              <input type="text" name="title"  placeholder="give a title" required><br>
              <input type="text" name="instruction" placeholder="give some instructions" required><br>

              <button type="submit" name="submit">UPLOAD</button>
            </form>
          </div>
        </div>
        <div class="col-lg-6 split">
          <div class="row">
            <div class="col-lg-12 pictureCol">
              <div class="row">
                <?php 
                while ($donnees = $reponse->fetch())
                { ?>
                  <div class="slave picture" style="background-image: url( <?php echo( htmlspecialchars($donnees['PicturePath']) ) ?> )">
                    <div class="stats">
                      <div class="row">
                        <div class="col-lg-12 master">
                          <h2 class="slave"> <?php echo( htmlspecialchars($donnees['titre'])) ?> </h2>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-md-6">
                          <img src="media/details/like.png" title="like">
                          <h2 class="count"> <?php echo( htmlspecialchars($donnees['NbrLikes']) ) ?> </h2>
                        </div>
                        <div class="col-md-6">
                          <img src="media/details/dislike.png" title="dislike">
                          <h2 class="count"> <?php echo( htmlspecialchars($donnees['NbrDislikes']) ) ?> </h2>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-lg-12">
                          <button type="button">comment(s)</button>
                        </div>
                      </div>
                      <div class="row">
                        <div class="col-lg-12">
                          <a>
                            <img src="media/details/cross.png" title="delete this picture ?" class="button">
                          </a>
                        </div>
                      </div>
                    </div>
                  </div>
                  <?php
                }
                $reponse->closeCursor(); 
               ?>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <?php
  }
  ?>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>


Collector.php
<?php
//Démarrage des sessions (pour qu'elles contienuent à vivre entre chaque page;..)
session_start();

//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);
  
//connexion à la bdd
require_once "cnxBdd.php";

//récupération Propre des variables AVANT de les utiliser...
$file = !empty($_FILES['fileUpload']) ? $_FILES['fileUpload'] : NULL;
$fileTitle = !empty($_POST['title']) ? $_POST['title'] : NULL;
  $instruction = !empty($_POST['instruction']) ? $_POST['instruction'] : NULL;

if (isset($_POST['submit']) && $file) {
  
  $fileTmpName = $file['tmp_name'];
  $fileSize = $file['size'];
  $fileError = $file['error'];
  $fileType = $file['type'];
  $allowed = array('jpg', 'png', 'jpeg', 'pdf');
  $fileName = $file['name'];
  
  $fileExt = explode('.', $fileName);
  $fileActualExt = mb_strtolower(end($fileExt));

  if (in_array($fileActualExt, $allowed)) {
    if ($fileError === 0) {
      if ($fileSize > 100000) {
        $fileNameNew = uniqid('', true). "." . $fileActualExt;
        $filePath = 'uploads/'. $fileNameNew;
        $fileDestination = '../uploads/'. $fileNameNew;
        if(move_uploaded_file($fileTmpName, $fileDestination)){
          $sql = "INSERT INTO OC (PicturePath, PictureName, titre, instruction)
                  VALUES (:filePath, :fileName, :fileTitle, :instruction)";
        
           $datas = array(':filePath'=>$filePath, ':fileName'=>$fileName, ':fileTitle'=>$fileTitle, ':instruction'=>$instruction);

          //Execution de la requete
          try{
            $requete = $bdd -> prepare($sql) ;
            $res = $requete->execute($datas) ;
            if($res){
              header("Refresh: 0;url=../admin.php");
              exit();//toujours mettre un exit apres un redirection
            }
          }catch(Exception $e){
            // en cas d'erreur :
             echo " Erreur ! ".$e->getMessage();
             echo " Les datas : " ;
             print_r($datas);
          }
        }else{
          echo " Erreur lors du déplacement du fichier !";
        }
        
        
        
      }else {
        echo "Your file is too big !! -> " . $fileSize . " > 100000";
      }
    }else {
      echo "There is an error uploading your file !!";
    }
  }else {
    echo "you canot upload files of [ " . $fileExt . " ] type !!";
  }
}
?>




0
Bonjour Jordane,

grand merci pour ta réponse plus que complète, ça me fait gagner beaucoup de temps.
Et désole du temps de réponse.

j'ai trouvé quelque erreurs d’inattention dedans que j'ai corrigé.
tel que :
manque de point-virgule dans (admin.php line 21)
$_SESSION['isLogued'] = $isLogued


fautes de frappe <isLogued> a la place de <isLogged> (admin.php line 15, 21, 33)
$isLoged = !empty($_SESSION['isLogued']) ? $_SESSION['isLogued'] : NULL;


autrement le code fonctionne, plus de redirection sur l'authentification après avoir upload une image.
cependant un nouveau problème est apparue ...

ma page admin.php propose un formulaire d'upload et affiche les images déjà upload.
quand j'upload une nouvelle image, je suis correctement redirigé sur cette mème page (comme prévue sans de nouveau m'authentifier) mais plus aucune images ne s'affiche.
a la place j'ai cette erreur :
Uncaught Error: Call to a member function fetch() on null in /opt/lampp/htdocs/projet/admin.php:89 Stack trace: #0 {main} thrown in /opt/lampp/htdocs/projet/admin.php on line 89

ce qui correspond a cette ligne (admin.php line89):
while ($donnees = $reponse->fetch())


je vais chercher comment la résoudre, mais je reste a l’écoute si vous pensez savoir pourquoi .
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650
20 sept. 2019 à 13:44
cependant un nouveau problème est apparue ..

Donc
1 - Marquer la discussion actuelle en RESOLUE
2 - Ouvrir une nouvelle discussion propre à ce nouveau souci.

Merci
0
Utilisateur anonyme
20 sept. 2019 à 14:04
je pensais que ce problème étant liais a ce post il était préférable de le laisser dans le mème.

mais je comprend, le but de ce forum c'est surtout de répertorier un problème précis a une solution.
donc ne pas mélanger plusieurs problèmes pour rendre la solution plus simple a trouver pour d'autre.
0
jordane45 Messages postés 38144 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 21 avril 2024 4 650 > Utilisateur anonyme
20 sept. 2019 à 21:23
Fichier Admin.php

<?php
//Démarrage des sessions
session_start();
  
//affichage des erreurs PHP
error_reporting(E_ALL);
ini_set('display_errors', TRUE);
ini_set('display_startup_errors', TRUE);  

//connexion à la bdd
require_once "cnxBdd.php";
  
   
  //récupération PROPRE des variables AVANT de les utiliser !
  $isLoged = !empty($_SESSION['isLogued']) ? $_SESSION['isLogued'] : NULL;
  $mdp = !empty($_POST['mdp']) ? $_POST['mdp'] : NULL;
  
  //on vérifie la connexion
  if(!$isLoged && $mdp){
    $isLoged = $mdp == "666-999" ?  true : false;
    $_SESSION['isLogued'] = $isLogued;
  }else{
    unset($_SESSION['isLogued']);
  }
  
  
  if($isLoged){
    //exécution de la requête
    $sql = 'SELECT PicturePath, titre, NbrLikes, NbrDislikes FROM OC ORDER BY ID DESC LIMIT 0, 50';
    //Execution de la requete
    try{
      $requete = $bdd->prepare($sql) ;
      $requete->execute();
      $response = $requete->fetchAll(); // on stocke le resultat dans un array.
    }catch(Exception $e){
      // en cas d'erreur :
       echo " Erreur ! ".$e->getMessage();
       echo " Les datas : " ;
      print_r($datas);
    }
  }
  
  
  ?>
<!doctype html>
<html>
<head>
  <meta charset="utf-8">
  <title>OC | Admin panel</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
  <link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/css/bootstrap.min.css" integrity="sha384-ggOyR0iXCbMQv3Xipma34MD+dH/1fQ784/j6cY/iJTQUOhcWr7x9JvoRxT2MZw1T" crossorigin="anonymous">
  <link rel="stylesheet" href="css/master.css">
  <title>website | Admin</title>
</head>

<body>
   <div class="nav-bar">
      <h1>titre</h1>
      <a href="index.php">BACK</a>
    </div>
    
<?php 
if (!$isLoged){ 
?>
    
    <div class="Authentification master">
      <form class="slave" action="admin.php" method="post">
        <p>
          <label for="mdp">Admin Password</label><br>
          <input type="password" name="mdp" />
          <input type="submit" value="Valider" />
        </p>
      </form>
    </div>
  <?php 
}  else  { 
?>
    <div class="container-fluid Administration">
      <div class="row">
        <div class="col-lg-6 split master">
          <div class="slave">
            <form class="slave" action="back/collector.php" method="post" enctype="multipart/form-data">
              <input type="file" name="fileUpload"  required><br>
              <input type="text" name="title"  placeholder="give a title" required><br>
              <input type="text" name="instruction" placeholder="give some instructions" required><br>

              <button type="submit" name="submit">UPLOAD</button>
            </form>
          </div>
        </div>
        <div class="col-lg-6 split">
          <div class="row">
            <div class="col-lg-12 pictureCol">
              <div class="row">
                <?php 
                if(!empty($response)){
                  foreach($response as $donnees){ 
                  ?>
                    <div class="slave picture" style="background-image: url( <?php echo( htmlspecialchars($donnees['PicturePath']) ) ?> )">
                      <div class="stats">
                        <div class="row">
                          <div class="col-lg-12 master">
                            <h2 class="slave"> <?php echo( htmlspecialchars($donnees['titre'])) ?> </h2>
                          </div>
                        </div>
                        <div class="row">
                          <div class="col-md-6">
                            <img src="media/details/like.png" title="like">
                            <h2 class="count"> <?php echo( htmlspecialchars($donnees['NbrLikes']) ) ?> </h2>
                          </div>
                          <div class="col-md-6">
                            <img src="media/details/dislike.png" title="dislike">
                            <h2 class="count"> <?php echo( htmlspecialchars($donnees['NbrDislikes']) ) ?> </h2>
                          </div>
                        </div>
                        <div class="row">
                          <div class="col-lg-12">
                            <button type="button">comment(s)</button>
                          </div>
                        </div>
                        <div class="row">
                          <div class="col-lg-12">
                            <a>
                              <img src="media/details/cross.png" title="delete this picture ?" class="button">
                            </a>
                          </div>
                        </div>
                      </div>
                    </div>
                    <?php
                  }
                }
               ?>
              </div>
            </div>
          </div>
        </div>
      </div>
    </div>
    <?php
  }
  ?>

  <script src="https://code.jquery.com/jquery-3.3.1.slim.min.js" integrity="sha384-q8i/X+965DzO0rT7abK41JStQIAqVgRVzpbzo5smXKp4YfRvH+8abtTE1Pi6jizo" crossorigin="anonymous"></script>
  <script src="https://cdnjs.cloudflare.com/ajax/libs/popper.js/1.14.7/umd/popper.min.js" integrity="sha384-UO2eT0CpHqdSJQ6hJty5KVphtPhzWj9WO1clHTMGa3JDZwrnQq4sF86dIHNDz0W1" crossorigin="anonymous"></script>
  <script src="https://stackpath.bootstrapcdn.com/bootstrap/4.3.1/js/bootstrap.min.js" integrity="sha384-JjSmVgyd0p3pXB1rRibZUAYoIIy6OrQ6VrjIEaFf/nJGzIxFDsf4x0xIM+B07jRM" crossorigin="anonymous"></script>
</body>
</html>
0
bonjour Jordane45,

Pour une raison que j'ignore, ta dernière réponses n'a pas déclenché de notifications de mon coté.
j'ai donc suivie ton conseil en créant un nouveau post pour mon nouveau problème sans savoir que tu me proposais une solution ici ... donc désolé du "doublon".

Ceci dit la solution que tu me propose me fait régresser a mon premier problème...
je suis en train de tester des modifications pour corriger ça, car il est vrais que le code fournie ici semble plus optimisé et lisible que la solution que j'ai récupéré de mon dernier post doublon.
Malheureusement sans de nouveau éradiquer mon premier problème je ne peut pas m'assurer que le second soit corrigé.

je vous tiens au courant ici si je trouve une solution.
bonne journée.

EDIT : je viens de comprendre tes modifications, en effet les 2 problèmes sont résolu en ce qui concerne l'upload d'image sans modification de ton code. j'ai fait mes test en refresh la page sans upload (c'est pour ca que je pensais de nouveau avoir le premier soucis). C’était également quelque choses que je désiré mais qui ne s’avère finalement pas essentiel.
0