Aller au contenu

TheRec

Hubmaster
  • Compteur de contenus

    1 777
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par TheRec

  1. Dans cette fonction, le code n'est passé dans eval qu'après avoir été nettoyé avec les différents preg_replace ... (tout ce qui n'est pas un chiffre, un opérateur, etc. est supprimé) ... alors à part ceci rien ne sera evalué.
  2. Bonjour, eval devrait faire l'affaire $str= "2000 * 10"; eval("\$str=".$str.";"); echo $str; Mais attention, si la chaîne provient d'un utilisateur cela représente de très gros risque...car l'utilisateur pourrait exécuter n'importe quel code PHP !
  3. Bonjour, Premièrement, lorsque tu spécifie une valeur pour une propriété d'un élément en XHTML, tu dois toujours fermer les guillemets. Ensuite il faut voir ce que tu souhaites faire de ces cadres... si ton cadre à une fois la fonction de contenir de texte de ton site, une autre fois le menu et une dernière le pied de page...il n'est pas logique d'utiliser le même nom pour ces 3 éléments. Il vaut mieux faire un copier/coller des valeurs si elles sont les même et si un jour cela vient à changer tu n'auras pas à te demander si en changeant ces propriétés tu va "casser" l'ensemble de ta présentation...tu ne paies pas et n'est pas payé "au nombre de sélecteur", donc tu peux en utiliser plus. Finalement, lorsque tu nomme une classe, n'y entre pas des informations qui se trouvent être liée à la présentation...car si cela vient à changer un jour tu perdra cette "logique"...si tu changes ta classe margin35 et que tu spécifies une marge de 250px à la place de 35px, tu devras changer ta classe dans la CSS et dans ton code (x)HTML EDIT : Bon j'ai compris je me tais Grillé... Pourquoi je te vois rarement en mode "réponse..." dans la liste de pseudo Dudu ? Si je t'y voyais je ne commencerais même pas à écrire
  4. TheRec

    Comparaison de date

    La solution avec MAX() est correcte aussi, et dans le cas où la date de référence est toujours "aujourd'hui", elle est plus courte et plus rapide (pas d'alogrithme de tri)... Simplement ça ne laisse pas la possibilité de changer le réféntiel alors qu'avec la forumlation avec NOW(), on peut imaginer mettre un timestamp différent pour effectuer la comparaison...à toi de voir quelle solution te convient le mieux !
  5. TheRec

    Comparaison de date

    Bonjour... en utilisant les clauses LIMIT et ORDER BY : SELECT * FROM ma_table WHERE champ_date <= NOW() ORDER BY champ_date DESC LIMIT 0, 1 Cela te retourner'élément dont la date est la plus récente par rapport au moment ou la requête est exécutée...
  6. Mais si c'est traîté par l'option Multiviews ça risque bien d'être traîté encore plus vite Vu que les Options sont examinées avant que le mod_rewrite le soit...
  7. Bonjour, J'avais un problème similaire, enfin dans le sens inverse... lorsque j'appelais une URL du type /directory/blah/ si dans ce répertoire directory il se trouvait un fichier blah.php c'est ce qu'il renvoyait à l'utilisateur... là ou cela pause un problème c'est que cette négociation de contenu est effectuée avant la réécriture d'URL... bref, ce problème a été réglé lorsque j'ai désactivé l'option MultiViews de Apache, ceci avec un fichier .htaccess placé dans directory contenant ceci : Options -MultiViews Ton problème étant à l'opposé de celui que je viens d'évoquer, essaie d'activer cette option avec : Options +MultiViews Mais il faut être conscient de ce que cette option implique (c.f. manuel Apache).
  8. Lorsque tu fais un echo de $row['ref_number'] tu affiche une chaîne de caractère (car je suppose que cela provient d'une base de données)...ce qui permet à PHP d'afficher des zéros non-significatifs... Alors que lorsque tu lui as ajouté un nombre ou effectué une autre opération mathématique, PHP s'occupe de faire la conversion de types pour toi, de chaîne de caractères à entier (ou float si tu fais une division par exemple)... Ensuite lorsque tu fais un echo de ce résultat il refait une conversion en chaîne de caractères pour l'afficher...mais tes zéros non-significatifs n'existent plus, ils sont perdus lors de la première conversion. Pour formater à l'affichage il faut utiliser sprintf ou printf ainsi, par exemple : printf("%'012d",$reference); Je te laisse lire la manuel pour la syntaxe des spécifications de conversions. P.S.: Je te conseille l'utilisation des opérateurs de post ou pre incrémentation lorsque tu veux incrémenter une varaiable...c'est plus clair à la relecture et c'est surtout plus court et plus puissant...
  9. J'ai tout comme l'impression que cela ne va pas vraiement dans les sens des conditions d'utilisation normales de Google Donc à mon avis, c'est pas un très bonne idée... Mais ton idée, il y a des gens qui l'ont eue il y a très très longtemps...quand il a fallut dire que telle distance vallait 1 mètre on a utilisé une référence absolue (dix millionième partie du quart méridien terrestre, puis distance à 0°C des axes de deux traits parallèles tracés sur le prototype internationnal en platine en un lieu spécifique, puis mesure plus précise avec des lasers)... bref la référence change dans le temps également.
  10. De rien On avait évoqué le transfert morcelé il y a quelques temps sur un sujet différent, dès fois que ça t'intéresse...
  11. Le marquage du début et de la fin des messages HTTP...c'est très important, car avec HTTP 1.0 on le savais que lorsque l'en-tête Content-Length était spécifiée. Possibilité de mettre en mémoire tampon de morceaux de données...pas uniquement des pages complètes (j'ai pas souvenir d'un client utilisant ceci :S) En gros, avec le transfert en morceaux, si tu ne spécifie pas de "Content-Length" le client pourra repartir des derniers morceaux téléchargés lorsqu'il y a interruption de transfert.Source: http://www.research.att.com/~bala/papers/h0vh1.html Les performances sont améliorées dans le sens ou les données sont transmises par flux (streaming) et non envoyée en un bloc... mais j'avoue que je ne comprends pas pourquoi dans le cadre de données compressées ils utilisent cette en-tête. Comme je l'ai expliqué avant..d'abord on reçoit tout puis on décompresse lorsque ce sont des données compressées (et le navigateur le sait car pour envoyer des données compressé on envoie Content-Encoding: gzip;), alors que ce soit par flux successifs ou non je ne pense pas que cela ait de l'importance.
  12. Cel signifie que le contenu te ta page est transféré en morceaux dont la taille est spécifié juste avant chacun d'eux... Ce qui donnerait : HTTP/1.1 200 OK Transfer-Encoding: chunked <taille-morceau1> <données-morceau1> <taille-morceau2> <données-morceau2> 0 Le "0" correspond à la fin du fichier...cela indique que le prochain morceau est vide et HTTP sait ainsi qu'il n'y a plus de morceaux. Au niveau de la compression, cela n'a aucun effet...car tes données sont compressées, puis morcellées...et ensuite ton client reçoit toutes les données, morceau par morceau, et une fois qu'il a reconstitué le tout il effectue la décompression. D'après la RFC2616, le transfer-encoding spécifie la transformation de entity-body dans le message-body (aux points 3.6, 7.2). Et que content-encoding spécifie une transformation de la donnée entité dans le entity-body (au point 7.2.1). Et donc le client DOIT d'abord inverser la transofrmation de transfer-encoding, puis celle de content-encoding.
  13. Je ne vois pas en quoi le processeur XSL pourrait en souffrir... si éventuellement c'est parce que processeur a besoin de l'arbre complet pour commencer à travailler (il ne me semble que les processeurs en général attendent de l'avoir en entier pour commencer...enfin ça parait logique), il suffit de gérer le tampon (buffer) en PHP afin que les données ne soient plus envoyées à la volée mais en un bloc... Mais même sans ça je ne vois pas pourquoi le processeur XSL aurait des problèmes...tant que l'XML n'est pas récupéré en entier il aura de la peine à le parser. L'utilisation que tu fais de la fonction document pour inclure le fichier XML au moyen d'un template fonctionne...mais l'inclusion se fait côté client (à moins d'uriliser une technologie serveur avant d'envoyer le contenu au client),et non côté serveur...avec les avantages et inconvénient que cela implique.
  14. Si j'ai bien compris, ton cas le code donnerait ceci avec un callback: <?php class Sample { var $remplace = array ("A" => "salut", "B" => "machin"); function SampleMethod($chaine_depart) { return preg_replace_callback('/\[([a-z]+)\]/i', array(&$this, '_remplace'), $chaine_depart); } function _remplace($matches) { return array_key_exists($matches[1],$this->remplace) ? $this->remplace[$matches[1]] : false; } } $sampleInstance = new Sample(); echo $sampleInstance->SampleMethod("[A] à toi, [B], ça va bien ?"); ?> C'est un usage intéressant du type callback, pour appeler la méthode d'une classe on utilise cette syntaxe : array(&$obj, 'user_function') Donc lorsque la méthode doit être appelée en callback à l'intérieur de la class, il suffit d'utiliser &$this (cela représente l'instance de l'objet par référence...je ne t'apprend rien je pense ) et le tour est joué.
  15. Bonjour, array_flip ne s'occupe que basculer les valeurs et le clés et non de basculer 2 clés dans un tableau multidimensionnels... Par contre ce bout de code fera l'affaire je pense (pas testé...il est dans les commentaires de array_flip...comme quoi, la piste était bonne) : $array = array( /* Ton tableau */ ); $arreglo_aux = array(); foreach( $arreglo as $keymaster => $value ) foreach( $value as $key => $elemento ) $arreglo_aux[$key][$keymaster] = $elemento; C'est très simple, cela ne prends pas en compte les valeurs identiques, cela ne fonctionne que pour des tableaux à deux dimensions... bref à toi d'améliorer dans le sens que tu souhaites. EDIT : Grillé...
  16. Tu peux préciser un peux plus le problème (un exemple)...parce que si c'est un objet qui est le subject de la fonction preg_replace ou preg_replace_callback ce n'est pas un problème... à condition que la propriété de l'objet que tu souhaites traîter soit de type chaîne de caractères (string). Merci d'avance.
  17. Bonsoir...enfin bonjour C'est là que les backreferences sont très utiles avec les expressions régulières : $chaine_depart = "[A] a toi, [b], ca va bien ?"; function val_remplace($matches) { $remplace = array ("A" => "salut", "B" => "machin"); // Remplace false par la valeur qui doit remplacer les balises ne se trouvant pas dans ton tableau return array_key_exists($matches[1],$remplace) ? $remplace[$matches[1]] : false; } $chaine_finale=preg_replace_callback('/\[([a-z]+)\]/i', "val_remplace", $chaine_depart); J'ai utilisé preg_replace_callback car il n'est pas possible d'utiliser une backreference (\\1 ou même \${1}) comme clé d'un tableau directement (avec preg_replace)... on touche au limites de l'interprétation des variables dans une chaîne de caractères...bref, tant mieux, cela permet de réaliser un test supplémentaire sur ce qui est trouvé La classe de caractères [a-z0-9] ne permettant pas le caractères espace, les expression entre cochets de plus d'un mots ne seront pas remplacées... bien entendu à toi de définir une classe de caractères qui te conviendra (par exemple autoriser les sous-tirets, tirets, ...) P.S. Dans le code ci-dessus, [ b ] nest pas remplacé, car les clés de tableaux sont sensibles à la casse...il est tout à fait possible de faire un strtoupper lorsquon veut rechercher la clé dans le tableau et se dire que toutes les clés du tableaux doivent être en majuscules...par exemple)
  18. Euh, j'ai une question stupide, pourquoi tu n'utiliserais pas les "include" PHP justement ? (Je sais que ce sont des fichiers XML...mais si tu les nommes .php, il y a une raison, c'est que tu veux qu'il soient interprété par le parser PHP) J'ai peut être mal compris ce que tu veux faire, mais si tu veux que le contenu de b.php soit inclus dans a.php je ne vois pas ce qui t'empêche d'utiliser un include ...
  19. Je vais résumer, si tu affiche des données qui ont été a quelque moment que ce soit été entrées ou même modifiées par un utilisateur, c'est à toi de les vérifier... donc lorsque quelqu'un recherche un mot et que tu fais ceci par exemple : echo 'Résultats pour la recherche sur "'.$_GET['keywords'].'"'; Tu laisses la possibilité à un utilisateur d'entrer des données malicieuses (un morceau de Javascript) ... Si par contre tu utilise la fonction htmlspecialchars ou strip_tags cela règle le problème... echo 'Résultats pour la recherche sur "'.strip_tags($_GET['keywords']).'"'; Pour le code que tu présente...fait ceci ainsi ...pour les dernières lignes : $message .= "L'adresse email \"".htmlspecialchars($email)."\" n'est pas valide !\n<br />\n"; $message .= "<br /><br />\n"; $message .= "<a href=\"java script:history.go(-1);\">Retour au formulaire</a>\n"; echo $message; La seule données sensible est celle donnée par l'utilisateur...(les <br/> sont de ton propre chef, l'utilisateur ne peut pas intervenir sur cette partie) P.S. : Serais-tu un de mes compatriotes ?
  20. Bonjour, Au passage il y a Gabbly qui est plus "IRC-like" ... malheureusement les fonctions de modérations sont très limitées. Effectivement, à ta place je me dirigerais vers une solution Java dans le cas où le public cible de ton projet est un minimum averti. Cela nécessite l'installation du JRE et pour un public ne disposant pas de connaissance en informatique cela sera un obstacle trop grand. En plus Java consomme passablement de ressource et lorsqu'il est utilisé dans un navigateur il a la fâcheuse tendance à faire planter ce dernier lorsque le chargement de l'applet prend trop de temps (ça c'est grandement amélioré avec les dernières versions de JRE) Sinon pour Flash, c'est la même chose (installation d'un plugin)... la lourdeur en moins, le seul problème c'est que Flash n'a pas réellement de fonctions pour la gestions de sockets, il permet d'utiliser des XMLSocket, mais cela ne permet pas de communiquer avec un serveur IRC, il te faudra donc une passerelle qui reçoit les informations en XML et qui elle crée une connexion au serveur IRC...cela pose d'autres problèmes : nombre de connexions au serveur IRC, ... si c'est toi qui héberge l'IRCd pas de problème...sinon sur des serveurs publics tu va vite te faire vider (généralement c'est limité à 3 connexion par IP) Je ne connais qu'une solution Flash complète et gratuite c'est WFIC (client) et WIG (passerelle). J'opterais pour cette dernière solution, bien que je ne l'ais jamais testée...
  21. Merci pour l'info. Puisqu'on y est, Google lance aussi Google Co-op ...c'est dans le style la calculatrice de Google ou les services de cartographie, mais personnalisable pour utiliser les services que proposent votre site. Cela peut devenir très utile pour certains utilisateur convaincus ... mais c'est un publique restraint à mon avis...faudra voir à l'usure
  22. Mais si tu vois ça sous un angle plus optimiste, ce membre qui s'inscrit pour répondre à une offre pourra découvrir le Hub et ses autres aspects...idem pour celui s'étant inscript pour faire une demande d'offres. Il me semble que le Hub est ouvert à tous, cela implique qu'on fait confiance en premier lieu et si cette confiance est mise à l'épreuve trop souvent le membre cela a des conséquences... mais juger un membre parce que son premier message est une demande d'offres n'est pas très tolérant non ? Au contraire, et ce n'est pas ce que je souhaite, si les membres étaient sélectionnés à l'inscription on pourrait exiger qu'ils viennent en premier lieu pour autre chose que chercher un prestataire ou de nouveaux clients. Les mesures prisent par Dan ce matin me semble bonnes à mon avis.
  23. Sauf pour l'auteur du message (demandeur)... qui lui devrait pouvoir soit fermer (si ce n'est pas déjà le cas...dès fois que ce soit la solution utilisée pour empêcher les réponses) le sujet...soit ajouter une réponse pour signifier que l'offre est terminée. Ou à la rigueur en l'éditant et dans ce cas-là pas de limite dans le temps pour l'édition Bref, tout ceci pour éviter aux prestataires de répondre à des offres qui ne tiennent plus.
  24. Bonjour, E_STRICT n'est disponible "que" depuis PHP5 ... testes-tu ton script avec cette version ? Si c'est le cas... l'as-tu activée, comme il l'est demandé ci-dessus ? error_reporting(E_ALL | E_STRICT);
  25. Bonjour, Cela demande une certaines infrastructure effectivement... je n'ai jamais eu l'occasion de travailler sur un cas pratique. Mais il existe en tous cas des services de ce type: Evoca (très puissant, compatible avec Skype (payant), après 100 minutes d'enregistrement c'est payant), Odeo (l'application est basée sur le framework Ruby on Rails et elle semble de très bonne facture) C'est effectivement possible de la faire toi-même...mais côté serveur tu dois te munir d'une application qui reçoit et traite les sons capturés, je n'en connais qu'une : Flash Media Server et ses composants. Avec FMS, tu utilises le composant VideoRecord qui permet d'enregistrer un flux vidéo (webcam) et audio (microphone)...avant que ces fonction soient accessible, l'utilisateur doit "Accepter" ceci par l'intermédiaire d'une fenêtre d'avertissement générée par Flash.
×
×
  • Créer...