Webmaster Hub: Executer un script php provenant d'une chaine - Webmaster Hub

Aller au contenu

Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

Executer un script php provenant d'une chaine utiliser le code html et php d'une page exterieur . Noter : -----

#1 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 15 juin 2011 - 17:10

Bonjour a tous ;)

Je viens vers vous car je ne trouve pas de fonction php ou d'astuce pour faire ce que je veux .

J'aimerai trouver un équivalent de file_get_contents($file) mais qui insérerait une chaine en exécutant le code php contenue a l'interieur.

J'utilise un index.php qui doit faire appel à plusieurs fichiers externes contenant un mélange de html et de php .
Je ne peu pas utiliser de require ou d'include car cette fonction doit être utilisé dans une autre fonction exécutée avant l'affichage .
Aussi ce qui bloque pas mal les choses c'est que je dois traiter les liens dans les balises php avant d'exécuter le script et de récupérer le résultat ... ( un peu dur :wacko: )

Exemple concret :

//------------------
//fichier chaine.php
//------------------
<html>
<p>blabla</p>

<?php require("fichier.php")>
<?php echo"test"?>

</html>

//-------------------
// fichier: index.php
//-------------------

<?php
function moulinette($chaine)
{
$chaine=str_replace('<?php require("fichier.php")>','<?php require($newdossier."fichier.php")>',$chaine);
$executephp = fonctionRecherchee($Chaine)
return $executephp;
}
?>
$newChaine=moulinette($chaine);



J'espère que c'est assez claire, parce que moi et les explications ... :wacko:

Le but c'est juste de trouver la fonction qui permet d'éxécuter du php dans une chaine . :p

Merci de votre aide ;)
0

#2 L'utilisateur est hors-ligne   Patrick 

  • Le débordeur !
  • Groupe : Fondateur
  • Messages : 2 149
  • Inscrit(e) : 14-décembre 04
  • Genre:Homme
  • Localisation:Longchamp (21)
  • Société:Adifco

Posté 15 juin 2011 - 17:22

Salut,

je ne vois absolument pas où tu veux en venir.
Il y a surement d'autres approches possibles pour ce que tu veux faire.

Peux-tu essayer d'être plus claire sur la finalité de ton script ?

++

Patrick
Devis référencement pour votre site.
Référencement avec paiement aux résultats, la première page de Google sinon rien !
Référencement pour TPE, PME/PMI et grands comptes.
Adifco est un organisme de formation agréé: HTML, CSS, PHP, MySQL, SEO, SEA, etc.
0

#3 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 15 juin 2011 - 17:46

Je me disais bien que je ne serait pas claire avec ce problème lol .

Le but c'est de récupérer une chaine contenant du php.
Cette chaine doit être traitée puis le code php contenu doit être exécuté dans l'index.php .
Pour mieux comprendre voici l'arborescence:

-index.php (fichier exécute qui s'agrémente des fichier suivant)
-dossier/file.php (mélange de html et de php)
-dossier/inc.php (mélange de html et de php contenant un require("file.php") et un echo)

-1 on recherche les balises php du fichier inc.php , on les modifient ( require("file.php") devient require("dossier/file.php").
-2 une fois les liens corrigés et existants , index.php doit exécuter le code php des autres pages .

Je cherche juste la fonction qui aurait le même effet que si on stockait la valeur d'un require sans l'afficher , ex : $chaineExecutee=require("dossier/inc.php");
0

#4 L'utilisateur est hors-ligne   Sarc 

  • Groupe : Membre+
  • Messages : 2 200
  • Inscrit(e) : 19-juillet 04
  • Genre:Homme
  • Localisation:boulevard brune, 75014 Paris
  • Société:Pioupol

Posté 15 juin 2011 - 18:50

Bonjour,

Je pense surtout que Patrick te demande ce que tu veux faire exactement. On a compris la fonction que tu recherches... Mais c'est à quelle fin que tu veux utiliser cette fonction ? Parce qu'on peut tenter de te trouver une autre façon d'envisager ton problème de départ, qui t'éviterait de passer par ce bidouillage.

Sinon, quand on code, c'est toujours mieux de séparer le traitement PHP de l'affichage. De faire donc tout le PHP que tu veux au début, puis de tout afficher d'un coup. :) (Voire d'utiliser un système de template, comme Smarty que j'utilise personnellement).
Hubmasteurement vôtre, Sarc
Retrouvez mes services et mon blog sur Pioupol
Ne rêvez plus d'un bon jeu de gestion, allez sur Pitimonde !
Avez vous besoin d'un tchat et forum pour ados ? {Fun-Ados V5}
0

#5 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 15 juin 2011 - 23:07

Ok, désolé je n'avais pas saisie ! :unsure:

je cherche donc cette fonction pour utiliser un systeme de template mais qui comprend le php .

J'ai 1 index.php à l'origine de mon site qui affiche le résultat d'une fonction .
Cette fonction traite un fichier dans un dossier template (template/montemplate/index.php) .
ce fichier est compartimenté par des balises php qui appellent d'autres fichiers (require: header,page,footer )

Donc, plutôt que de faire une fonction simulant l'exécution je cherchais une fonction toute faite , mais apparemment elle n'éxiste pas ... lol :wacko:

Sinon quel serait vos conseils ? Merci de votre aide ;)
0

#6 L'utilisateur est en ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 946
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 16 juin 2011 - 10:21

Citation

eval
(PHP 4, PHP 5)

eval — Evaluate a string as PHP code

Description
mixed eval ( string $code_str )

Ça doit faire ce que tu cherches, non ?

Attention toutefois à ce que contient ta chaîne de caractères !
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#7 L'utilisateur est hors-ligne   Portekoi 

  • Calimérosateur / Dictationneur
  • Groupe : Admin
  • Messages : 3 692
  • Inscrit(e) : 12-janvier 05
  • Genre:Homme
  • Localisation:Meaux
  • Société:CGD

Posté 16 juin 2011 - 10:54

C'est très très dangereux comme méthode...
0

#8 L'utilisateur est en ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 946
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 16 juin 2011 - 11:10

C'est pour cela que je lui dis bien de faire attention au contenu de la chaîne ! ;)
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#9 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 16 juin 2011 - 12:06

Merci Dan , j'avais trouvé çà , mais le problèmes c'est que dans mes fichiers externes j'utilise des require(), ce qui malheureusement importe le fichier visé avant même l'affichage de la page .

$mavar = eval('<?php require(file.php) ?>') exécutera et affichera avant de stoker dans la variable ...

mais à la limite je peux changer les require() par des fonctions qui retournent une execution d'eval. c'est a tester :rolleyes:
0

#10 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 16 juin 2011 - 12:53

Bon , çà ne fonctionne pas , il ne comprend pas les fonctions du genre eval(file_get_contents($page)) ...

Il n'éxiste pas un moyen de ne pas afficher la sortie et de copier son contenu ?
une sorte de $chaine=require($file) , mais qui n'afficherai pas ?

J'aimerai vraiment garder le require() et include() car dreamweaver les comprend et m'affiche le résultat dans le panneau de création. Je peux donc avoir un index structuré de require() composé de fichier et avoir le résultat d'un seul. du coup je peux mieux gérer mes templates .
0

#11 L'utilisateur est en ligne   Dan 

  • Webmaster
  • Voir le blog
  • Voir la galerie
  • Groupe : Direction
  • Messages : 22 946
  • Inscrit(e) : 18-août 03
  • Genre:Homme
  • Localisation:St Anne, Alderney
  • Société:Webmaster Hub Ltd.

Posté 16 juin 2011 - 13:13

Et si tu nous disais ce que contient le fichier inclus ? On y verrait peut-être plus clair ;)

Tu veux que $chaine contienne l'intégralité du fichier, sans interprétation ? Dans ce cas un simple fread() devrait faire l'affaire.
La théorie, c'est quand on sait tout et que rien ne fonctionne. La pratique, c'est quand tout fonctionne et que personne ne sait pourquoi.
Si la pratique et la théorie sont réunies, rien ne fonctionne et on ne sait pas pourquoi. - Albert Einstein -
Infogérance de serveurs dédiés OVH
0

#12 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 16 juin 2011 - 13:24

Si tu veux exécuter le contenu, mais ne pas l'afficher, tu peux utiliser la bufferisation de sortie, avec ob_start()
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

#13 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 16 juin 2011 - 14:08

Oui Dan , les fichier inclus contiennent tous un mélange de html et de php .

Example :

//------------------
//Index.php du site
//------------------

$page=('templates/montemplate/index.php');
$chaine=traitementContenu($page)// fonction qui traite le contenu puis l'affiche (modifie les url des liens)
echo $chaine;


//------------------
// 'templates/montemplate/index.php'
//------------------

<html>
//etc...
<div class="header">
<?php require('header.php');?> // fichier placé à 'templates/montemplate/header.php'
</div>
//etc...
<div class="main">
<?php require('main.php');?> // fichier placé à 'templates/montemplate/main.php'
</div>
//etc...
<div class="footer">
<?php require('footer.php');?> // fichier placé à 'templates/montemplate/footer.php'
</div>
//etc...
</html>


//------------------
// 'templates/montemplate/main.php'
//------------------

<div class=menu>
<?php createUlLi($array);?> 
</div>




Merci Captain_torche , je vais tester ob_start() , il me semblait que les require s'affichaient quand meme avec çà .

Ce message a été modifié par raph37 - 16 juin 2011 - 14:10.

0

#14 L'utilisateur est hors-ligne   raph37 

  • Groupe : Actif
  • Messages : 40
  • Inscrit(e) : 27-juillet 10

Posté 16 juin 2011 - 16:26

Bon ben Captain_torch tu m'a bien éclairé de tes lumières , effectivement ob_start() marche super bien ;)

c'est super , maintenant je peux modifier mon template étant affiché complétement dans mon dreamweaver et ajouté n'importe quelle balise php dans toute la profondeur des fichiers qui s'appelent ! :p

Merci a tous pour votre aide ;)

Ce message a été modifié par raph37 - 16 juin 2011 - 16:27.

0

#15 L'utilisateur est hors-ligne   captain_torche 

  • Danacol / Orangina rouge
  • Voir le blog
  • Groupe : Admin
  • Messages : 6 722
  • Inscrit(e) : 08-février 06
  • Genre:Homme
  • Localisation:Savigny / Orge

Posté 16 juin 2011 - 16:33

Pas de quoi, ravi d'avoir pu t'éclairer ! Image IPB
Vous avez rêvé cette nuit ? Partagez vos rêves sur l'Onironaute !
Bijoux fantaisie
Recherche nounou
0

Partager ce sujet :


Page 1 sur 1
  • Vous ne pouvez pas commencer un sujet
  • Vous ne pouvez pas répondre à ce sujet

1 utilisateur(s) en train de lire ce sujet
0 membre(s), 1 invité(s), 0 utilisateur(s) anonyme(s)