Page 1 sur 1

Fonction stripslashes ou la mettre????????????????

Posté : 08 déc. 2006, 14:56
par cuak
bonjour,

Voia mon probleme :

J'enregistrer via un formulaire et un textarea un message sur une page de mon site.
Je créer ensuite un script me permettant d'editer ce message donc je recréer un textarea et entre les balise je fais un include du fichier que je veut editer.
Ensuite qunad on valide cela remet le fichier a 0 et ecrit donc ce que l'on a modifier dedans a la place de ce que l'on voulait modifier.

Seulement probleme c'est que ce textearea qui reprend le contenu d'un fichier, et dans ce fichier il y a du code donc en quelque sorte notre textarea nous permet d'editer le code de notre fichier. Mais la et vous devez vous en douter il rajoute des antislashe et oui.

J'ai chercher sur internet la fonction qui me permet de le faire et j'ai trouver mais je ne sait pas ou la placer et comment.

La fonction est

http://www.php.net/manual/fr/function.stripslashes.php

voici mon code :
page ou l'on ecrit le message de depart :(design_01.php)
<?include("header.inc.php");?><img style="max-height:800px; max-width:800px;" src="01/avatar7.png"><br><br><b>Titre :</b>aze<br><b>Description :</b>aze<br><b>Pseudo :</b><a href="mailto:zae">aze</a><br><b>Date :</b>8/12/2006<br><hr>
<big><big><u>Commentaires :</u></big></big><br><hr><?include("com2_2.php");?><hr>
<form action="livre_ajouter_2.php" method="post">
Votre pseudo : <br><input type="text" name="pseudo"><br>
Votre mail : <br><input type="text" name="email"><br>
Votre impression :<br>
<select  name="note">
<option selected style="height:20px;" value="10/10">10/10</option>
<option style="height:20px;"value="09/10">09/10</option>
<option style="height:20px;"value="08/10">08/10</option>
<option style="height:20px;"value="07/10">07/10</option>
<option style="height:20px;"value="06/10">06/10</option>
<option style="height:20px;"value="05/10">05/10</option>
<option style="height:20px;"value="04/10">04/10</option>
<option style="height:20px;"value="03/10">03/10</option>
<option style="height:20px;"value="02/10">02/10</option>
<option style="height:20px;"value="01/10">01/10</option>
<option style="height:20px;"value="00/10">00/10</option>
</select>
<br>
 <input type="radio" name="image" value="sm/01.gif"><img src="sm/01.gif">-<input type="radio" name="image" value="sm/02.gif"><img src="sm/02.gif">
-<input type="radio" name="image" value="sm/03.gif"><img src="sm/03.gif">-<input type="radio" name="image" value="sm/04.gif"><img src="sm/04.gif">
-<input type="radio" name="image" value="sm/05.gif"><img src="sm/05.gif">-<input type="radio" name="image" value="sm/06.gif"><img src="sm/06.gif">
-<input type="radio" name="image" value="sm/07.gif"><img src="sm/07.gif">-<input type="radio" name="image" value="sm/08.gif"><img src="sm/08.gif">
-<input type="radio" name="image" value="sm/09.gif"><img src="sm/09.gif">-<input type="radio" name="image" value="sm/10.gif"><img src="sm/10.gif">
-<input type="radio" name="image" value="sm/11.gif"><img src="sm/11.gif"><br><input type="radio" name="image" value="sm/12.gif"><img src="sm/12.gif">
-<input type="radio" name="image" value="sm/13.gif"><img src="sm/13.gif">-<input type="radio" name="image" value="sm/14.gif"><img src="sm/14.gif">
-<input type="radio" name="image" value="sm/15.gif"><img src="sm/15.gif">-<input type="radio" name="image" value="sm/16.gif"><img src="sm/16.gif">
-<input type="radio" name="image" value="sm/17.gif"><img src="sm/17.gif">-<input type="radio" name="image" value="sm/18.gif"><img src="sm/18.gif">
-<input type="radio" name="image" value="sm/19.gif"><img src="sm/19.gif">-<input type="radio" name="image" value="sm/20.gif"><img src="sm/20.gif">
-<input type="radio" name="image" value="sm/21.gif"><img src="sm/21.gif">-<input type="radio" name="image" value="sm/22.gif"><img src="sm/22.gif">
<br>
Votre message : <br><textarea name="message" cols="30" rows="5"></textarea><br><br>
<input type="hidden" name="loc" value="com2_2">
<input type="submit" value="envoyer" name="ajouter">
</form>
<hr><br><a href="design0.2.php">Retour...</a><?include("footer.inc.php");?>
page ou l'on edite le message : (admin9.2.php)
<?
$contenu2 = file_get_contents("com2"."_"."$nb".".php");
?>
<?
print("<form action=\"admin9.3.php\"><br><textarea cols=\"82\" rows=\"15\" name=\"mod\">$contenu2</textarea><br><br>
<input type=\"hidden\" name=\"passwords\" value=\"$passwords\">
<input type=\"hidden\" name=\"nb\" value=\"$nb\">
<input type=\"submit\" value=\"modifier\"></form>");
?>
Page qui execute l'edition du message :(admin9.3.php)
<?
$conten ="$mod";

$fichier3 = fopen("com2_$nb.php","w+");
fwrite($fichier3,$conten);
fclose($fichier3);
?>
Modification reussi avec succès.<br><br>
<center>
<a href="admin2.1.php?passwords=<? print("$passwords"); ?>">Retour...</a>
</center>
Merci a ceux qui voudront bien essayer de m'aider. :wink:

Posté : 08 déc. 2006, 16:56
par Ryle
Pour savoir où la placer, il faut te demander à quel moment tu en as besoin et donc vérifier les valeurs de tes variables tout au long du traitement :)

En supposant que les antislashes soient ajoutés lorsque tu soumets le formulaire (ce qui se configure dans php et qui est très pratique pour protéger apostrophes et caractères spéciaux lorsque l'on veut les insérer directement en base), il te suffit donc de les virer entre le moment où tu récupères les données du formulaire et celui où tu les stockes dans ton fichier. L'endroit exact dépend de toi, de ce qui te semble le plus logique, le plus lisible, le plus évident... entre la récupération de la variable et GET ou POST et son utilisation :)

Quant au comment, si tu regardes la doc de a fonction stripslashes(), tu vas voir qu'elle fonctionne simplement en prenant la chaine à traiter en paramètre et qu'elle retourne la chaine modifiée en résultat. Il te suffit donc de lui passer la valeur issue de ton textarea et de récupérer le résultat que tu utiliseras dans le reste du traitement...

Tout se passe donc au niveau du fichier admin9.3.php (qui entre nous pourrait avoir un nom plus explicite, pour la maintenance c'est quand même plus agréable ;))

N'hésite pas si ça ne te parrais pas clair ou si tu as des questions :)


Par ailleurs quelques remarques et conseils en vrac :
- Tu devrais prendre l'habitude de sortir tes variables de tes chaines en php, c'est toujours mieux, et plus lisible :
<?php 
print("<form action=\"admin9.3.php\"><br><textarea cols=\"82\" rows=\"15\" name=\"mod\">".$contenu2."</textarea><br><br> 
<input type=\"hidden\" name=\"passwords\" value=\"".$passwords."\"> 
<input type=\"hidden\" name=\"nb\" value=\"".$nb."\"> 
<input type=\"submit\" value=\"modifier\"></form>"); 
?>
Personnellement j'en profite même pour délimiter mes chaines contenant du html par des apostrophes, ce qui évite d'avoir à protéger les guillemets, et facilite la lecture :
<?php 
print('<form action="admin9.3.php"><br><textarea cols="82" rows="15" name="mod">'.$contenu2.'</textarea><br><br> 
<input type="hidden" name="passwords" value="'.$passwords.'"> 
<input type="hidden" name="nb" value="'.$nb.'"> 
<input type="submit" value="modifier"></form>'); 
?>
- Pense à utiliser les variables superglobales quand tu récupères les données provenant d'une autre page $_GET['variable'] (ou $_POST) plutôt que $variable. En effet, selon la configuration du serveur, cela pourrait ne pas fonctionner et générer des alertes, alors qu'avec GET et POST tu es tranquile :)

- Il est inutile de mettre des guillemets autour d'une variable quand tu affiche celle-ci. Concerve les uniquement pour les chaines de caractère :
print("$passwords"); 
$conten ="$mod";
// revient au même que 
print($passwords); 
$conten = $mod;
- ...

Posté : 08 déc. 2006, 17:05
par fred9999
salut
$contenu2 c'es bien ce qui renseigne ton textarea si oui :
<? 
$contenu2 = stripslashes(file_get_contents("com2"."_"."$nb".".php")); 
?> 

Posté : 08 déc. 2006, 20:30
par cuak
Merci beaucoup a vous deux vous faites du très bon boulot et c'est très clair.
J'ai eu la reponse a mon probleme alors je met résolu.