Page 1 sur 3

supression d'une ligne via str_replace

Posté : 01 nov. 2006, 21:37
par cuak
Bonjour, voila je suis entrain de créer un site qui permettra au visiteur de créer leur propore site facielemtn, un peu comme forumactif ou autre pour les forum.

Voila : Je n'arrive pas a supprimer des donné dans un fichier :

include_block_suprimer.php :
<option value='1'>1</option>
block_suprimer_0.php :
<form action="block_suprimer_1.php" method="post">   
<select name='blocksupr'>
<option selected="selected">Choissisez le bloc à suprimer</option>
<? include("include_block_suprimer.php"); ?>
</select> 
<input type="submit" value="Suprimer">
</form>
block_suprimer_1.php :
<?
print("Etes-vous sur de vouloir suprimer le bloc : <i>$blocksupr</i> ?");
?>
<br><br>
<form action="block_suprimer_2.php" method="post">
<input type="hidden" name="blocksupr" value="<? print("$blocksupr"); ?>">
<input type="submit" value="oui">
</form>
<form action="block_suprimer_0.php">
<input type="submit" value="non">
</form>
block_suprimer_2.php :
<?
unlink("block/block_$blocksupr.php");
unlink("block/var/block_$blocksupr.php");
str_replace("<option value='$blocksupr'>$blocksupr</option>","","include_block_suprimer.php");
if(str_replace("<option value='$blocksupr'>$blocksupr</option>","","include_block_suprimer.php")){
print("fichier suprimer");
}
?>
Voila j'explqiue le principe au cas ou ce ne serait pas clair :

dans la page block_suprimer_0.php on inclus la page include_block_suprimer.php pour les "option" d'une liste deroulante.

On choisit donc le fichier a transformer via cette liste deroulante. Puis on valide. La page block_suprimer_1.php fait le role d'une previsualisation.

Ensuite on valide avec "oui" ou "non". Si oui on supprimer la ligne si non, on retoune a la selection du fichier a suprimer.

Je remerci par avance tous ceux qui voudrons bien m'aider.

Cordialement, cuak.

Posté : 01 nov. 2006, 21:44
par Cyrano
Dans ton code, tu n'initialises pas la variable $blocksupr : si ton php.ini est convenablement configuré avec register_globals à OFF, cette variable non définie génère une erreur et ton fichier ne sera pas supprimé. Fais une recherche sur le forum avec "$_POST" et "validation" par exemple et vois comment on récupère les données d'un formulaire avec PHP.

Tu utilises aussi les short_open_tag "<?" au lieu de "<?php", attention, certains serveur ont désactivé cette option et le PHP ne sera pas interprété.

Posté : 01 nov. 2006, 21:47
par cuak
Mon register_globals est sur ON. Donc a quoi est du l'erreur.

Posté : 01 nov. 2006, 21:51
par Cyrano
Mauvaise idée, mais bon, c'est toi qui gère :
As-tu un message d'erreur ?

Dans ton code de suppression, tu as un if() mais pas de else, tu devrais en ajouter un pour avoir un message indiquant l'autre possibilité, ça donnera un point de départ.

Posté : 01 nov. 2006, 21:53
par Invité
<?
unlink("block/block_$blocksupr.php");
unlink("block/var/block_$blocksupr.php");
str_replace("<option value='$blocksupr'>$blocksupr</option>","","include_block_suprimer.php");
if(str_replace("<option value='$blocksupr'>$blocksupr</option>","","include_block_suprimer.php")){
print("fichier suprimer");
}
else{
print("erreur"):
}
?>
Petite question annexe pourquoi estce une reeur de mettre sur on??

Posté : 01 nov. 2006, 21:55
par Invité
As dsl j'ai fait une erreur :
<?
unlink("block/block_$blocksupr.php");
unlink("block/var/block_$blocksupr.php");
str_replace("<option value='$blocksupr'>$blocksupr</option>","","include_block_suprimer.php");
if(str_replace("<option value='$blocksupr'>$blocksupr</option>","","include_block_suprimer.php")){
print("fichier suprimer");
}
else{
print("erreur");
}
?>
Et voila ce qui apparait :
Warning: unlink(block/block_1.php): No such file or directory in d:\program files\easyphp1-8\www\gestion de site\block_suprimer_2.php on line 2

Warning: unlink(block/var/block_1.php): No such file or directory in d:\program files\easyphp1-8\www\gestion de site\block_suprimer_2.php on line 3
fichier suprimer
Les warnig unlink ne sont pas un probleme car quand les fichier existe ils sont bien suprimer.
Par contre etonnement, c'est le IF qui a agit et pas le ELSE??

Posté : 01 nov. 2006, 22:32
par Cyrano
Mettre le register_globals à ON est une faille potentielle de sécurité. C'est pour ça que par défaut depuis la version 4.2 de PHP, elle est à OFF et que pour PHP 6, cette directive ne sera plus modifiable et sera définitivement à OFF.

Ce qui voudra dire que pour récupérer les informations de formulaires ou d'url, il faudra passer par les super-globales $_POST ou $_GET (pour résumer)

Si tu as la réponse indiquant que le fichier est supprimé, ce n'est pas parce que unlink() a fonctionné mais parce que le str_replace n'a pas retourné false. Or str_replace() ne supprime pas un fichier, il remplace une chaine de caractères. Le message n'est donc pas approprié.

Posté : 01 nov. 2006, 22:39
par Invité
non, le but du str_replace tait de suprimer une ligne dans le fichier include_block_suprimer.php afin qu'elle n'apparaisse plus. Et j'ai pas tous compris ce que vous avez dit :

Code : Tout sélectionner

Or str_replace() ne supprime pas un fichier, il remplace une chaine de caractères. Le message n'est donc pas approprié.
Comment dois-je faire si le str_replace d'une ligne a remplacer par "" ne marche pas?

Avez-vous une idée pour resoudre mon probleme a savoir suprimer cette ligne?

Posté : 02 nov. 2006, 10:33
par Invité
S'il vous plait est ce uqe quelqu'un peu m'aider c'est urgent!!??

Posté : 02 nov. 2006, 13:06
par Invité
S'il vous plait!
HELP ME

Posté : 02 nov. 2006, 14:40
par Vikchill
Ne soit pas si insistant, quand quelqu'un aura le temps/l'envie/les connaissances pour t'aider, il le fera.

Posté : 02 nov. 2006, 14:54
par c u a k
ou d'accord mais sais assez urgent. Tu ne purrait pas m'aidez??

Posté : 02 nov. 2006, 15:19
par Vikchill
... non ...

Posté : 02 nov. 2006, 15:29
par iclo
Si c'est vraiment urgent, fais appel à un prestataire, ici, nous sommes des bénévoles qui aidons quand nous avons le temps, donc il n'y a aucun engagement à fournir des résultats.
Faire des up intenpestifs, risque surtout de faire que tu n'auras pas de réponses du tout.

Pour en revenir à ton problème, j'ai relu le sujet depuis le début, et je dois avouer que c'est pas très clair, tout ça.

Pour maximiser tes chances d'avoir une réponse, il vaudrait mieux réexpliquer clairement ton problème, en structurant bien le tout...

Posté : 02 nov. 2006, 15:35
par Ryle
Cyrano t'a grandement aidé pour le coup, prend la peine de relire son message, tu verras que ton test ne correspond en rien à ce que l'on peut supposer que tu veux faire :
str_replace($laChaineCherchee, $laChaineRemplacement, $laChaineSujet);
Remplace $laChaineCherchee par $laChaineRemplacement dans $laChaineSujet. (Nota : il s'agit bien de chaînes de caractères, voire de tableaux de chaines !) S'il ne trouve pas la chaine cherchée, il ne la remplace pas, mais ce n'est pas pour autant qu'il n'a pas fait son boulot, et puisque son travail est fait, il retourne vrai :)