Wall code

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : Wall code

Re: Wall code

par stealth35 » 25 oct. 2010, 17:36

les \ c'est du au magic_quote qu'il faut supprimer

Re: Wall code

par Fanaxity » 25 oct. 2010, 17:33

Alors voilà la requête qui enregistre dans la bdd :
$code = $_POST['code'];

$query = sprintf("INSERT INTO gawen(name, title, snippet) VALUES('%s', '%s', '%s')",  mysql_real_escape_string($given), mysql_real_escape_string($title), mysql_real_escape_string($code));
et dans la bdd, il y a :
<?php
echo(\'test\');
echo \'<br>va te faire foutre\';
if($test = 2)
{
// ici le resultat
}
Donc l'affichage avec nl2br() et htmlentities() altère juste les <? > et rajoute des <br> pour les sauts de lignes (donc je vais surement supprimer ça).

En contre partie, les "\" qui sont rajoutés proviennent de l'enregistrement dans la bdd et pas dans l'affichage (vu qu'ils y sont présents)

Re: Wall code

par stealth35 » 25 oct. 2010, 17:25

et dans ta base le code est comment ?

Re: Wall code

par Fanaxity » 25 oct. 2010, 17:08

alors, si j'utilise nl2br pour l'affichage voilà ce qu'il m'affiche
      <?php<br />
      echo(\'test\');<br />
      echo \'prout\';<br />
      if($test = 2)<br />
      {<br />
      // ici le resultat<br />
     }<br />
     ?>
Alors que le code send à la database est :
<?php
echo('test');
echo 'prout';
if($test=2)
{
}
?>

Re: Wall code

par stealth35 » 25 oct. 2010, 16:58

pour les sauts de lignes il faut rajouter nl2br, sinon ca se règle en CSS

Re: Wall code

par Fanaxity » 25 oct. 2010, 16:57

Ca ne marche toujours pas :(

J'ai enlever le htmlspecialchars()
et je l'ai mis au moment de l'affichage
$title = $_GET["title"]; 
$query = sprintf("SELECT snippet FROM testable WHERE title = '%s'", mysql_real_escape_string($title));
$result = mysql_query($query) or die('Error  : ' . mysql_error());
$data = mysql_fetch_assoc($result);

include_once 'high/geshi.php'; 
//// Define some source to highlight, a language to use
// and the path to the language files//
 $source = htmlspecialchars($data['snippet']);
 $language = 'php';
 //
// Create a GeSHi object//
 $geshi = new GeSHi($source, $language);
 $geshi->enable_line_numbers(GESHI_FANCY_LINE_NUMBERS, 37);

Re: Wall code

par stealth35 » 25 oct. 2010, 16:50

hello,
faut enlever le htmlspecialchars, c'est au moment de l'affichage qui faut le faire :wink:

Wall code

par Fanaxity » 25 oct. 2010, 16:46

Bonjour !
Je créé un petit script qui a pour but de permettre à un utilisateur d'enregistrer un morceau de code dans ma database.

Le problème c'est de pouvoir restituer le code proprement, en respectant les sauts de lignes, sans qu'il y ait un ajout de "\" devant tous les caractères spéciaux.

Voici comment le code est enregistré dans la db :
$query = sprintf("INSERT INTO testable(name, title, snippet) VALUES('%s', '%s', '%s')",  mysql_real_escape_string($given), mysql_real_escape_string($title), mysql_real_escape_string(htmlspecialchars($code)));
Merci d'avance pour vos suggestions :)