Page 1 sur 1

session et validation w3c

Posté : 28 juil. 2006, 06:37
par lolohe
Bonjour à tous, quelqu'un peut il me mettre sur la voix sur mon problème voilà dans ma page en php j'ai voulu mettre ajouter le code suivant avant l'instruction session start (en vu d'une validation w3c):

Code : Tout sélectionner

<?php //placé avant session_start(); ini_set('arg_separator.output', '&'); ?>
ce qui donne à l'affichage:
Warning: ini_set() has been disabled for security reasons in catalogue.php on line 2
une idée? :shock:
ps:mon hébergeur est online.

merci.

Posté : 28 juil. 2006, 07:43
par Cyrano
Ça veut dire que la fonction ini_set() est désactivée et tu ne peux pas modifier les paramètres de configuration. En mutualisé, il n'y a pas de solution si on considère que tu n'as pas accès au php.ini. Donc il faut trouver une manière de contourner le problème en revoyant éventuellement la manière de programmer certains éléments et dans ce cas précis avec str_replace() par exemple.

Posté : 29 juil. 2006, 09:51
par lolohe
merci pour l'aide, j'ai essayé ça :

Code : Tout sélectionner

<? session_start(); ?> <?php function replace_et($str) { $str = htmlentities($str); $str = preg_replace('&','&',$str); return html_entity_decode($str); } replace_et(); ?>
mais je comprend pas tout :oops: ça donne des erreurs quelqu'un pour m'aider ? merci.

Posté : 29 juil. 2006, 10:21
par momox
Dans ta fonction, tu ne definis aucune chaine a traiter...
Donc ca ne peut fonctionner...

Posté : 29 juil. 2006, 10:24
par Cyrano
Dans ta fonction, tu ne definis aucune chaine a traiter...
Donc ca ne peut fonctionner...
Si je peux me permettre : il définit bien une chaine dans la fonction, c'est dans l'appel à la fonction qu'il manque le paramètre.

Posté : 29 juil. 2006, 12:10
par lolohe
je viens de faire la modif:
<?php
function replace_et($str) {
  $str = htmlentities($str);
  $str = preg_replace('&','&',$str);
  return html_entity_decode($str);
}
replace_et($str);
?>

erreur: Warning: No ending delimiter '&' found in catalogue.php on line 5

:?:

Posté : 29 juil. 2006, 13:02
par Truc
preg_replace() utilise des expression régulières qui utilisent des délimiteurs pour cette expression, par exemple:
 $str = preg_replace('#&#','&',$str);
Mais str_replace() serait plus adapté ici (sans ces délimiteurs).
Comme conseillé par Cyrano au début :wink:

Posté : 29 juil. 2006, 19:08
par lolohe
Aprés essai :

Code : Tout sélectionner

<?php str_replace("&", "&", $text); ?>
ça marche bien avec du texte mais pas dans mon cas, (je commence à douter que la validation est possible) voici le message d'erreur:

Warning Line 28 column 38: cannot generate system identifier for general entity "PHPSESSID".
<li><a href="catalogue.php?page=liens&PHPSESSID=4e4fb3d......
:evil: