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. Bonjour, Je ne connais qu'un seul logiciel (payant) de ce type, il fonctionne sous Windows (je suppose que c'est ce que tu cherches, désolé si ce n'est pas le cas) : NetOp School (site en anglais) Il était utilisé dans toutes les salles de cours dans l'ancienne entreprise (échelle nationale, en Suisse) où je travaillais et il était rare que nous (le service informatique) ayons eu à résoudre des problèmes liés à cette application. En revanche je ne l'ai jamais utilisée en tant qu'enseignant ou élève donc je ne peux pas vraiment te donner plus d'informations, mais selon la description cela correspond à ce que tu cherches. Bonne continuation.
  2. Bonsoir, Effectivement le lien a changé depuis et je n'ai pas pensé à le mettre à jour ici. Merci pour ton courriel Voilà le nouveau lien : http://www.hexadec.ch/hexalab/2006-06-01/3-nested-sets/ Tu trouveras le lien de téléchargement dans l'article sur mon blog. Bonne continuation et si tu y apportes des améliorations n'hésite pas à me le dire, je serai heureux de les découvrir
  3. Bonjour, Lorsque l'utilisateur effectue une action sur ton site, tu enregistre dans une variable de session (par exemple, tu peux aussi le faire dans la base de donnée) sous la forme d'un timestamp (avec la fonction time), ensuite il te suffit de faire la différence avec le timestamp courant (bien entendu tu fais ceci avant tout autre action). Un exemple rapide et non exhaustif : $maxinactivity = 50; // Temps d'inactivité maximum en minutes $now = time(); // Le timestamp actuel if(isset($_SESSION['lastactivity'])) { if((time() - $_SESSION['lastactivity']) > ($maxinactivity * 60)) { // Le la différence obtenu est en seconde (timestamp), donc on multiplie le temps maximum par 60 // Supprimer la session et déconnecter l'utilisateur } else { $_SESSION['lastactivity'] = time(); // La session n'a pas expiré, on met à jour la variable pour la prochaine vérification } } else { // Si la variable n'a pas été définie il y a plusieurs possibilités... Soit c'est la première fois que l'utilisateur se connecte // (auquel cas il faut l'initialiser.. ça se ferait pendant la procédure de login... donc on n'arrivera pas dans cette branche // du "if"... Et donc il ne reste qu'un cas, celui de l'utilisateur qui n'a pas de session. } Bonne continuation.
  4. Bonsoir, Tu peux faire cela avec la fonction number_format. Si tu connais déjà la syntaxe de formatage particulière de sprintf et printf, c'est aussi faisable ... mais number_format est tout de même plus "simple" echo "total de maTable = ".number_format($total,0,'.',' '); EDIT: Grillé en partie par smile
  5. TheRec

    Des tutos avancés...

    Bonjour, Sans pour autant faire de la pub, Developpez.com propose des cours (avancés ou non) sur pas mal de domaines. La rubrique "Méthodes & Architecture logicielle" devrait t'intéresser... Je m'y suis documenté quelques fois et la qualité des informations est bonne généralement (comme il y a plus d'un rédacteur je ne me prononcerais pas catégoriquement, de toutes façon les informations provenant du Web sont "à vérifier" en général ). Sinon à priori je te conseillerai de t'acharner à chercher avec ton moteur de recherche favori en variant les mots clés et en ne te limitant pas au français... Par exemple, le terme "schématisation" n'est pas vraiment répandu lorsque l'on parle de base de données. On parle plutôt de "modélisation", de "normalisation" (mise à la forme normale N) etc. ... Il est clair que ce n'est pas évident à formuler lorsque justement on souhaite en apprendre plus sur un sujet. Il ne faut pas non plus te limiter aux 2-3 premières pages de résultats... les domaines que tu souhaites aborder (à moins que tu aies trouvé les mots clés "justes") ne sont pas les plus "populaires" et donc il se cachent parfois Bonne chance pour tes recherches.
  6. Bonjour, Tu parles de redirection, si tu souhaites que ton utilisateur ne voie pas l'URL finale cela ne s'appelle pas une redirection mais de la réécriture et il y a de la lecture à ce sujet sur le Hub : Mod_rewrite, ou la réécriture des URL "à la volée" . Et si tu ne connais pas le nombre de paramètre tu peux même te mettre à la La réécriture d’URL récursive. Si en revanche tu souhaites que l'utilisateur soit redirigé vers ta page "index2.php?variable=donné" (qu'il ait cette URL après redirection), tu peux utiliser la directive RedirectPermanent : RedirectPermanent /repertoire http://www.tondomaine.com/index2.php?variable=donné Bonne continuation. P.S. : "jai tout essayer" ... d'un point de vue philosophique, si c'était le cas tu aurais résolu ton problème
  7. TheRec

    Détection d'entier

    Bonjour, La fonction number_format devrait faire l'affaire... Tu peux aussi utiliser des fonctions du type sprintf ou printf qui sont plus "compliquée" car elles requièrent un bref apprentissage de la syntaxe de formatage, mais elle sont plus puissantes (elle ne se limitent pas qu'au formatage des nombres). Bonne continuation.
  8. TheRec

    REGEXP et EREGI

    Bonjour, ça remonte un peu effectivement Les différences entre les deux sont les suivantes (liste non exhaustive) : PCRE est plus complet (plus de possibilité) et performant, c'est la librairie que Perl (langage de traitement de chaînes de caractères par excellence) utilise. POSIX est plus simple (syntaxe simplifiée, pas de délimiteur, pas besoin d'utiliser de meta-caractères dans certains cas, ...) et plus lisible grâce à cela. Je ne vais pas détailler chaque limite de l'un et de l'autre... personnellement je n'utilise que le moteur PCRE, car une fois la syntaxe apprise il offre beaucoup plus de possibilités. Pour le traitement de petites quantités de données et sans avoir besoin de toutes les fonctionnalités de PCRE on pourrait imaginer utiliser POSIX, mais en même temps à par devoir apprendre une autre syntaxe (elle sont tout de même assez similaires) je ne vois pas ce que cela apporte
  9. Si tu y tiens, enfin ce que j'ai dit au sujet de l'attribut "title" est valide en HTML et XHTML et je n'ai jamais dit que l'attribut "alt" n'était pas obligatoire (même en HTML il est plus que recommandé de l'utilisé, simplement pour des raisons d'accessibilité... la validation syntaxique n'est pas une fin en soi), mais peut-être que tu m'as mal lu J'indique simplement à quoi sert l'attribut "title" et comment il est interprété par différents navigateurs, vu que fgaascht ne semblait pas vraiment savoir quelle en était l'utilité. Bonne nuit !
  10. TheRec

    REGEXP et EREGI

    Bonsoir... N'aurais-tu pas la mémoire qui flanche par cette chaleur ? On en avait déjà discuté, et le message en question est épinglé dans la même section que ce message. Utilise les fonctions PCRE, elles sont plus puissantes et plus performantes, à ma connaissance POSIX ne permet pas cette distinction. Bonne continuation.
  11. Je ne sous entend pas que l'attribut "alt" soit optionnel en XHTML pour la balise "img", bien au contraire, il est effectivement obligatoire... l'attribut "title" en revanche ne l'est pas, mais il peut être utile.
  12. Bonsoir, Une petite précision, l'attribut "title" apporte une chose, au survol avec la souris l'utilisateur obtiendra une info-bulle et suivant sa configuration un lecteur d'écran pourrait utiliser cette valeur. Effectivement, Internet Explorer jusqu'à la version 6 (tiens, c'est quelque chose que je n'ai pas testé sur les version bêta de IE7) affiche le contenu de l'attribut "alt" lorsque "title" n'est pas précisé, mais ce n'est pas ce que recommande le W3C. Et d'ailleurs les autres navigateurs n'affichent une info-bulle que lorsque l'attribut "title" est renseigné, l'attribut "alt" ne doit être affiché/révélé à l'utilisateur que lorsque ce dernier ne peut pas y accéder (liens morts, images désactivées, ...). Si ta finalité est de fournir une info-bulle à tes visiteurs, utilise l'attribut "title", sinon il ne te sers effectivement pas à grand chose. Concernant le référencement je ne pourrais pas te renseigner et je te conseille de suivre les conseils de Sébastien en l'occurrence
  13. TheRec

    rewriting et htaccess

    Bonjour, Jai répondu à une question similaire ici, appliquée à ton cas cette méthode donnera ceci, à placer dans le répertoire racine de ton site, dans le fichier .htaccess : RewriteEngine On RewriteRule ^phototheque-([0-9]*)-([0-9]*)\.php$ /phototheque/index.php?album=$1&start=$2 [L] RewriteCond %{QUERY_STRING} ^start=(.+)&album=(.+)$ RewriteRule ^phototheque/index.php$ http://www.david-merlin.com/phototheque-%1-%2.php? [L] Note que j'ai changé l'ordre des paramètres dans ta première règle... ainsi lorsque la règle dépendante de la RewriteCond est appliquée et qu'il y a redirection, cela ne créera pas de boucle. Un autre moyen déviter cela aurait été de renommer ton fichier "phototheque/index.php" en autre chose et ne modifier que la première RewriteRule (ce n'est pas important pour la deuxième RewriteRule que "phototheque/index.php" existe, c'est juste une analyse de ce que le visiteur a utilisé comme adresse... alors que pour la première RewriteRule le fichier DOIT exister vu que cest ce qui est présenté à lutilisateur lorsquil tape ladresse sans paramètre Querystring) Bonne continuation !
  14. Bonjour, Je n'ai pas d'expérience réelle sur la vente de photos enligne mais j'ai déjà installé une galerie que je trouve très performante et assez simple à utiliser, elle s'appelle Gallery2 et en cherchant un peu tu trouvera le module nommé checkout qui permet aux utilisateur de payer par PayPal et de récupérer les fichiers. Ce n'est peut-être pas la solution la plus complète au niveau du commerce, mais c'est un début... Sinon l'option du osCommerce me semble tout à fait viable, il existe des modules de vente, j n'en connais pas de spécifiquement fait pour les images, mais tu peux regarder du côté de la vente de musique, le principe est le même.
  15. Bonjour, Oui, toujours est-il que Spiderta à raison sur le fait qu'un COUNT(nom_de_champ) n'est pas comparable à un COUNT(*). Je souhaite juste préciser que cela n'est valable qu'avec les tables de type MyISAM et ISAM (et hors utilisation de clause GROUP BY), d'autres type de tables comme InnoDB, ne gardent pas de compteur interne pour un accès rapide (la nature transactionnel de ces autres moteurs est problématique pour ce genre de fonctionnalités). Le manuel MySQL explique cela clairement concernant les performances.
  16. TheRec

    Détection d'entier

    Mouais... c'est relativement fiable, cela dépend d'où est utilisé le script (environnement 32 ou 64 bits, ...), la comparaison de nombres à virgule flottante n'est jamais vraiment fiable... Pour justifier cette remarque je vais citer le manuel PHP (encore... je vous rassure, je lis d'autres truc des fois ) : C'est pourquoi lorsqu'on veut comparer des nombres à virgule flottante on utilise une marge de précision généralement nommée "Epsilon" (lettre grecque) qui dépend de l'environnement en question... Donc, pour vérifier une "égalité" on procèderait ainsi : |nombre1 - nombre2| < epsilon Où epsilon est minime, par exemple : 0.0001 On peut penser que cela n'amène rien car le calcul produit également un nombre à virgule flottante, mais cette précision est utilisée au sein du même système binaire et donc par rapport à celui-ci elle est significative ! Cela peut sembler être du "bricolage", mais c'est la seule possibilité à ma connaissance d'éviter une majorité de problèmes lors de la représentation de nombres à virgule flottante et de leurs comparaisons. C'est un peu hors sujet, mais je tiens juste à préciser cela si tu viens à effectuer des comparaisons sur des nombres à virgule flottante. Ci-après les 3 fonctions que j'utilise généralement, /** * Compare equality of two floats with a presision factor : $epsilon * * @date 2005-04-02 * @param float $first First variable for comparaison * float $second Second variable for comparaison * float $epsilon Small factor to work around the float imprecision * @return bool true = equal, false = not equal */ function floatEqual($first,$second,$epsilon) { return (abs($first - $second) < $epsilon); } /** * Compare two floats to see if $first is greater or equal to $last * * @date 2005-04-02 * @param float $first First variable for comparaison * float $second Second variable for comparaison * float $epsilon Small factor to work around the float imprecision * @return bool true = greater or equal, false = smaller */ function floatGreaterOrEqual($first,$second,$epsilon) { return (floatEqual($first,$second,$epsilon) || (($first > ($second - $epsilon)) && ($first > ($second + $epsilon)))); } /** * Compare two floats to see if $first is lesser or equal to $last * * @date 2005-04-02 * @param float $first First variable for comparaison * float $second Second variable for comparaison * float $epsilon Small factor to work around the float imprecision * @return bool true = lesser or equal, false = greater */ function floatLesserOrEqual($first,$second,$epsilon) { return (floatEqual($first,$second,$epsilon) || (($first < ($second - $epsilon)) && ($first < ($second + $epsilon)))); }
  17. De rien ! Toutefois comme je te l'ai dit, ce n'est peut-être pas la solution la plus performante, donc si c'est pour un usage intensif il faudra peut-être se pencher plus longuement sur le problème À en lire ton blog, il s'agit plutôt d'une tâche qui serait réalisée qu'occasionnellement donc à toi de voir si tu souhaites vraiment passer plus de temps à chercher la solution la plus performante
  18. Bonsoir, Comme toujours... tout ce qui est sur le Web est récupérable, si tu ne veux pas que ce soit récupérable il ne faut pas le mettre sur le Web Donc la solution de hist-geo ne te protègera pas des gens qui veulent vraiment obtenir l'image originale... C'est marrant que Tizel parle de ce site, aujourd'hui même on en parle en termes mois élogieux sur Prendre un Café : Le ridicule ne tue pas Dailleurs ils donnent une solution pour récupérer sans effort limage protégée La solution du "copyright" par "digital watermark" (pardon je n'ai pas d'article en français) semble la meilleure dans ce cas... Un texte entravant limage originale et/ou une miniature découragera les gens... Des extensions PHP comme ImageMagick permettent de faire cela à la volée, lorsque tu ajoutes une image à ta base de données. Ensuite pour ce qui est de communiquer les images originale non marquées (ou marquées invisiblement) au client ayant payé tu as plusieurs solutions : courriel, URL valide durant un certain lapse de temps, etc.
  19. Utilises-tu des scripts complets pour ces application de Forum, Webmail, etc. (PhpBB, IPB, Horde, ...) ? Est-ce que tu fais également les mises à jour de ces scripts ? Fais un tour sur tous les sites de ces scripts afin de voir si ce n'est pas une nouvelle faille que tu n'aurais pas encore colmatée avec une mise à jour :S
  20. Mouais... vraiment pas très concluant, après quelques essais je tombe très souvent sur des sites utilisant uniquement les tableaux pour effectuer leur présentation, ne proposant pas de textes alternatifs aux images, ayant besoin de Javascript pour des élément primordiaux (menus, ...). Enfin c'est au moins un premier pas vers un Web plus accessible, mais un algorithme un peu plus étoffé ne fera pas de mal. Il y a encore trop de résultats parasites, espérons qu'avec le temps cela se règlera... Qui sait, dans mes songes un tel moteur remplacera le moteur de recherche traditionnel, malheureusement les impératifs financiers pressant sur Google ne lencourageront jamais dans ce sens à mon avis.
  21. Bonjour, Les failles de sécurité peuvent être multiples, ce serait impossible de toutes le envisager, mais si tu faisait les mise à jour, avait un pare-feu configuré, pas d'accès FTP, etc. Peut-être qu'il s'agit d'une faille dans un script PHP par exemple, as-tu des scripts qui accèdent au système de fichiers... ou font appel à des fonctions potentiellement risquées ? Je m'oriente vers cette éventualité car c'est une source de failles importante... Peut-être as-tu des fichiers de logs à analyser (FTP, SSH, ...), je ne connais pas l'infrastructure de OVH et comment ils la gèrent mais peut-être qu'il gardent de tels informations pour chaque serveur, essaie peut-être de les contacter à ce sujet (tout ce que tu risque c'est qu'ils te répondent que ce n'est pas de leur ressort).
  22. TheRec

    Détection d'entier

    Les fractions n'existent pas en PHP ... c'est une opération intermédiaire, une division dont tu obtiens le quotient que tu passes en second paramètre dans la fonction pow.
  23. TheRec

    Détection d'entier

    Oui exactement ! Du moins si t'as version PHP est supérieure à 4.0.6, avant et avec cette release "pow" renvoyait toujours une variable à virgule flottante ou NAN (Not a Number). Essaie de mettre $b = 1; en gardant les autres variables telles qu'elles, ta condition sera vérifiée et affichera "27 est un entier".
  24. TheRec

    Détection d'entier

    Bonjour, Il y a deux raisons à cela... La première dépend de ta version PHP : Mais dans ton cas je pencherais plus sur le fait qu'une des composantes de ton calcul est un nombre à virgule flottante (double ou float en fonction de l'architecture de ton système) provoque cela, pow semble réagir comme cela (en dépit de ce que peux dire le manuel : "Si possible, pow() retourne un entier."). Si les deux composantes de ton calcul sont des entiers, ton test retournera "true" et dans ce cas tu obtiendras la réponse que tu souhaites. Le fait que lorsque tu fasses : echo $c; Tu obtiennes "3", c'est uniquement parce que PHP n'affiche pas les 0 non significatifs par défaut... si tu veux une preuve de cela, utilise la fonction gettype : echo gettype($c); Cela affichera le type de la variable.
  25. Ok.. Donc j'avais bien compris. Ce que je ne comprends pas c'est que ton foreach va analyser une ligne de ta table de Drupal à chaque itération de ta boucle while. Mais imaginons que ta table de Drupal ne soit pas "alignée" sur la table de DC, ta condition ne sera jamais vérifiée :S Il faudrait vérifier toutes les valeurs de la table de Drupal à chaque itération de la boucle while. Cela représente une grosse charge s'il s'agit de grandes quantités de données. Sinon ce que je t'ai dit reste valable... J'aurais écrit ce code ainsi : <?php sql_connect($dc_server,$dc_user,$dc_pass,$dc_db); $query = "SELECT cat_id, cat_libelle FROM " . $dc_prefix . "categorie ORDER BY cat_ord ASC"; sql_query($query); $dc_cat = $query_result; sql_close(); sql_connect($drupal_server,$drupal_user,$drupal_pass,$drupal_db); $query = "SELECT tid, name FROM " . $drupal_prefix . "term_data ORDER BY tid ASC"; sql_query($query); $drupal_cat = $query_result; // Stocker le tableau qui sera utilisé à chaque fois...c'est plus sain que de refaire le requête à chaque itération $drupal_array = array(); while($drupal_row = mysql_fetch_array($drupal_cat, MYSQL_NUM)) { $drupal_array[$drupal_row[0]] = $drupal_row[1]; // La forme id => name ... on aurait aussi pu stocker un tableau, mais pourquoi charger la mémoire :/ } $new_dc = array(); while($dc_array = mysql_fetch_array($dc_cat, MYSQL_NUM)) { $category_match = array_search($dc_array[1],$drupal_array); // Ici tu fais une recherche du nom de la catégorie DC dans le tableau drupal, s'il y a correspondance la réponse de array search sera l'id de la catégorie. if($category_match !== false) { $new_dc[$dc_array[0]] = $category_match; } else { // Ici tu peux traîter d'un cas ou il n'y aurait pas de correspondance pour une catégorie de la table DC } } echo "<pre>"; print_r($new_dc); echo "</pre>"; ?> (Je n'ai rien testé... j'ai écrit ça à la volée :S, mais l'idée est là... il y a sûrement d'autres moyens de faire)
×
×
  • Créer...