Problème de chaine de caractères

Répondre
jackbocar
le 07/04/2008 à 15:46
jackbocar
Ce que j'envoi dans la base :

Livre II.

Lorsque les croisés eurent passé le détroit du Bosphore, ils ne s'occupèrent plus que de faire la guerre.


Mon code PHP pour poster les infos :
<?php
$info = mysqli_real_escape_string($conn, $_POST['info']);
?>


Le formulaire pour envoyer les infos :
Info : <input type="text" maxlength="255" size="110" name="info" value="<?php if (isset($_POST['info'])) echo stripslashes(htmlentities(trim($_POST['info']))); ?>">


Dans la base voici comment ça arrive :
Livre II.\r\n\r\nLorsque les crois&eacute;s eurent pass&eacute; le d&eacute;troit du Bosphore, ils ne s\'occup&egrave;rent plus que de faire la guerre.


Un bout de code pour la lecture des infos :
nl2br(stripslashes($obj->info))


Voilà comment il apparait à l'écran :
Livre II.rnrnLorsque les croisés eurent passé le détroit du Bosphore, ils ne s'occupèrent plus que de faire la guerre.

Comment éviter les (rnrn) qui restent dans ce texte et avoir des vrais retours à la ligne.

Merci de votre réponse

Jack Bocar
jackbocar
le 07/04/2008 à 16:24
jackbocar
Bonjour,

J'ai fais une fonction pour supprimer ces nr et avoir des retours à la ligne.

Mais, j'aimerais mieux éviter les fonctions et avoir un affichage normal.

<?php
function caracteres($chaine){

$chaine = str_replace
( array('\n','\r')
, array
( '<br />'
, '&nbsp;'
)
, $chaine
) ;

return $chaine;
}
?>


Alors, quelles sont vos idées ?

Merci


Jack Bocar
Tiller
le 07/04/2008 à 20:14
Tiller
Comment veut-tu afficher des sauts de lignes dans un input? ^^'

Il faudrait un textarea deja ^^
Tiller
le 07/04/2008 à 20:18
Tiller
Mince, y'a pas la fonction edit ici ;o

Sinon moi je ferais comme sa:
Ma chaine avec des &ecute; (Ou je sais pas quoi xD) je ferais un coup de html_entity_decode() à la chaine, je l'enregistre dans la db.
Puis je la récupere et je fais echo nl2br(..);

^^
LA GLOBULE
le 07/04/2008 à 21:18
LA GLOBULE
Ben le premier truc à faire, c'est de désactiver les magic quote (je vous rappelle que cette directive va disparaitre avec PHP 6), et ensuite :
- a l'insertion en base de données : juste un mysql_escape_string
- l'affichage des données : un nl2br(htmlentities($data))
- a l'affichage d'une donnée post dans un input : htmlentities($data).

addslashes / stripslashes, c'est de la merde ! Il faut se le dire.
jackbocar
le 08/04/2008 à 15:11
jackbocar
Bonjour,

Merci des réponses.

Si je suis bien, tu dis :

Sur le script PHP :
$infos = mysqli_real_escape_string($link, $_POST['infos']);


Pour afficher les données sur la page juste :
nl2br(htmlentities($obj->infos))),


Pour modiffier les données avec un formulaire :
<input type="text" name="infos" value="<?php if (isset($_POST['infos'])) echo htmlentities($_POST['infos']); ?>">


OK,

Et avec un formulaire pour envoyer des données :
juste htmlentities ou autres ?

Merci de préciser pour l'envoie.

Jack Bocar
jackbocar
le 09/04/2008 à 11:41
jackbocar
Ce que je veux dire c'est ceci : pour le Formulaire d'envoi dans la base de données :

<form action="infos.php" method="post">
Infos : <input type="text" maxlength="255" size="110" name="infos" value="<?php if (isset($_POST['infos'])) echo htmlentities($_POST['infos']); ?>

Jack Bocar
jackbocar
le 09/04/2008 à 19:34
jackbocar
Bonjour,

Tu me dis : c'est juste un "pré-remplissage" d'input


Ok, alors, est ce utile de placer des codes de protections ?

Ou, si ça l'est, les quels sont recommandés ?

Merci de ta réponse

Jack Bocar
Répondre
LoadingChargement en cours