problème avec la création d'un fichier php - PHP - Programmation
Marsh Posté le 28-07-2010 à 09:08:12
bnmkt a écrit : bonjour, |
1> Non, "tout" ne fonctionne pas "parfaitement", sinon tu ne serais pas là à nous dire qu'il y a un problème ...
2> Quel problème ? Tu n'expliques rien à ce qui est censé se passer exactement, et à ce qui se passe actuellement ...
Marsh Posté le 28-07-2010 à 14:30:19
vu,
dans le fichier créate.php
Code :
|
il faut remplacer la virgule et de l'apostrophe par une parenthèse fermante et le point-virgule.
mais donne nous plus de détail sur ton problème
Marsh Posté le 28-07-2010 à 16:28:49
Dj YeLL a écrit : 1> Non, "tout" ne fonctionne pas "parfaitement", sinon tu ne serais pas là à nous dire qu'il y a un problème ... 2> Quel problème ? Tu n'expliques rien à ce qui est censé se passer exactement, et à ce qui se passe actuellement ... |
et bien, ce script est censé créer un fichier .php et se servir d'un formulaire pour transmettre des donnée à un script qui se trouve dedans.
le fichier sera une image qui affichera le nombre de message, le rang et l'expérience du membre.
le problème, c'est que le fichier php ne se créer, mais est vide.
Marsh Posté le 29-07-2010 à 11:38:55
il faut utiliser fwrite($ouverture,$img);
il faut d'abord que tu enregistre ton image dans un fichier, là tu l'affiche sans la sauvegarder !
Marsh Posté le 29-07-2010 à 23:06:08
Evite les spoilers pour les bouts de code, on peut pas copier/coller
Déjà, j'aimerais que tu me dises un truc :
bnmkt a écrit :
|
Les trucs en bleu : tu veux qu'ils soient remplacés par leur valeur avant d'être copié par fwrite()?
Parce que là, comme c'est codé, c'est copié tel quel.
Ca veut dire que ton fichier crée par ce script aura strictement ce qui se trouve après fwrite() !
Et aussi, évite les "" . $var . "" (je faisais la même erreur au début ), et écris directement . $var .
Exemples :
Citation : $var1 = $var2; |
Marsh Posté le 29-07-2010 à 23:07:43
Gluonk a écrit : Evite les spoilers pour les bouts de code, on peut pas copier/coller |
Gluonk a écrit :
|
oui, j'aimerai que les variable soit remplacée avant d'être enregistrée
Marsh Posté le 29-07-2010 à 23:14:36
Ah oui dis-moi exactement les variables qui doivent être remplacée dans ce que j'ai mis en bleu, parce que j'ai un doute
edit :
ok essaies ça déjà pour create.php
Citation : |
Marsh Posté le 29-07-2010 à 23:18:09
Gluonk a écrit : Ah oui dis-moi exactement les variables qui doivent être remplacée dans ce que j'ai mis en bleu, parce que j'ai un doute |
'.$fond.' doit être remplacée par le lien d'une image
'.$if2.' doit être remplacée par un nombre
'.$pseudos.' doit être remplacer par un pseudo.
le reste des variable sont pour le site en question
merci beaucoup de ton aide
Marsh Posté le 29-07-2010 à 23:31:47
merci
il semblerai que mon fichier de base soit mal codé car j'ai une erreur à la ligne 9 ...
Marsh Posté le 29-07-2010 à 23:41:04
et bien c'est le code du fichier généré :
Citation : |
Marsh Posté le 30-07-2010 à 02:52:44
Bon, dernier essai après je n'ai plus d'idées :
Citation : <?php |
J'ai placé le contenu à écrire dans une variable.
Aussi, j'ai utilisé des if (!...etc).
C'est une technique propre de codage : au lieu d'écrire directement une action (ex : fwrite(...)) on teste sa négation, ce qui revient à la réaliser (je ne sais pas trop pourquoi, vu qu'un if (!$var==$var2) ne définiera pas la $var comme ayant le contenu de $var2, mais bon, faut pas chercher...).
edit : correction -> au lieu d'appeler directement une fonction (ex: fwrite(...) )on teste sa négation. La fonction va donc être lue, et donc son contenu exécuté ! Pour la négation d'une variable, le fait de lire la variable ne fait rien .
Du coup on peut écrire un petit message perso qui s'affichera en cas d'échec.
Marsh Posté le 30-07-2010 à 09:20:10
je pense savoir quel est le problème.
le fichier create.php fonctionne parfaitement,
par contre, le fichier créer (test.php) a un problème :
preg_match("`show_as=topics class="fofo_link_extern">(.*)</a>`isU", $file, $forum);
fofo_link_extern n'est pas dans le code a cause du " devant preg_match(
j'ai un p(tit peu essayer de trafiquer, seulement il y a toujours une partie qui bloque ...
ps: désolé pour le double post, je ne sais pas comment supprimer ._.
Marsh Posté le 30-07-2010 à 12:48:20
Il suffit :
- soit d'échapper les guillemets à l'aide d'un anti-slash
- soit d'utiliser des apostrophes pour entourer la pattern
Comme la variable $content utilise déjà des apostrophes pour entourer son contenu, il est préférable d'essayer d'échapper les guillemets :
Citation : preg_match("#<!-- GETXP: (.*) -->#U", $file, $xp); |
Si ça ne marche toujours pas, essaies ça (après avoir testé la 1ère solution ci-dessus stp!) :
Citation : |
Dans cette 2e solution j'ai utilisé des apostrophes échappées (c'est un peu plus long), et j'ai aussi utilisé preg_quote pour nettoyer les pattern (on sait jamais).
J'ai choisi # plutôt que ` comme délimiteur (c'est plus visible).
Bon, va falloir que ça marche
Marsh Posté le 30-07-2010 à 12:58:26
Ah oui les anti-Slash pourquoi je n'y ai pas pensé plus tôt !
Merci (encore ) , je vais essayer ça de-suite
Marsh Posté le 30-07-2010 à 13:10:31
ça fonctionne
par contre je pense que je vais aussi utiliser la deuxième solution, ça fait un petit peu bizarre
http://kingtime.franceserv.com/BBL/dina/new/test.php
ça suffira pour l'instant
Un grand Merci avec un Grand M pour ton aide
Marsh Posté le 30-07-2010 à 13:49:43
Houlà oui c'est pas top
Punaise, je comprend vraiment pas...
Au fait, il semblerait qu'au lieu de mettre :
Citation : if (!$ouverture = fopen($name, "w" )) echo "Le fichier ne peut pas être ouvert (create.php, ligne 8)"; |
il soit plus propre de mettre :
Citation : $ouverture = fopen($name, "w" ) or die("Le fichier ne peut pas être ouvert (create.php, ligne 8)" ); |
Marsh Posté le 30-07-2010 à 13:52:24
c'est vrai que ce n'est pas le top, mais vu que je suis le seul sur le site a proposer un générateur comme ça, ils me laisseront le temps
je vais quand même chercher pour régler ce petit problème.
et (encore) merci ( je l'ai dit beaucoup de fois :x )
Marsh Posté le 30-07-2010 à 13:57:36
Hey attends, essaies ça :
Citation : $xp1 = $xp[1]; |
Parce que toi tu mets des "" . $var . ""
Marsh Posté le 30-07-2010 à 14:00:47
lol :x, ça fonctionne parfaitement :x
par contr, avec les anti-slash, le nombre de message n'apparait pas :x
(je vais surement supprimer cette fonction, pas la peine de chercher )
Marsh Posté le 30-07-2010 à 14:06:40
ben j'ai pas vraiment envie qu'on croie que je me sert des autres :x
mais si tu veux, tu peux.
(j'aurai pas à modifier l'image :x)
Marsh Posté le 30-07-2010 à 14:31:58
pattern2 reste pattern2 dans le script.
j'ai essayer d'ajouté des guillemet autour mais ça ne fonctionne pas :x
Marsh Posté le 30-07-2010 à 14:40:55
Oui mais c'est normal que ce que je t'ai mis ici soit tel quel dans le fichier final généré.
Par contre, je comprend pas pourquoi ça ne fonctionne pas quand il est lu
Désolé je fais une pause, j'en ai marre de cette maudite fonction preg_match
Marsh Posté le 30-07-2010 à 14:41:58
lol, je comprend, je vais chercher un moyen de changer ça
Marsh Posté le 27-07-2010 à 22:37:21
bonjour,
j'ai créer un petit script pour créer un fichier .php,
tout fonctionne parfaitement sauf que le fichier créer contient une erreur.
fichier formulaire :
<form method="post" action="create.php">
<p>
<input type="text" value="nom .php" name="name" /><i>mettez la date complète, l'heure et les minutes, ou bien votre pseudo.</i><br />
<input type="text" value="Pseudo" name="pseudo" /> <i>Pseudo de lesite.</i><br />
<input type="text" value="ID" name="id" /> <i>Ce que qui ce trouve à la fin du lien de votre profil.</i><br />
<input type="text" value="url images" name="picto" /><br />
<input type="submit" value="ok"><br />
</p>
</form>
fichier créate.php :
<?php
$name=$_POST['name'];
$pseudo2=$_POST['pseudo'];
$if2=$_POST['id'];
$fond=$_POST['picto'];
//$bordersize=$_POST['bordersize'];
$ouverture = fopen("".$name."", "w" );
fwrite($ouverture,'
<?php
header ("Content-type: image/PNG" );
$bonhomme = "'.$fond.'";
$image = imagecreatefromPNG($bonhomme);
$file = file_get_contents("http://www.blablaland.com/site/membres.php?p=".$if2."" );
preg_match("`<!-- GETXP: (.*) -->`U", $file, $xp);
preg_match("`show_as=topics class="fofo_link_extern">(.*)</a>`isU", $file, $forum);
preg_match("`<div align="center"><strong>(.*)</strong>`isU", $file, $grade);
$login = "".$pseudo2."";
$xp1 = "".$xp[1]."";
$rank = "".$grade[1]."";
$post = ""$forum[1]."";
$pseudo = "".$login."";
$blanc = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 10, 210,35, $rank, $blanc);
imagestring($image, 10, 210,85, $post, $blanc);
imagestring($image, 10, 210, 130, $xp1, $blanc);
imagestring($image, 10, 200,170, $pseudo, $blanc);
imagePNG($image);
?>
');
fclose($ouverture);
echo ' ton image a bien été crée, tu peux y accédé ici : <a href="'.$name.'">'.$name.'</a> ';
?>
base du fichier :
<?php
header ("Content-type: image/PNG" );
$bonhomme = "'.$fond.'";
$image = imagecreatefromPNG($bonhomme);
$file = file_get_contents("http://www.lesite.com/site/membres.php?p=".$if2."" );
preg_match("`<!-- GETXP: (.*) -->`U", $file, $xp);
preg_match("`show_as=topics class="fofo_link_extern">(.*)</a>`isU", $file, $forum);
preg_match("`<div align="center"><strong>(.*)</strong>`isU", $file, $grade);
$login = "".$pseudo2."";
$xp1 = "".$xp[1]."";
$rank = "".$grade[1]."";
$post = ""$forum[1]."";
$pseudo = "".$login."";
$blanc = imagecolorallocate($image, 0, 0, 0);
imagestring($image, 10, 210,35, $rank, $blanc);
imagestring($image, 10, 210,85, $post, $blanc);
imagestring($image, 10, 210, 130, $xp1, $blanc);
imagestring($image, 10, 200,170, $pseudo, $blanc);
imagePNG($image);
?>
je ne vois pas ce qui cloche, pouvez vous m'aider pour mon problème ?
merci d'avance
j'ai modifier le nom du site par 'lesite" pour ne pas faire de pub.
Message édité par bnmkt le 29-07-2010 à 23:19:32