Résolu Fputs texte par défaut

Solutions (15)
Tags :
  • Php
  • Programmation
|
Bonjour,

J'aurais besoin de vos éclairessissements sur une fonction php.
Donc en fait c'est un formulaire d'inscription... J'insère des infos dans la BDD jusque là rien d'anormal, seulement voilà, quand l'utilisateur s'inscrit un dossier est créer avec le nom qu'il à choisit.

  1. umask(0);
  2. mkdir("/home/0/1/mondomaine.com/www.$url_jeu", 0777);


Mais je souhaite que dans ce dossier soit créer une page en meme temps, j'ajoute alors après cette ligne:

  1. $fp = fopen("/home/0/1/mondomaine.com/www.$url_jeu/index.php", 'w');


Le fichier se créer bien, mais se que je voudrais c'est y insérer un code HTML assez long, je pourrais le faire avec:

  1. fputs($fp, "lecode");


Mais ce que je voudrais c'est qu'il écrive un code HTML situé sur ma BDD ou encore mieux qu'il copie le code d'une autre page. Comment faire?

fputs($fp, "$variable_BDD"); ?

Merci d'avance.
Contenus similaires
  • Autres pages sur : fputs texte defaut
Meilleure solution
partage
|
Je pense que j'ai comprit ce que tu veux dire :) 

Pour récupérer le code d'une page en php c'est pas très dur enfaite.

Il te faut utiliser:
file_get_contents pour lire et file_put_contents pour écrire.
Ce sont des fonctions très complètes qui te permet par exemple de lire ou écrire que sur des morceaux de la page etc... sans trop te casser la tête. En plus quand la page est volumineuse, c'est la méthode la plus rapide car il utilise un buffer.

http://php.net/manual/fr/function.file-get-contents.php
http://www.php.net/manual/fr/function.file-put-contents...
  • Commenter cette solution |
Score
0
òh
òi
|
Le HTML5 arrive et va bousculer un grand coup les fans du php crois moi :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Mais PHP est vraiment très complet et très vaste, difficile de tout connaitre... Meme pour un webmaster je pense...
  • Commenter cette réponse |
Score
0
òh
òi
|
Je te rassure je suis dans ton cas, j'avais eu il y a quelques années quelques cours de web et c'est de là que j'essaye d'extraire des idées. Je ne suis en rien ce qu'on pourrait appeler un webmaster :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Vui, merci c'est une bonne idée...
Dur dur de créer se que je fais (surtout avec des connaissances moyennes).
  • Commenter cette réponse |
Score
0
òh
òi
|
Sinon pour la textarea, tu peux faire ceci:

Str_replace ( char1, char2, string)

Exemple:
Str_replace ( "<?php", "", $current)
Str_replace ( "?>", "", $current)
Essayes toujours ça faciliterait les choses qu'il ne soit plus possible d'ouvrir et fermer une balise php
  • Commenter cette réponse |
Score
0
òh
òi
|
Ok, merci encore pour les infos :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Je pense que ça peut fonctionner dès lors que tu "include" (en quelque sorte) la page CSS à la page. A tester à mon avis.
Pour éviter qu'on trouve le nom de tes variables trop facilement, mets-y des chiffres ou écrit les d'une façon inattendue par exemple. $badedo754 = "blablabla" par exemple en jouant sur le key-sensitive ^^ $hOsT84 $bDD17 etc...
J'avoue que c'est un peu barbare lol
  • Commenter cette réponse |
Score
0
òh
òi
|
En fait, mes variables de connexion sont dans un fichier config

$host ="localhost"; etc...

Mais la page à éditer est en CSS, je suppose que les requêtes php ne peuvent pas passé... ?
  • Commenter cette réponse |
Score
0
òh
òi
|
Il faut d'abord qu'il connaisse le nom de tes variables, si tu utilises des noms moins communs avec par exemple des chiffres dedans, il pourra toujours danser sur sa tête pour faire ça.
Ça reviendrait à essayer de brute-forcer 3 mots de passe en même temps en sachant qu'il ne dit pas lequel des 3 est mal écrit. Autant dire impossible.

Par contre c'est vrais qu'un problème de sécurité persiste. Ils pourraient utiliser la même technique pour faire une copie, un delete,...

La solution serait de traiter la chaine de caractère présent dans $current avant de la file_put_contents en prenant soin de retirer du $current tout mot en rapport avec une faille possible. Par exemple rechercher et effacer les mysql_connect, copy ou delete. C'est du boulot de prévoir à toutes éventualités.

Si tout ton processus de connexion à la DB se trouve dans la page qui s'affiche dans la textarea, il suffit de le mettre dans une autre pages php que tu include et tu es tranquil pour ce qui est de la connection à la DB :) 

J'avoue que je m'y connais pas plus que ça en hébergement, mais il doit bien exister une façon de désactiver des fonctionnalités php à des dossiers spécifiques pour éviter la copy, delete, etc... provenant de celui-ci.
  • Commenter cette réponse |
Score
0
òh
òi
|
Une dernière chose, niveau sécurité.

Si un petit malin, mais ceci dans le textarea:

  1. <?php
  2. mysql_connect ("$host", "$bdd", "$pass");
  3. mysql_select_db ("$bdd");
  4. ?>


Il peut faire se qu'il veut sur ma base de données =/ ?
Comment sécurisé $current = $_POST['test'];
  • Commenter cette réponse |
Score
0
òh
òi
|
Meilleure réponse sélectionnée par allstar27.
  • Commenter cette réponse |
Score
0
òh
òi
|
Re,

Ca à l'air de fonctionner, mais j'ai un petit problème.
Pas moyen de modifier la page par le textarea:

  1. if (isset($_POST['test'])) {
  2. $fichier= 'test.php';
  3. $current = file_get_contents($fichier);
  4. $current .= $_POST['test'];
  5. file_put_contents($fichier, $current);
  6. } else {
  7. $page = htmlspecialchars(file_get_contents('test.php'));
  8. echo "
  9. <form method=\"post\" action=\"admin.php\">
  10. <textarea name=\"test\">$page</textarea><br />
  11. <input type=\"submit\" value=\"Valider\" />
  12. </form>
  13. ";
  14. }


EDIT: c'est bon j'ai trouvé, à la place d'ajouter le post au fichier, je n'ajoute que le post. Merci beaucoup à toi! :) 
  • Commenter cette réponse |
Score
0
òh
òi
|
Bonjour Karhell,

Oui c'est une solution, mais j'ai besoin du code de cette page pour pouvoir le modifier dans un textarea par la suite...

Donc si j'emploi ta méthode, comment récupérer le code source de la page index d'un dossier?
  • Commenter cette réponse |
Score
0
òh
òi
|
Pourquoi copier le code d'une autre page? Pourquoi ne pas simplement copier une page modèle où tu désires qu'elle aille alors? C'est kifkif :) 

Exemple:
  1. $file = '/home/0/1/mondomaine.com/model/index.model'
  2. $newfile = '/home/0/1/mondomaine.com/www.$url_jeu/index.php';
  3.  
  4. copy($file, $newfile);


sinon:

  1. <?php
  2.  
  3. umask(0);
  4. mkdir("/home/0/1/mondomaine.com/www.$url_jeu", 0777);
  5.  
  6. $username = "login";
  7. $password = "pass";
  8. $hostname = "localhost";
  9. $db = mysql_connect($hostname, $username, $password)
  10. or die("Unable to connect to MySQL");
  11. $selected = mysql_select_db("nom_de_la_DB",$db)
  12. or die("Could not select");
  13. $query = "SELECT nom_du_champ_contenant_le_code FROM nom_de_la_table";
  14.  
  15. $result = mysql_query($query);
  16.  
  17. $fp = fopen("/home/0/1/mondomaine.com/www.$url_jeu/index.php", 'w');
  18.  
  19. fputs($fp, $result );
  20.  
  21. mysql_close($db);
  22. ?>
  • Commenter cette réponse |

Ce n'est pas ce que vous cherchiez ?

Tom's guide dans le monde
  • Allemagne
  • Italie
  • Irlande
  • Royaume Uni
  • Etats Unis
Suivre Tom's Guide
Inscrivez-vous à la Newsletter
  • ajouter à twitter
  • ajouter à facebook
  • ajouter un flux RSS