Web Developpement

Forum de discussions pour les webmasters et les web developpeurs. (PHP, SQL, XHTML, JavaScript, Référencement, Positionnement,...)

Vous n'êtes pas identifié.

#1 05-04-2008 14:12:18

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Enregistrer du php sous sql ?

Salut big_smile,
Question du jour:
Je souhaite pouvoir enregistrer du code php en plus de mes données habituelles en base de donné et que le code soit interprété ensuite dans la page en sortie. Sur mes testes, soit le code comme une simple include est interprété comme du texte et ne s'affiche pas sauf dans le code source de la page et pour du code plus complexe, celui ci est complètement bouffé.
J' ai regardé et tenté avec la fonction eval() mais sans grand succès.
J'ai essayé une autre methode qui consiste à enregistrer le nom de l'include en bd et de l'afficher par cette intermédiaire:

Code:

<?php

$nom_include=$page['nom_de_l_include'];

//on verifie si le fichier inclue est bien sur le serveur et on l'affiche

   if (!file_exists(dirname(__FILE__) . '/' . $nom_include)) die("<b>Erreur dans la page. L'include demandé n'existe pas!</b>");  
   include_once(dirname(__FILE__) . '/' . $nom_include);  

?>

Bon, sa fonctionne bien sauf que l'include est à une position fixe dans ma page et pour des raisons pratiques .. bhin c'est pas pratique ^^ !
Y a t'il une solution plus simple qui permette d'enregistrer du php en bd via un textarea et qu'il soit correctement affiché ensuite ?
Merci.

Hors ligne

 

Liens utiles

#2 05-04-2008 14:55:04

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

Personnellement je n'est jamais essayer de mettre du PHP dans une base de donnée, et j'en n'en comprend pas non plus l'utilitée.

De plus je pense qu'un tell système peu devenir une faille de sécurité très sérieuse pour un site internet.

Si tu peu m'en expliquer un peu plus sur ce que tu cherche à faire au final, je pourrait peu être te donner une autre méthode.

Hors ligne

 

#3 05-04-2008 15:17:52

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

C'est simple, tu connais mon site et sur celui j'explique à quoi sert telle code et j'en fait la démonstration.
D'autre part je peut être ammené à utiliser une include pour différentes pages d'un même contenue.

C'est marrant, c'est la 2 ieme fois que je pose cette question et j'ai toujours la même réponses et interrogation yikes .

Hors ligne

 

#4 05-04-2008 15:33:58

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

Le truc c'est que c'est pas vraiment logique, une base de donnée c'est fait pour stocker des donnée c'est tous normalement, donc tu ne peu pas placer de code directement.

Une chose qui est cependant possible c'est que dans les texte de ta base de donnée tu met un pseudo-code par exemple:

Code:

[include]le-fichier.php[/include]

et tu utilise une fonction pour traiter le pseudo-code et effectuer l'include, lors du  traitement du texte.

Code:

function Remplace($chaine)
{    
    $chaine = ereg_replace("\[include\] ?([^\[]*) ?\[/include\]", include('\\1'), $chaine);
      return $chaine;
}

Teste avec un truc de ce genre (j'ai écrit sa vite fait, j'ai pas fait de teste)

Hors ligne

 

#5 05-04-2008 19:18:53

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

Pourquoi pas logique ... ? Une base de donnée est bien fait pour enregistrer des données alors pourquoi pas du php au même titre que le javascript/html/css ... ?

Perso j'utilise souvent les includes quand un "tuto" prend plusieurs pages pour différentes fonctions .. sa m'evite de me retaper tout à la main sur chaque page,  d'ou ma necessité à pouvoir ne serait ce qu'enregistrer une include ..

Je vais tester ton code  wink
Merci

Hors ligne

 

#6 06-04-2008 22:58:17

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

c00lman a écrit:

Pourquoi pas logique ... ? Une base de donnée est bien fait pour enregistrer des données alors pourquoi pas du php au même titre que le javascript/html/css ... ?

Peut être par ce que le PHP n'est pas des données ^^

Personnellement dans mes tables je n'ai que des données du texte et du pseudo code (dérivé de BBcode).

Hors ligne

 

Liens utiles

#7 07-04-2008 10:29:41

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

oki wink , c'est noté.
Cependant, j'ai testé le code au dessus sans grand succès et je dois avouer ne pas avoir réellement comprit la partie:

Code:

[include]le-fichier.php[/include]

Tu cas sa ou ?

Hors ligne

 

#8 07-04-2008 12:29:41

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

Tu connais le BBCode? la c'est similaire tu met un pseudo code dans ta base de donnée, par exemple le code plus haut.

Au moment ou tu récupère les donnée tu utilise une fonction sur le contenu avant de l'afficher, cette fonction va remplacer le code entre [include\] et [include] par une include tous simplement.

Je ne suis pas très sur de mon code je n'ai pas testé mais je suis sur que cela peu ce faire comme ceci.

Hors ligne

 

#9 07-04-2008 13:08:17

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

Non je ne connais pas du tout le BBcode sad donc je copie/colle bêtement tes réponses tongue et sa ne fonctionne pas. Sa m'affiche [include]teste.php[/include] dans ma page .

Hors ligne

 

#10 07-04-2008 13:22:03

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

Tu a utilisé la fonction:

Code:

function Remplace($chaine)
{    
    $chaine = ereg_replace("\[include\] ?([^\[]*) ?\[/include\]", include('\\1'), $chaine);
      return $chaine;
}

echo Remplace($contenu);

Si c'est le cas j'ai peu être un problème dans mon expression régulière.

Hors ligne

 

#11 07-04-2008 15:24:37

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

Oui oui, j'ai bien utilisé ta fonction, cependant il me semble que j'ai zappé la fonction sur la variable roll !

Code:

...
$contenue = html_entity_decode($page['contenue_de_la_page']);
echo Remplace($contenue);
...

Résultat:

Code:

Warning: remplace(\1) [function.remplace]: failed to open stream: No such file or directory in /home.31/r/e/f/***/page-site.php on line 5

Warning: remplace() [function.include]: Failed opening '\1' for inclusion (include_path='.:/usr/local/lib/php') in /home.31/r/e/f/***/page-site.php on line 5

Hors ligne

 

#12 07-04-2008 16:15:51

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

Code:

<?php
$contenu="[include]la-page.php[/include]";

function inc($fichier)
{
    ob_start();
    
    include($fichier);
    
    $Contenu = ob_get_contents(); 
    
    ob_end_clean();    
    
    return $Contenu;
}

function Remplace($chaine)
{    
    $chaine = ereg_replace("\[include\] ?([^\[]*) ?\[/include\]",inc('\\1'), $chaine);
     return $chaine;
}

echo Remplace($contenu);

Tu peu essayer un truc comme ça peu être.

Hors ligne

 

#13 07-04-2008 18:10:22

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

Testé et pas approuvé sad .

Code:

Warning: inc(teste.php) [function.inc]: failed to open stream: No such file or directory in /home.31/r/e/f/***/page-site.php on line 46

Warning: inc() [function.include]: Failed opening 'teste.php' for inclusion (include_path='.:/usr/local/lib/php') in /home.31/r/e/f/***/page-site.php on line 46

Par ailleurs, $contenu="[include]la-page.php[/include]"; sous entend alors que le nom du fichier est enregistré en bd ?

Hors ligne

 

#14 07-04-2008 18:58:23

Crocxx
Webmaster
Lieu: France -> Tours (37)
Date d'inscription: 05-02-2008
Messages: 229
Site web

Re: Enregistrer du php sous sql ?

Apparemment le code que j'ai posté ne fonctionne pas.

En plus je vient d'apprendre quelque chose, dans la fonction que j'utilise dans le ereg_replace la valeur du paramètre n'est pas envoyé (page.php ) à la fonction mais le //1 est remplacé automatiquement dans le ereg_replace.

Donc mon code de fonctionne pas.

Code:

function inc($fichier)
{
    return $fichier; // Renvoie bien le nom du fichier
}

Code:

function inc($fichier)
{
    echo $fichier; // Affiche \\1
    }

Je vais chercher si je trouve une autre solution pour toi.

Je ne vois toujours pas l'intérêt de faire des include dans une base de donnée ^^

Hors ligne

 

#15 07-04-2008 19:46:16

c00lman
Modérateur
Date d'inscription: 05-03-2008
Messages: 42
Site web

Re: Enregistrer du php sous sql ?

Crocxx a écrit:

Je ne vois toujours pas l'intérêt de faire des include dans une base de donnée ^^

Hargggggg ^^. Pour la peine je me fais un lien ...
Regarde cette page Listes des balises HTML. Le menu en haut de cette page (A B C D ...) est une include qui me permet de relier les 23 pages que comporte cette exemple. Je me vois mal me re taper ces 23 liens pour chacune des pages .. d'ou l'intérêt que je porte à ma demande tongue .
Et toi, si tu voulais démontrer ce que fait telle ou telle code dans tes tutos ... tu ferais comment ?

Hors ligne

 

Pied de page des forums

Propulsé par PunBB & édité par Rudy Onfroy

Liens & partenaires