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, Cette syntaxe a été interdite dans Internet Explorer depuis la mise à jour KB832894. Elle créait une faille de sécurité (le cache des adresses n'est pas crypté). Il es possible de restaurer le comportement pour autoriser cette syntaxe, il faut suivre les instructions se trouvant dans cette entrée de la Base de connaissances Microsoft. Si tu n'utilises pas Internet Explorer, précise-nous quel navigateur tu utilises.
  2. De plus...dans l'optique ou un encryptage à toujours ses limites tant qu'il est réversible (cela ne s'appelle plus de l'encryptage mais du hachage (hashing)) la protection mise en place pourrait être contournée (ce n'est qu'une question de temps et de motivation). Et en même temps je ne connais pas HTML Protector, mais je doute qu'il encrypte également les images avant des les envoyer au navigateur...si c'est le cas j'ai comme un doute sur l'efficacité d'un tel système Bref... les droits d'auteur tu les as des le moment ou tu réalise une uvre (au sens de la loi, et non au sens objectif du terme). Si tu veux absolument les faire valoir il faut te munir de preuve de paternité...et pour être encore plus sûr que le message passe bien à tes visiteurs, indiquer que tu es prêt à faire valoir ces droits (au moyen d'un avertissement, d'une licence Creative Commons, GNU (L)GPL, ...).
  3. Ok... donc cela à changé depuis 2003 On ne sait jamais...comme je n'ai pas pu tester ceci, j'ai bien dit "il semble" ... l'information date un peu, tant mieux si elle ne se vérifie plus. Effectivement pour 1&1 c'est étonnant, je n'ai pas d'expérience avec eux mais si je me fie aux avis lus sur le Hub ce prestataire me sembl-e(-ais) bon... peut-être que si tu le leur demande, il se justifieront à propos de cette limitation... personnellement je suis sur plusieurs serveur mutualisés (autres prestataires) et aucun ne présente cette limitation. Bonne chance.
  4. Euh... là effectivement c'est troublant. En cherchant un peu, il semble que l'hébergeur gratuit Free procède ainsi (ErrorDocument pour .html fonctionne, pour .php ne fonctionne pas. Pourquoi...sûrement pour une bonne raison, et en fait c'est gratuit, alors on demande pas "pourquoi ?" ). Est-ce que par hasard c'est ton hébergeur ? Comme l'a dit ton hébergeur : La réécriture n'aura aucun effet, à moins que tu veuilles réécrire TOUTES les URL se terminant par ".php", mais dans ce cas-là tu ne pourras pas appeler un script (par une URL) s'il a l'extension ".php". La règle donnerait ceci : RewriteEngine On RewriteRule \.php$ 404.php [L] Mais cela annihile l'extension ".php" dans tes URL, c'est un choix...peut-être te convient-il. Attention dans le fichier "404.php", il FAUT envoyer l'en-tête d'une erreur 404 : header("HTTP/1.1 404 Not Found"); Ceci avant que tout autre caractère ne soit envoyé au navigateur de ton visiteur (n'importe quel caractère, même un retour de ligne) EDIT: J'ajoute que tu devrais redéfinir ton DirectoryIndex dans ton fichier .htaccess : DirectoryIndex index.html index.htm Ou tout autre page d'index... à condition qu'il ne s'agisse plus d’un fichier avec une extension en ".php", sans que tu seras redirigé vers ta page manu-militari lorsque tu essayeras d'accéder à ta page par http://www.mondomain.com/ (sans préciser le fichier) EDIT2: Évidemment, si Free ne permet pas la réécriture d'URL (ce que Dan dit, donc tu peux le croire ), tu es dans ce qu'on appelle vulgairement une impasse... et il ne te reste à peu près que tes yeux pour pleurer sur ta page 404.php
  5. Bonsoir, Fais comme l'a dit jeroen pour les requête et si tu n'utilise qu'une instance de ta base de données (ou même si tu en as plusieurs, simplement cela demandera un calcul supplémentaire), il suffit de créer une propriété supplémentaire à ta classe. Par exemple : var $query_count; Ensuite dans ta fonction effectuant toutes les requêtes, incrémente cette variable : $result = mysql_query("SELECT * FROM table"); $this->query_count++; Ensuite à la fin de ta page, tu utiliseras quelque chose comme : echo 'Nombre de requêtes : '.$instanceDeTaClass->query_count; Si tu ne sais pas comment n'utiliser qu'une seule instance de ta classe dans tes autres classes je te suggère la lecture de cet article sur les singletons en PHP5 Pour calculer le temps utilisé par chaque requête, prends le temps avec cette fonction avant et après la requête : function microtime_float() { list($usec, $sec) = explode(" ", microtime()); return ((float)$usec + (float)$sec); } Puis tu incrémentes une autre propriété de ta classe (comme pour le compteur de requêtes) avec la différence entre ces deux valeurs obtenues avec cette fonction (temps après - temps avant). Ainsi tu as le temps total quon pris les requêtes à sexécuter. Bonne continuation.
  6. Bonsoir, Hé bien, il n'y a pas de quoi (ça doit me concerné, vu mon activité dans cette catégorie du forum Mais non, je me souviens t'avoir répondu parfois). Cela fait toujours plaisir de recevoir d'être remercié. Je te souhaite beaucoup de succès pour ton projet (et sa défense, je suppose) et j'espère que tu continueras à participer au Hub, une fois ton projet terminé/évalué. Bonne continuation et à bientôt.
  7. Bonjour, La règle suivante fonctionne (testée avec hébergement Windows et Linux) : Options +FollowSymlinks +Indexes -MultiViews RewriteEngine On RewriteRule ^inconnu[/]?$ /test/test.html [L] L'option "-MultiViews" empêche que Apache recherche un fichier "inconnu*" qui se trouverait dans le même répertoire... [/]? indique qu'il peut y avoir 0 ou 1 slash à la fin (c'est un comportement courant...c'est celui des répertoire, alors autant le reproduire lorsqu'on veut faire "croire" à un répertoire;)) Si tu es hébergé en mutualisé avec OVH par exemple, tu dois mettre le premier "/" avant "test", ils utilisent un mod_rewrite personnalisé. Si ça ne fonctionne pas, vérifie que ton mod_rewrite soit bien activé... tu as une explication dans les publications du Hub et tu peux également vérifier ceci en exécutant ce code : <?php phpinfo(); ?> Ceci dans un fichier PHP bien entendu...tu dois trouver mod_rewrite dans la rubrique "apache" à la ligne "Loaded Modules".
  8. Non je n'ai pas utilisé le service IGN (j'habite en Suisse et je n'ai pas de clientèle française actuellement), mais à mon avis et à voir le site les cartes sont payantes. Oui, tu peux utiliser l'API de Google à mon sens, mais comme je te l'ai dit : lis bien les conditions d'utilisation avant de l'utiliser (non je ne le ferais pas pour toi, je ne me charge pas de ton projet). Bonne continuation.
  9. Bonjour, Tes uvres sont légalement protégées (en France) dès leur création. Si tu veux sensibiliser tes visiteur au fait que tes uvres sont ta propriété et que tu ne leur donne qu'un droit de consultation, tu peux le mentionner sur une page de "Conditions d'utilisation", soit en citant la loi qui protège tes uvres, soit en indiquant que tes uvres sont protégée par une certaine licence (par exemple Creative Commons). Au-delà, il est impossible de protéger efficacement ton contenu, il suffit de voir ceci de la manière suivante, pour afficher le contenu de ton site tu DOIS l'envoyer à l'utilisateur, donc lorsqu'il est en possession de celui-ci rien ne l'empêche, à part la Loi (excuse du peu ), de le reproduire ou d'en faire tout autre usage. Cela ne se limite pas à Internet, un écrivain qui publie un livre risque le plagiat autant que toi Ensuite, si tu constates que tes droits en tant qu'auteur n'ont pas été respectés, tu peux te retourner contre le contrevenant... à ce moment il faudra prouver la paternité sur ton uvre. Pour détenir des preuves tu as plusieurs solutions et cela peut varier en fonction des cas... Il existe des entreprises de dépôt et d'authentification de fichiers (et même gratuit, je te laisse approfondir la recherche). Sinon tu peux également t'envoyer (à toi même donc) une lettre recommandée (avec Accusé de Réception) avec à l'intérieur le contenu de l'uvre que tu souhaites protéger et lorsque tu la reçois ne pas l'ouvrir. Si un litige survient tu pourras utiliser ceci comme preuve de paternité. Tout na pas « besoin » dêtre déposé, seules les uvres originales sont des éléments à risque (déposer un morceau dHTML na pas vraiment de sens, car il y a peu de risque de créer du code révolutionnaire dans ce cadre, par contre une image originale serait un élément à risque).
  10. Bonjour, Personnellement j'utilise trois méthodes alternatives... Redessiner (en vecteurs de préférence) un plan, généralement en m'inspirant d’une carte existante. Il y a plusieurs méthodes, celle que j'utilise généralement est de créer, dans mon programme de traitement d’image, un claque partiellement transparent et je redessine les détails dont j'ai besoin et j'utilise ma propre sélection de couleurs et traits afin que cela s'intègre correctement au site et que la carte ne soit pas une pure copie. C'est un travail fastidieux, je fais ceci uniquement si le client est prêt à payer le temps que cela me prends. Utiliser l'API de Google Maps. pour proposer une carte interactive avec les informations que tu juges nécessaires, cela pose un problème au niveau de l'accessibilité... en général je propose un résumé en texte des principales voies d'accès pour palier à ce problème. Regarde bien les conditions d'utilisation de l'API de Google Maps, tu ne peux l'utiliser que si ton site n'est pas payant, n'est pas "privé" ou un Intranet, etc. En Suisse, un organisme s'occupe de la topographie et cartographie du territoire. Sauf erreur en France c'est l'IGN qui s'occupe de cette tâche, à toi de choisir les cartes dont tu as besoin et des conditions dans lesquelles tu vas les utiliser.
  11. Oui c'est juste, j'ai mal lu... sur la ligne précédente il ferme le deuxième "if" et non le premier... my bad
  12. Bonjour, Loin de moi l'idée de vous interrompre Mais la syntaxe du premier "else" n'est pas correcte ... il manque une accolade ouvrante ({) après "else". Indente correctement ton code, ce genre d'erreur apparaît tout de suite après. J'aurais écrit cela ainsi : if (!isset($Langue)) { if(isset($_SERVER['HTTP_ACCEPT_LANGUAGE'])){ $Langue = explode(",",$_SERVER['HTTP_ACCEPT_LANGUAGE']); $Langue = strtolower(substr(chop($Langue[0]),0,2)); } else { $Langue = "fr"; // Langue par défaut, des fois que l'en-tête n'aie pas été initialisée } } else { $Langue="fr"; } include ( "index-$Langue.php" ); A noter que j'ai rajouté un "else" car il faut toujours une solution de repli (fallback) pour une gestion de langue efficace...sinon il peut arriver qu'un utilisateur ne satisfasse aucune des conditions et il aura certainement une erreur. Finalement, à ce stade tu prends les 2 premières lettres de n'importe quelle langue...cela fonctionne, mais si par hasard tu n'a pas de fichier "index-it.php" (pour les italiens) le include retournera une erreur...alors il vaudrait mieux limiter aux langages que tu souhaites et si la langue souhaitée par l'utilisateur (par son navigateur) n'existe pas, tu lui présente la langue dans une langue par défaut...
  13. Bonjour, pour la partie "capture d'écran", je pense que ce sujet devrait t'intéresser. Pour ce qui est de réduire l'image, tu pourras utiliser la librairie GD2. Et pour ce qui est d'effectuer cette tâche à intervalles régulière il te faudra un planificateur de tâche, comme crontab (si tu es sous Linux). Je ne connais pas de script "tout fait" pour effectuer cette tâche, désolé. Bonne continuation.
  14. Et donc, de rien... c'est "tout bête", mais ça tombe pas du ciel quand même. Ce n'est pas que je sois en manque de mercis, mais c'est une question de politesse.
  15. Boinjour, En complément à la réponse de Sébastien, voici l'entrée de ce caractère dans Wikipedia. D'ailleurs le nom français est officiellement l'arrobe et l'arobase (comme si un terme ne suffisait pas, l'orthographe de la première syllabe change ).
  16. De rien. Oui, effectivement il y avait une erreur dans mon expression rationnelle...je t'avoue (et je t'ai avoué) que je ne l'avais pas testée dans tous les sens Par contre tu auras un problème avec celle que tu as trouvée, si la chaîne que tu recherches est le premier mot ou le dernier mot d'une ligne il ne sera pas remplacé. $needle_s = '([\.,"(]|\s|^)(' . $needle_s . ')([\.,")]|\s|$)'; Cela devrait faire l'affaire... j'ai juste ajouté : "^" pour le sous-masque avant le mot et "$" pour celui après dans la liste d'alternatives. Sauf erreur on aurait pu faire de même avec \A et \Z (qui sont des assertions signifiant respectivement début de chaîne et fin de ligne et/ou de chaîne).
  17. Bonsoir, Je n'ai pas le temps de tester en profondeur l'expression régulière que je vais te proposer, mais les 2-3 cas que tu as cités semblent fonctionner, à toi de tester complètement. <?php /** * Perform a simple text replace * This should be used when the string does not contain HTML * (off by default) */ define('STR_HIGHLIGHT_SIMPLE', 1); /** * Only match whole words in the string * (off by default) */ define('STR_HIGHLIGHT_WHOLEWD', 2); /** * Case sensitive matching * (off by default) */ define('STR_HIGHLIGHT_CASESENS', 4); /** * Overwrite links if matched * This should be used when the replacement string is a link * (off by default) */ define('STR_HIGHLIGHT_STRIPLINKS', 8); /** * Highlight a string in text without corrupting HTML tags * * @author Aidan Lister <aidan_AT_php.net> * @version 3.1.1 * @link [url="http://aidanlister.com/repos/v/function.str_highlight.php"]http://aidanlister.com/repos/v/function.str_highlight.php[/url] * @param string $text Haystack - The text to search * @param array|string $needle Needle - The string to highlight * @param bool $options Bitwise set of options * @param array $highlight Replacement string * @return Text with needle highlighted */ function str_highlight($text, $needle, $options = null, $highlight = null) { // Default highlighting if ($highlight === null) { $highlight = '<strong>\1</strong>'; } // Select pattern to use if ($options & STR_HIGHLIGHT_SIMPLE) { $pattern = '#(%s)#'; $sl_pattern = '#(%s)#'; } else { $pattern = '#(?!<.*?)(%s)(?![^<>]*?>)#'; $sl_pattern = '#<a\s(?:.*?)>(%s)</a>#'; } // Case sensitivity if (!($options & STR_HIGHLIGHT_CASESENS)) { $pattern .= 'i'; $sl_pattern .= 'i'; } $pattern .= 'm'; $sl_pattern .= 'm'; $needle = (array) $needle; foreach ($needle as $needle_s) { $needle_s = preg_quote($needle_s); // Escape needle with optional whole word check if ($options & STR_HIGHLIGHT_WHOLEWD) { $needle_s = '([^\'-]|\s|^)(' . $needle_s . ')([^\'-]|\s|$)'; } // Strip links if ($options & STR_HIGHLIGHT_STRIPLINKS) { $sl_regex = sprintf($sl_pattern, $needle_s); $text = preg_replace($sl_regex, '\1', $text); } $regex = sprintf($pattern, $needle_s); $text = preg_replace($regex, $highlight, $text); } return $text; } ?> Cette fonction est une version modifiée de celle-ci (je suppose que c'est de celle-là dont tu t'es inspiré, à en voir les noms de variables). Je te laisse lire les options possible, le cas que tu veux traiter requière les options STR_HIGHLIGHT_WHOLEWD "et" STR_HIGHLIGHT_STRIPLINKS, donc l'appel devrait ressembler à quelque chose comme : echo str_highlight($text,$needle,STR_HIGHLIGHT_WHOLEWD|STR_HIGHLIGHT_STRIPLINKS,'\2<a href="lexique/\3">\3</a>\4'); L'usage des références arrières \2 et \4 servent à replacer les espaces ou autres caractères...car en fait la méthode que j'ai utilisé est la suivante. Au lieu de "\b" pour définir les limites du mot, j'ai redéfini une classe qui correspond à tes besoins. ([^\'-]|\s|^) <- Tout ce qui n'est pas une apostrophe ou tiret ou un espace ou un début de chaîne (c'est la référence arrière \2) ([^\'-]|\s|$) <- Tout ce qui n'est pas une apostrophe ou tiret ou un espace ou une fin de chaîne (c'est la référence arrière \3) Le début est fin de chaîne dans ces deux dernier sous-masques sont utilisable dans le contexte d'un $text multi-lignes grâce à l'option : $pattern .= 'm'; $sl_pattern .= 'm'; m représente PCRE_MULTILINE et i représente PCRE_CASELESS (des options de masque) J'espère que cela correspond à ce dont tu as besoin...tu peux toujours faire varier ces deux sous-classes.
  18. Bonjour, Hmmm.... n'y aurait-il pas possibilité de vérifier la présence de certaines valeurs des tableaux de super-globales ($_SERVER entre autres) ? Lorsque tu invoques un script depuis la ligne de commande les en-têtes HTTP ne seront pas présentes (par exemple HTTP_HOST)... alors que lorsque c'est fait au travers de HTTP et par un serveur HTTP elles le obligatoirement (attention à ne pas prendre des valeurs optionnelles, genre HTTP_ACCEPT_CHARSET). Je n'ai pas testé ceci, c'est juste un raisonnement logique de ma part... peut-être existe-t-il d'autres possibilités.
  19. Bonjour, la première partie d'une RewriteRule DOIT être un chemin relatif (au répertoire courant, ou à la RewriteBase) et non une URL complète... La seconde en revanche, PEUT être une URL, mais dans ce cas la réécriture devient une redirection...(sinon cela signifierait qu'il serait possible de masquer l'URL d'un site et présenter son contenu). Généralement c'est aussi un chemin relatif...surtout dans ton cas, tu semble vouloir atteindre des fichiers étant hébergés sur le même domaine, donc à priori sur le même espace d'hébergement. Essaie peut-être ceci, dans le répertoire "repertoire", place ce même fichier .htaccess mais en modifiant la RewriteRule ainsi : RewriteRule ^annonce-(.+)\.html$ annonce.php?libelle=$1 [L] Tu seras peut être amené à mettre le chemin complet vers tes fichiers...cela dépend de ta configuration Apache, dans ce cas à toi d'ajouter le répertoire avant le nom de fichier dans la règle de réécriture. Bonne continuation.
  20. Bonjour, Oui, cela peut sembler être du charabia...mais tout s'explique Dans (?!<.*?) ( et ) délimitent le sous-masque, comme d'habitude. ?! est une assertion négative (d'où le !) qui travaille en-deçà de la position courante. < correspond à un chevron ouvrant (tel qu'on en utilise pour un code HTML) .*? signifie, n'importe quel caractère zéro, une ou plusieurs fois. Et le point d'interrogation suivant le * signifie inverser le mode courant de PCRE pour l'option PCRE_UNGREEDY (si tu as besoin d'aide sur ce point, ce sujet éplinglé devrait d'aider) Le raisonnement pour (?![^<>]*?>) est identique, simplement ce sous-masque prend tous les caractères qui ne sont pas un chevron, jusqu'au prochain chevron fermant. Concernant ton exemple avec "AI", il vient du fait que l'assertion simple \b (qui signifie word boundary, soit délimiteur de mot) considère que l'apostrophe est un délimiteur de motet donc que "ai" dans l'expression "j'ai" est un mot, il le remplace donc pas ce que tu désires... Si tu veux changer ce comportement, je ne vois pas d'autres solution que de redéfinir une classe pour limiter tes mots et remplacer cette assertion simple \b par cette classe... le seul inconvénient c'est que pour être sur que l'apostrophe est utilisée comme dans ton exemple il faut encore vérifier le caractère la précédent...si c'est un espace, il se peut qu'en fait l'apostrophe ait été utilisée pour une 'citation' (ça arrive)...cela complique grandement la chose... Et essayer de ne pas remplacer les expressions types (j'a*, j'e*, j'i*, j'o*, j'u, j'y, d'a, ...) va vite devenir ingérable: la liste est longue et variable... tu as par exemple le cas des "h aspirés"...lorsquils ne le sont pas il y aura une apostrophe...avoir une liste exhaustive des mots en h, cest te dire comme cest ingérable efficacement ! Bonne chance.
  21. Bonjour, Jai lu tes deux codes, et je ne pourrais pas te dire exactement ce qui ne va pas, car il me manque plusieurs choses. Premièrement la structure de tes tables (on ne dit pas tableau lorsqu'il s'agit d'une table dans une base de données, le mot tableau est utilisé pour une structure en PHP par exemple) et comment elles sont liées. Deuxièmement, la requête qui pose problème. J'ai compris que c'était celle-là : $sql = "UPDATE livraison SET date_livr = '".$_POST['date_livr']."', etat_livr = '".$_POST['etat_livr']."' WHERE num_livr = '".$_POST['num_livr']."' "; Mais, comme tu l'affiches, donne-nous un exemple des valeurs... Ensuite, peut-être te fies-tu à ton application pour ce qui est de voir le résultat (l'entrée modifiée), mais peut-être que c'est à l'affichage qu'il y a un problème. Donc vérifie tes données une fois la modification effectuée directement dans la base de données (avec PhpMyAdmin ou un autre programme de gestion de base de données). Finalement, lorsque tu insères ou mets à jour des données dans une table, utilise la fonction mysql_real_escape_string pour les valeurs ventant de la part de l'utilisateur. C'est une question de sécurité, à noter également que lorsqu'il s'agit d'un nombre ou d'un id (numérique) n'entoure pas la variable par des guillemets simples ('), MySQL fait la conversion lors de la requête si tu le fais, mais à quoi bon, si tu sais que tu parles d'une valeur numérique, ne la lui présente pas comme une chaîne de caractères.
  22. Oui... par "difficilement liable", j'entendais dans le sens sans faire appelle à la ligne de commande...car effectivement dans ce cas, c'est tout à fait faisable. Avec les autres logiciels que j'ai mentionnés également.
  23. Bonsoir, Tu souhaiterais un script qui crée une "image" d'une page HTML, identique ce que cela donne un fois qu'elle a été interprétée par un navigateur. Cela impliquerait d'avoir un moteur identique à un navigateur pour faire cette interprétation (et je passe encore le fait que chaque navigateur interprète différemment une même page). Il existe des solutions (html2jpg, url2bmp, ...) qui font appel à un navigateur pour effectuer l'interprétation et qui s'occupent de faire la "capture" de l'image...mais sans cela je n'ai pas connaissance d'un script uniquement en PHP qui fait cela... Il y a aussi une extension Firefox nommée Pearl Crescent Page Saver qui permet de faire ceci depuis le menu contextuel de la page Web sur laquelle tu te trouves... mais c'est difficilement liable à un script PHP à mon avis... Bref pas de solution en PHP uniquement à mon avis.
  24. Bonjour, Parce que c'est une convention. Les robots analysent le robots.txt avant de commencer l'indexation. Qu'il existe ou non, il effectue une requête pour l'obtenir, s'il est présent il pourra l'analyser sinon il indexera tout ce qu'il trouvera (à moins qu'il respecte le meta : nofollow, noindex, ...)...ainsi ils ne vont pas dans des répertoires que tu ne souhaites pas qu'ils indexent. Certains robots en revanche ne se préoccupent pas de ce fichier... généralement ce ne sont pas des robots très populaires
  25. Bonjour, Oui et niveau accessibilité ce n'est pas terrible non plus, il faut un niveau de lecture suffisant pour recomposer un mot à partir de 2 lettres, de la longueur et du contexte... et ce n'est pas le cas de tous les visiteurs. Je ne parle pas de difficultés de lecture uniquement, mais de problèmes cognitifs également. Donc, un site mal orthographié n'est pas accessible à tous . Une raison de plus pour soigner ce point.
×
×
  • Créer...