session et validation w3c

lolohe
Invité n'ayant pas de compte PHPfrance

28 juil. 2006, 06:37

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.

Mammouth du PHP | 19672 Messages

28 juil. 2006, 07:43

Ç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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

lolohe
Invité n'ayant pas de compte PHPfrance

29 juil. 2006, 09:51

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.

Mammouth du PHP | 1511 Messages

29 juil. 2006, 10:21

Dans ta fonction, tu ne definis aucune chaine a traiter...
Donc ca ne peut fonctionner...

Mammouth du PHP | 19672 Messages

29 juil. 2006, 10:24

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.
Codez en pensant que celui qui maintiendra votre code est un psychopathe qui connait votre adresse :axe:

lolohe
Invité n'ayant pas de compte PHPfrance

29 juil. 2006, 12:10

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

:?:

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

29 juil. 2006, 13:02

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:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute

lolohe
Invité n'ayant pas de compte PHPfrance

29 juil. 2006, 19:08

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: