Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
3995 connectés 

 


Pour ou contre du changement sur le topic ?


 
35.7 %
 5 votes
1.  Oui, faq / bonnes pratiques + blabla@php
 
 
0.0 %
        0 vote
2.  Oui, blabla@php uniquement
 
 
7.1 %
 1 vote
3.  Ce topic mérite la poubelle. Pauvre poubelle
 
 
21.4 %
 3 votes
4.  Non, ce topic reste tel quel
 
 
35.7 %
 5 votes
5.  Obiwan n'aime pas le php
 

Total : 16 votes (2 votes blancs)
Ce sondage est clos, vous ne pouvez plus voter
 Mot :   Pseudo :  
  Aller à la page :
 
 Page :   1  2  3  4  5  ..  35  36  37  ..  66  67  68  69  70  71
Auteur Sujet :

blabla@php | faq et bonnes pratiques page 1

n°1977657
skeye
Posté le 26-03-2010 à 10:22:17  profilanswer
 

Reprise du message précédent :

nraynaud a écrit :

hep les jeunes, de manière simplifiée je fais à peu près partout  

Code :
  1. echo json_encode(query->fetchArray())


 
c'est super, mais pour les XSS je me touche la bite, vous savez comment introduire proprement le htmlspecialchars entre les 2 ?


 
Faire un array_walk_recursive sur le tableau retourné avant de le json_encoder?
http://fr.php.net/manual/en/functi [...] ursive.php


---------------
Can't buy what I want because it's free -
mood
Publicité
Posté le 26-03-2010 à 10:22:17  profilanswer
 

n°1977660
nraynaud
lol
Posté le 26-03-2010 à 10:25:26  profilanswer
 

skeye a écrit :


 
Faire un array_walk_recursive sur le tableau retourné avant de le json_encoder?
http://fr.php.net/manual/en/functi [...] ursive.php


je peux renvoyer une copie du tableau avec ça ? je peux modifier le tableau ?


---------------
trainoo.com, c'est fini
n°1977662
skeye
Posté le 26-03-2010 à 10:28:40  profilanswer
 

nraynaud a écrit :


je peux renvoyer une copie du tableau avec ça ? je peux modifier le tableau ?


ah non, avec ça t'es obligé de passer par une variable locale...[:skeye]
Si tu tiens absolument à t'en passer, array_map doit pouvoir le faire - c'est le callback qui sera différent par contre, array_map n'est pas récursif.


---------------
Can't buy what I want because it's free -
n°1977708
nraynaud
lol
Posté le 26-03-2010 à 11:43:05  profilanswer
 

'tain mais je peux utiliser une closure en PHP ? c'est la fête à la maison !


---------------
trainoo.com, c'est fini
n°1977714
ratibus
Posté le 26-03-2010 à 11:52:15  profilanswer
 

nraynaud a écrit :

'tain mais je peux utiliser une closure en PHP ? c'est la fête à la maison !


Depuis PHP 5.3 oui


---------------
Mon blog
n°1977717
nraynaud
lol
Posté le 26-03-2010 à 11:57:48  profilanswer
 

skeye a écrit :


 
Faire un array_walk_recursive sur le tableau retourné avant de le json_encoder?
http://fr.php.net/manual/en/functi [...] ursive.php


Citation :

array_walk_recursive — Apply a user function recursively to every member of an array


Citation :

ou may notice that the key 'sweet' is never displayed. Any key that holds an array will not be passed to the function.


[:pingouino] c'est récursif dans quel sense du terme ?


---------------
trainoo.com, c'est fini
n°1977728
nraynaud
lol
Posté le 26-03-2010 à 12:22:55  profilanswer
 

Code :
  1. public static function protectHtml($array) {
  2.         $result = array();
  3.         foreach ($array as $key => $value) {
  4.             if (is_string($value))
  5.                 $result[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
  6.             else
  7.                 if (is_array($value))
  8.                     $result[$key] = Response::protectHtml($value);
  9.                 else
  10.                     $result[$key] = $value;
  11.         }
  12.         return $result;
  13.     }


critiquez (c'est pour le XSS, donc on déconne pas)

Message cité 1 fois
Message édité par nraynaud le 26-03-2010 à 12:23:27

---------------
trainoo.com, c'est fini
n°1977730
flo850
moi je
Posté le 26-03-2010 à 12:26:06  profilanswer
 

les objets sont passés directement
est ce que c'est grave ?


---------------

n°1977731
nraynaud
lol
Posté le 26-03-2010 à 12:27:28  profilanswer
 

merde, ça veut dire qu'ils auront leurs champs pas encodés ?


---------------
trainoo.com, c'est fini
n°1977733
theredled
● REC
Posté le 26-03-2010 à 12:31:59  profilanswer
 

nraynaud a écrit :

merde, ça veut dire qu'ils auront leurs champs pas encodés ?


Ouais. Foreach prend aussi les objets, donc t'as juste à faire is_array() || is_object().

 

(les objets seront transformés en tableaux associatifs par contre)

 

On s'en fout, mais c'est exprès que tu utilises pas "elseif" ?

Message cité 2 fois
Message édité par theredled le 26-03-2010 à 12:33:24

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
mood
Publicité
Posté le 26-03-2010 à 12:31:59  profilanswer
 

n°1977734
nraynaud
lol
Posté le 26-03-2010 à 12:32:13  profilanswer
 

et là ?  

Code :
  1. public static function protectHtml($array) {
  2.         $result = array();
  3.         foreach ($array as $key => $value)
  4.             if (is_string($value))
  5.                 $result[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
  6.             else if (is_array($value))
  7.                 $result[$key] = Response::protectHtml($value);
  8.             else if (is_object($value))
  9.                 $result[$key] = (object) Response::protectHtml(get_object_vars($value));
  10.             else
  11.                 $result[$key] = $value;
  12.         return $result;
  13.     }


---------------
trainoo.com, c'est fini
n°1977735
nraynaud
lol
Posté le 26-03-2010 à 12:33:22  profilanswer
 

theredled a écrit :


Ouais. Foreach prend aussi les objets, donc t'as juste à faire is_array() || is_object().
 
On s'en fout, mais c'est exprès que tu utilises par "elseif" ?


1) ah ok
2) ignorance [:ciler]


---------------
trainoo.com, c'est fini
n°1977737
theredled
● REC
Posté le 26-03-2010 à 12:38:21  profilanswer
 

Sinon jme répète, mais pourquoi tu veux traiter le JSON coté serveur, et pas juste insérer en JS en mode échappé ? (element.setText() avec mootools, element.text = "" en JS normal je crois)

Message cité 1 fois
Message édité par theredled le 26-03-2010 à 12:38:54

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1977739
ratibus
Posté le 26-03-2010 à 12:40:45  profilanswer
 

nraynaud a écrit :

Code :
  1. public static function protectHtml($array) {
  2.         $result = array();
  3.         foreach ($array as $key => $value) {
  4.             if (is_string($value))
  5.                 $result[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
  6.             else
  7.                 if (is_array($value))
  8.                     $result[$key] = Response::protectHtml($value);
  9.                 else
  10.                     $result[$key] = $value;
  11.         }
  12.         return $result;
  13.     }


critiquez (c'est pour le XSS, donc on déconne pas)


Avant de tout refaire, regarde de ce coté là :
http://trac.symfony-project.org/br [...] ib/escaper

 

Doit pas y avoir grand chose de dépendance à sf (je pourrais t'aider) pour l'intégrer dans ton projet. Ensuite t'auras juste à faire sfOutputEscaper::escape()

 

Edit : à première vue faudra utiliser d'autres exception et y a juste un appel à sfConfig pour choper le charset.
Edit2 : et t'auras besoin de ça pour les callbacks d'escaping : http://trac.symfony-project.org/br [...] Helper.php
Edit3 : t'as les test unitaires là : http://trac.symfony-project.org/br [...] it/escaper

Message cité 1 fois
Message édité par ratibus le 26-03-2010 à 12:47:50

---------------
Mon blog
n°1977744
nraynaud
lol
Posté le 26-03-2010 à 12:46:17  profilanswer
 

theredled a écrit :

Sinon jme répète, mais pourquoi tu veux traiter le JSON coté serveur, et pas juste insérer en JS en mode échappé ? (element.setText() avec mootools, element.text = "" en JS normal je crois)


je sais pas, je le sens pas le truc au cas par cas. Là je me suis planté par une point de code où tout passe.


---------------
trainoo.com, c'est fini
n°1977746
0x90
Posté le 26-03-2010 à 12:49:37  profilanswer
 

nraynaud a écrit :

et là ?  

Code :
  1. public static function protectHtml($array) {
  2.         $result = array();
  3.         foreach ($array as $key => $value)
  4.             if (is_string($value))
  5.                 $result[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
  6.             else if (is_array($value))
  7.                 $result[$key] = Response::protectHtml($value);
  8.             else if (is_object($value))
  9.                 $result[$key] = (object) Response::protectHtml(get_object_vars($value));
  10.             else
  11.                 $result[$key] = $value;
  12.         return $result;
  13.     }



Tu n'as pas de risque d'avoir de cycles dans tes objets ou entre tes tableaux ?
Dans ton else, n'importe quel type sera printé sans protection, c'est voulu ? (je sais pas ce que ça donne si c'est une resource au lieu d'être un simple nombre ou booléen)


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1977747
*syl*
--> []
Posté le 26-03-2010 à 12:57:03  profilanswer
 

nraynaud a écrit :

et là ?  

Code :
  1. public static function protectHtml($array) {
  2.         $result = array();
  3.         foreach ($array as $key => $value)
  4.             if (is_string($value))
  5.                 $result[$key] = htmlspecialchars($value, ENT_NOQUOTES, 'UTF-8');
  6.             else if (is_array($value))
  7.                 $result[$key] = Response::protectHtml($value);
  8.             else if (is_object($value))
  9.                 $result[$key] = (object) Response::protectHtml(get_object_vars($value));
  10.             else
  11.                 $result[$key] = $value;
  12.         return $result;
  13.     }



Au lieu de « Response::protectHtml » je mettrai « self::protectHtml ».

n°1977749
nraynaud
lol
Posté le 26-03-2010 à 13:10:04  profilanswer
 

0x90 a écrit :


Tu n'as pas de risque d'avoir de cycles dans tes objets ou entre tes tableaux ?
Dans ton else, n'importe quel type sera printé sans protection, c'est voulu ? (je sais pas ce que ça donne si c'est une resource au lieu d'être un simple nombre ou booléen)


1) non je pense pas que se soit possible en JSON
 
2) je sais pas quoi faire d'autre

*syl* a écrit :


Au lieu de « Response::protectHtml » je mettrai « self::protectHtml ».


ok


---------------
trainoo.com, c'est fini
n°1977750
nraynaud
lol
Posté le 26-03-2010 à 13:12:53  profilanswer
 

ratibus a écrit :


Avant de tout refaire, regarde de ce coté là :
http://trac.symfony-project.org/br [...] ib/escaper
 
Doit pas y avoir grand chose de dépendance à sf (je pourrais t'aider) pour l'intégrer dans ton projet. Ensuite t'auras juste à faire sfOutputEscaper::escape()
 
Edit : à première vue faudra utiliser d'autres exception et y a juste un appel à sfConfig pour choper le charset.
Edit2 : et t'auras besoin de ça pour les callbacks d'escaping : http://trac.symfony-project.org/br [...] Helper.php
Edit3 : t'as les test unitaires là : http://trac.symfony-project.org/br [...] it/escaper


t'as pas plutôt un truc livré avec pear ?
 
 
Je le sens pas mon truc, y'a trop de risques avec le else, surtout dans un langage aussi irrégulier que PHP. J'aurai presque envie de convertir le truc en JSON et de bosser sur le JSON, qui est beaucoup plus régulier.


---------------
trainoo.com, c'est fini
n°1977756
0x90
Posté le 26-03-2010 à 13:35:34  profilanswer
 

nraynaud a écrit :


1) non je pense pas que se soit possible en JSON


Ouais mais là t'es avant le JSON, dans le bordel que tu protège y'a peut-être une paire d'objets qui se référence, et le cas échéant ton truc va tourner en boucle jusqu'à péter.

nraynaud a écrit :


2) je sais pas quoi faire d'autre


Par défaut tu vire complètement la valeur (et tu log si t'as peur de pas comprendre un bug futur, mais il me semble qu'en php on pratique pas trop le  string-like-object qui pourrait arriver ici et disparaitre par magie alors que tu crois que c'est un vrai string, donc c'est pas un risque énorme), quand tu connais (string, integer, bool, object), tu affiche ou récurse.


---------------
Me: Django Localization, Yogo Puzzle, Chrome Grapher, C++ Signals, Brainf*ck.
n°1977759
nraynaud
lol
Posté le 26-03-2010 à 13:41:50  profilanswer
 

Code :
  1. return json_encode(Response::protectHtml(json_decode(json_encode($result))));


[:dawa]


---------------
trainoo.com, c'est fini
n°1977785
theredled
● REC
Posté le 26-03-2010 à 14:46:37  profilanswer
 

Jparlais de sa fonction, elle génère un array dans tous les cas :o


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1977833
masklinn
í dag viðrar vel til loftárása
Posté le 26-03-2010 à 16:26:15  profilanswer
 

nraynaud a écrit :

Code :
  1. return json_encode(Response::protectHtml(json_decode(json_encode($result))));


[:dawa]


C'est pour t'assurer que t'as pas de cycles, le tour encode/decode au début?


---------------
I mean, true, a cancer will probably destroy its host organism. But what about the cells whose mutations allow them to think outside the box by throwing away the limits imposed by overbearing genetic regulations? Isn't that a good thing?
n°1977850
skeye
Posté le 26-03-2010 à 17:20:26  profilanswer
 

nraynaud a écrit :


Citation :

array_walk_recursive — Apply a user function recursively to every member of an array


Citation :

ou may notice that the key 'sweet' is never displayed. Any key that holds an array will not be passed to the function.


[:pingouino] c'est récursif dans quel sense du terme ?


 
C'est récursif sur les valeurs, pas sur les clés.[:joce]
En php une clé de tableau peut être un tableau.[:petrus75]


---------------
Can't buy what I want because it's free -
n°1977860
theredled
● REC
Posté le 26-03-2010 à 17:35:49  profilanswer
 

skeye a écrit :


En php une clé de tableau peut être un tableau.[:petrus75]


Mauvaise langue :o

Citation :


php > $arr = array();
php > $arr[array('tet' => 'gtg')] = 3;
PHP Warning:  Illegal offset type in php shell code on line 1
 
Warning: Illegal offset type in php shell code on line 1
php >


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1977869
skeye
Posté le 26-03-2010 à 17:48:43  profilanswer
 

theredled a écrit :


Mauvaise langue :o

Citation :


php > $arr = array();
php > $arr[array('tet' => 'gtg')] = 3;
PHP Warning:  Illegal offset type in php shell code on line 1
 
Warning: Illegal offset type in php shell code on line 1
php >



 
Ah? Merde, je croyais qu'on pouvait.[:petrus75]
 
Bon en fait c'est logique que la clé 'sweet' apparaisse pas dans leur exemple...c'est le contenu du tableau qui figure à cet indice dans le tableau d'origine qui y passe.:o


---------------
Can't buy what I want because it's free -
n°1978090
nraynaud
lol
Posté le 28-03-2010 à 11:31:43  profilanswer
 

masklinn a écrit :


C'est pour t'assurer que t'as pas de cycles, le tour encode/decode au début?


non, pour être sûr d'avoir des types PHP pas trop tordus.


---------------
trainoo.com, c'est fini
n°1980433
theredled
● REC
Posté le 02-04-2010 à 16:03:54  profilanswer
 

Putain mais PHP gère la mémoire comme un pudding ou quoi ?  [:foudelou:3]

 

j'ai plein de gros objets, je les ->free() je les unset()...
Ca change rien, j'ai toujours le même overflow au même moment [:petrus75]

Message cité 1 fois
Message édité par theredled le 02-04-2010 à 16:04:07

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1980438
ratibus
Posté le 02-04-2010 à 16:12:51  profilanswer
 

theredled a écrit :

Putain mais PHP gère la mémoire comme un pudding ou quoi ?  [:foudelou:3]  
 
j'ai plein de gros objets, je les ->free() je les unset()...
Ca change rien, j'ai toujours le même overflow au même moment [:petrus75]


Quelle version de PHP ? Si t'es en < 5.3 t'as ptet des relations circulaires qui du coup sont pas libérées et là t'es mort :D


---------------
Mon blog
n°1980444
theredled
● REC
Posté le 02-04-2010 à 16:18:50  profilanswer
 

nan > 5.3 [:joce]

 

Bon ya ptet Doctrine en cause dans l'affaire aussi [:klemton]


Message édité par theredled le 02-04-2010 à 16:19:47

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1981710
pcgamer
tu pe pa test
Posté le 07-04-2010 à 19:09:27  profilanswer
 

Salut les leets :o
 
qui utilise APC ici ?
chez moi il garde pas les infos d'un refresh de page à l'autre :??:

Code :
  1. if (!($bar = apc_fetch('foo'))) {
  2.   echo 'caching...';
  3.   $bar = 'BAR';
  4.   apc_store('foo', $bar);
  5. }
  6. echo $bar;

affiche "caching...BAR" à chaque fois
et ce sur 2 serveurs différents:
- gentoo / apc 3.0.19 / php 5.2.11
- arch / apc 3.1.3 (la dernière bêta) / php 5.3.2
avec conf de APC par defaut
 
C'est pour utiliser avec Zend/Doctrine
d'ailleurs il y en a qui ont eu des soucis en utilisant APC pour les 2 ? car par ex le clear() de zend jarte tout le cache apc, dont celui de Doctrine  [:46249910]


---------------
master race :o
n°1981715
pcgamer
tu pe pa test
Posté le 07-04-2010 à 19:35:10  profilanswer
 

ah, pas vu celui là...
il m'affiche rien dans user cache :/
 
j'ai laissé la conf par défaut (sauf include override)

Runtime Settings
apc.cache_by_default 1
apc.coredump_unmap 0
apc.enable_cli 0
apc.enabled 1
apc.file_update_protection 2
apc.filters  
apc.gc_ttl 3600
apc.include_once_override 1
apc.max_file_size 1M
apc.mmap_file_mask  
apc.num_files_hint 1000
apc.report_autofilter 0
apc.rfc1867 0
apc.rfc1867_freq 0
apc.rfc1867_name APC_UPLOAD_PROGRESS
apc.rfc1867_prefix upload_
apc.shm_segments 1
apc.shm_size 30
apc.slam_defense 0
apc.stat 1
apc.stat_ctime 0
apc.ttl 0
apc.user_entries_hint 4096
apc.user_ttl 0
apc.write_lock 1


---------------
master race :o
n°1981723
flo850
moi je
Posté le 07-04-2010 à 20:17:56  profilanswer
 

tu as relancé apache après avoir installé apc ?

n°1981750
pcgamer
tu pe pa test
Posté le 07-04-2010 à 22:16:44  profilanswer
 

of course (même reboot pour un des seveurs), l'extension est bien chargée et marche à moitié : ça met bien les trucs dans le cache, je peux les récupérer, mais une fois le script fini le cache redevient vierge tout seul
ça fais pareil (avec le même code)
enfin je vois pas quoi tester non plus vu que ça "marche" (retours de fonctions ok aussi)  :??:
 
EDIT: "make test" foire tout aussi
 
EDIT 2: trouved [:dawa]
je me suis aperçu que sur apc.php l'uptime reste toujours à 0
un petit coup de google => suphp qui gêne, vérif rapide dans une vm sans suphp, tout roule  [:romf]  
 
ça fait chier  [:zytrasnif]


Message édité par pcgamer le 08-04-2010 à 00:21:02

---------------
master race :o
n°1982981
theredled
● REC
Posté le 11-04-2010 à 17:49:11  profilanswer
 

Ho,

 

Ya moyen désactiver le cache d'opcode d'APC sans désactiver tout ? (je veux conserver juste le data store)


Message édité par theredled le 11-04-2010 à 17:49:53

---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1982983
theredled
● REC
Posté le 11-04-2010 à 18:08:58  profilanswer
 

J'ai trouvé, ça marche avec apc.filters = ".*"...
 
A voir au niveau des perfs et tout ça.


---------------
Contes de fées en yaourt --- --- zed, souviens-toi de ma dernière lettre. --- Rate ta musique
n°1983714
nraynaud
lol
Posté le 13-04-2010 à 17:21:43  profilanswer
 

http://php.net/manual/en/book.phar.php
y'a des gens qui utilisent ça ici ? c'est comme un .war en java ? je peux avoir une partie qui va dans le docroot et une partie inaccessible au serveur web ?


---------------
trainoo.com, c'est fini
n°1983949
nraynaud
lol
Posté le 14-04-2010 à 14:54:32  profilanswer
 

var CONFIG = <?php echo json_encode($config)?>;


quand j'essaye <?= ... ?> il reconnaît pas ma balise PHP, c'est normal, y'a un réglage ?


---------------
trainoo.com, c'est fini
mood
Publicité
Posté le   profilanswer
 

 Page :   1  2  3  4  5  ..  35  36  37  ..  66  67  68  69  70  71

Aller à :
Ajouter une réponse
 

Sujets relatifs
Problème pour une mise en page sous forme de tableauAfficher sur une page web directement le resultat d'une autre page web
[PHP] Fonction include plus rapide qu'un bout de code dans la page ?Ouvrir un fichier HTML en fin de page
[Résolu] Expirer la cache au niveau de la pageexecuter une page php sans rien afficher
inserer dans ma page wikiControler le changement de page
Certificat SSL a valider pour chaque élément de pageinstallé un mdp sur une page web avec Namo
Plus de sujets relatifs à : blabla@php | faq et bonnes pratiques page 1


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)