Partage
  • Partager sur Facebook
  • Partager sur Twitter

Utilisation d'eval pour executer une page

8 mai 2021 à 16:02:32

Bonjour.

Je sais qu'eval(); peut-être dangereux à utiliser, du coup pour ce que j'ai fais (et un peu vu sur stackoverflow), j'ai mis le contenu de ma d'une page php dans une variable:

$file = file_get_contents("bloc.php");

et je l'ai mis comme ceci:

<?=eval("?>".$file)?>

sans le ?> y'a une erreur.

Dans mon bloc.php, j'ai qql chose comme ceci:

<?php
if (session_status()===PHP_SESSION_NONE)
    session_start();

if (!isset($_SESSION["user"])){
    echo "erreur...";
    exit();
}
?>

<div>
    ....
</div>

<script>
    ....
</script>

Donc, est-bon ? Ou faut-il que je fasse autrement ?

Merci.



  • Partager sur Facebook
  • Partager sur Twitter

Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

8 mai 2021 à 16:33:35

Pourquoi file_get_contents + eval par rapport à include/require ?

  • Partager sur Facebook
  • Partager sur Twitter
8 mai 2021 à 16:40:48

Parce que si j'utilise include/require, faudra que je mettes la partie html dans une variable:

$page_html="
<div></div>
";

et du coup j'aurais pas les raccourcis et les couleurs de l'ide... et c'est plus pratique pour moi...

Mais du coup c'est pas bon ?

  • Partager sur Facebook
  • Partager sur Twitter

Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.

8 mai 2021 à 17:01:26

> Parce que si j'utilise include/require, faudra que je mettes la partie html dans une variable

Ton eval a le même effet si je ne m'abuse.

Si vraiment la sortie devait être retardée : il faudrait éventuellement revoir ton approche en reprenant +/- le principe du MVC (séparer code HTML de PHP). Sinon il faut démarrer une bufferisation (ob_start) avant l'inclusion et récupérer la sortie produite (ob_get_flush par exemple) pour l'afficher le moment opportun.

-
Edité par julp 8 mai 2021 à 17:06:21

  • Partager sur Facebook
  • Partager sur Twitter
8 mai 2021 à 18:12:13

Je t'assure, j'ai essayé de comprendre mais j'ai pas compris.

Ça a l'air intéressant mais je ne vois pas quoi faire avec..

  • Partager sur Facebook
  • Partager sur Twitter

Et tu auras dans cette petite ruelle au nom d'explore, une petite pièce d'or.