
TheRec
Hubmaster-
Compteur de contenus
1 777 -
Inscrit(e) le
-
Dernière visite
Tout ce qui a été posté par TheRec
-
De rien, faut remecier Google et mes bookmarks
-
Si c'est justement lorsque tu affiches (c'est en général le but du stockage de données) des données qu'un visiteur a envoyées que le risque de faille XSS est présent... je ne veux pas donner d'exemple précis ici (de code) pour des raisons évidentes... mais imagine que tu mettes un JavaScript qui envoie le contenu du cookie de ton site (si tu en utilises un) dans ce champ... si tu envoie cette page sans prêter garde à la sécurité des données qui y sont affichées, ce Javascript sera exécuté à chaque fois que quelqu'un utilisera la page ou ce texte s'affiche...et le pirate récupérera les cookies de ces utilisateurs. Y compris lorsque toi, avec ton cookie permettant d'accéder aux fonctions d'administration de ton site (par exemple), tu afficheras cette page... lorsque le pirate aura ton cookie, il pourra soit l'utiliser directement (cookie avec peu de sécurité), soit en extraire des informations pour pirater ton serveur... il y a d'autres méthodes, mais c'est la plus courante... Maintenant, si tu vérifies en amont, lorsque l'utilisateur entre les données dans la base, tu n'a pas besoin de t'en soucier à l'affichage...enfin c'est relatif, imagine qu'un pirate trouve un moyen d'utiliser une faille dans tes requêtes (SQL) sur la base de donnée et qu'il l'utilise pour insérer des données exploitant une faille XSS (comme l'exemple précédent)...tu te retrouves avec le même problème (à moins de sécuriser à l'affichage également). Cela peut paraître beaucoup de sécurité, mais dans certains cas. Dans le cadre dun système simple, auquel tu ne laisse accès quà des personnes sélectionnées tu na pas à te soucier en détails de ces problèmes (un minimum est nécessaire quand même), dès que laccès est public et que les données sont sensibles cest une nécessité de sen soucier. Et, ce nest pas pour te décourager, les pirates ne se limitent pas à ceci, il suffit de voir le nombre élevé de mises à jour de sécurité pour des systèmes de forums comme phpBB :S
-
De rien... lorsque tu utilises du Javascript, il est presque essentiel de te munir de la console Javascript de ton navigateur favori (Pour Firefox elle se trouve dans le menu : Outils / Console JavaScript ... malheureusement ou heureusement Firefox, depuis la version 1.5, y enregistre également les erreurs rencontrées lors de l'interprétation des CSS :S)
-
Bienvenue sur le Hub ! J'espère que tu y trouveras quand même plus que des liens à ajouter à ton site
-
Bonjour, Normalement ce code devrait fonctionner... il y a des exemples semblables dans les commentaires du manuel PHP... L'utilisation de la récursivité peut poser problème lorsque la longueur et le nombre de combinaisons possibles sont élevés...il y a d'autres moyen de procéder (génération aléatoire de toutes les combinaisons et utilisation de la fonction "array_unique" par exemple...mais pour une utilisation à petite échelle la récursivité devrait faire l'affaire) <?php function combinations($length, &$alphabet) { if ($length == 1) { $combination = array(); while (list($row_key, $row) = each($alphabet)) { $combination[] = array($row); }; } else { $combination = combinations($length - 1, $alphabet); reset($combination); $new_combination = array(); while (list($row_key, $row) = each($combination)) { reset($alphabet); while (list($l_key, $l) = each($alphabet)) { $new_row = $row; $new_row[] = $l; $new_combination[] = $new_row; }; } $combination = $new_combination; } return $combination; } // Caractères possibles $combination_parts = array('a','b','c','d','e','f'); // Longueur de la châine de sortie $combination_length = 5; echo 'Nombre de combinaisons possibles: '.pow(count($combination_parts), $combination_length).'<br />'; foreach ($combinations as $key => $combination) { echo ($key+1).": ".implode(" ", $combination)."<br/>"; } ?> Désolé pour l'indentation, mais CODEBOX ne semble pas aimer les espaces...ni les tabulations... je me souviens en avoir parlé à Dan, mais la modification du CSS à du être perdue lors d'une mise à jour P.S. : Au passage, si cherche à comprendre le problème au niveau mathématique, je te présente les "Arrangement avec répétition" ... Si tu aimes les mathématiques tu ne devrais pas avoir de peine à comprendre P.S.S. : En espérant que tu n'utilises pas ce code à des fins de piratage...
-
Il te marque ceci parce que tu as fait une erreur de syntaxe : <input type="image" src="http://www.site-exemple.com/club/img/b_off.gif" onclick="onclick="addbbcode(this); return false;" name="b" id="b" /> devrait être : <input type="image" src="http://www.site-exemple.com/club/img/b_off.gif" onclick="addbbcode('b'); return false;" name="b" id="b" /> Je vois également que tu as utilisé this comme paramètre...c'est bien, mais faut-il encore changer la fonction que tu appelles pour l'utiliser correctement...j'ai bien dit que si tu voulais changer ceci, la fonction Javascript changerais...la fonction que j'ai modifiée précédemment n'était pas faite pour fonctionner avec "this", ainsi tu n'avais pas besoin changer l'appel de la fonction... Ce sont deux manière de faire...je préfère celle avec this...mais libre à toi de choisir celle qui te convient. **EDIT Administrateur (TheRec)** Edition des liens morts et suppression de la marque à la demande de l'auteur.
-
Bon... le problème ne vient pas de l'appel à ta fonction...mais bel et bien de la fonction Javascript en elle-même : Erreur : document.forms.addarticle.elements[balise] has no properties Fichier source : form.php Ligne : 10 L'élément auquel tu fais référence n'existe pas (je sais que balise est une variable...), mais cela ne fonctionne pas... "elements" attent un entier pour désigner l'élément concerné. Tu peux procéder ainsi : function addbbcode(balise) { var button = document.getElementById(balise); if (button.src == '../club/img/'+balise+'_off.gif') { document.forms['addarticle'].elements['contenu'].value = document.forms['addarticle'].elements['contenu'].value+'['+balise+']'; button.src = '../club/img/'+balise+'_on.gif'; } else if (button.src == '../club/img/'+balise+'_on.gif') { document.forms['addarticle'].elements['contenu'].value = document.forms['addarticle'].elements['contenu'].value+'[/'+balise+']'; button.src = '../club/img/'+balise+'_off.gif'; } } Et lorsque tu crées ton bouton, il faut spécifier un id (pour rappel, id est unique par page, name peut être utilisé plusieurs fois par page et seul le dernier par formulaire sera envoyé) : <input type="image" src="../club/img/b_off.gif" onclick="addbbcode('b'); return false;" name="b" id="b" /> A noter encore que le Javascript tel que je te le donne ne fonctionnerait pas... l'attribut "src" reçoit une URL absolue en Javascript... Donc la comparaison devrait être faite avec "http://tondomaine.com/club/img/" et non "../club/img/". Je n'ai pas modifié le nombre de paramètres et leur type pour ta fonction...si ça n'avait pas d'importance, tu devrais plutôt passer l'objet en lui même et modifier ta fonction dans ce sens... <input type="image" src="../club/img/b_off.gif" onclick="addbbcode(this); return false;" name= "b" id="b" /> L'utilisation de this te permet d'identifier ton bouton et si tu spécifie comme name le nom de la balise tu pourras les récupérer en utilisant button.name et button.scr pour peux que tu nomme "button" le paramètre de ta fonction
-
Le "return false;" fonctionne pour le comportement que tu demandes, je l'ai testé et utilisé plusieurs fois. Peux-tu nous donner le code HTML de ton formulaire dans message...cela m'aidera sûrement à comprendre et isoler le problème.
-
Bonjour, Le fonctionnement est le même que les autres éléments HTML cliquables, un "return false;" de la part de Javascript invalide l'action de base : <input type="image" src="../club/img/b_off.gif" onclick="addbbcode('b'); return false;" name="b" /> Par contre je ne vois pas pourquoi mettre un value="b" ... mais bon à toi de voir, cela fait juste une valeur de plus à passer... lorsque le formulaire est soumis A savoir que la valeur du clic (coordonnées) et de l'élément (partie value) ne seront pas communiquées au formulaire, vu que ce bouton ne sert pas à envoyer le formulaire... A moins que Javascript soit désactivé...et tu devrais prévoir ce cas, c'est important au niveau de l'accessibilité (quoi que les bouton type="image", ce n'est pas la panacée à utiliser avec le clavier uniquement ). Lorsque Javascript est désactivé le élément fonctionne normalement, il soumet le formulaire et envoie toutes les valeurs y compris la sienne (en fait 3 dans ton cas : b_x, b_y, .
-
Un requete Insert Into dans une Boucle While
TheRec a répondu à onico0 - Forum : Les langages du Net
Bonjour, Ce ne sont pas seuelement "ses" visiteurs, le Hub est une communauté d'entraide...il essaie de t'aider et tu ne semble pas disposer à accepter son aide... Bref, passons à ton problème... après ta requête INSERT, as-tu essayé d'afficher le dernier message d'erreur généré par MySQL ? Sinon, utilise ce code juste après la requête INSERT : echo mysql_errorno()." : ".mysql_error(); -
De rien ! Bonne chance pour la suite. Si des fois le tout devient visible un de ces jours, n'hésite pas à "nous" montrer un lien...je suis sûre que le système devrait intéresser du monde, dont Arlette qui a déjà dit que ça l'intéressait Et si t'as d'autre problème, bien évidemment le Hub est là Si, si il y a d'autres développeurs PHP, mais j'ai un tendance compulsive à cliquer sur "Nouveaux messages".
-
Oui... bien entendu, lorsque tu utilises l'opérateur d'affectation = PHP ne se contente pas d'attribuer une valeur...si c'est un objet il l'attribuera en entier, de même pour les tableaux ou toutes autres structures / données. Le code que tu propose est tout à fait correct ! P.S. : L'explication de l'utilisation des objet en PHP.
-
Bonsoir, Le mappage de l'objet créé lorsque tu invoques simplexml_load_file est fait en fonction du fichier XML...l'objet reflète donc la hiérarchie du fichier XML ... tu as accès à "ItemAttributes" de ton "Item" nommé "Author" avec ceci : <?php echo $fp->Items->Item->ItemAttributes->Author; ?> Tu peux observer la structure une fois le mappage effectué avec ces 3 lignes (affichée dans un fichier HTML) : echo "<pre>"; print_r($fp); echo "</pre>"; Après avoir invoqué simplexml_load_file bien entendu... ou simplement en regardant la structure de ton fichier XML
-
Bonjour, Limpression est un des domaines ou tous les navigateurs pêchent... même Opera qui pourtant à un bon support... La gestion est prévue dans les recommandations, mais le contrôle n'est pas ou très incomplètement donné au développeurs :S Voici un sort de résumé sur l'impression de pages Web avec CSS en général et bien que cela ne soit pas le sujet l'impression des tableaux HTML en particulier. Concernant le problème en lui même, j'ai l'impression (ha!) qu'il n'y a pas vraiment de solution...les développeurs de navigateurs souhaitent laisser l'utilisateur maître de son impression et d'un côté ils ont raison...mais on devrait au moins pouvoir au moins proposer des sauts de pages, etc... Malheureusement ce n'est pas le cas en pratique.
-
Comme ta redirection se fait au milieu de ton fichier tu as deux choix... soit tu prépare toutes tes données et tu fais ta redirection avant que tout autre caractère soit envoyé au client (navigateur)... Donc tu déplaces ton code PHP au dessus de la balise <html> et celles qui suivent... Soit du utilise la gestion de buffer PHP...et tu ajoutes cette ligne à la première ligne de ton fichier : <?php ob_start(); ?> et celle-ci à la dernière ligne de ton fichier : <?php ob_end_flush(); ?> Ainsi les données ne seront envoyé qu'une fois la fonction ob_end_flush appelée et ainsi cela ne posera pas de problème à la fonction header ....mais cela à l'inconvénient d'envoyer les données de ta page en une seule fois (au niveau du buffer PHP) et donc l'utilisateur risque d'attendre devant une page vide lorsque ton script prends du temps à être exécuté... A toi de voir quelle solution te convient le mieux...
-
forum IPB. Google me laisserait il un message ?
TheRec a répondu à popov - Forum : Techniques de Référencement
Google l'a dit : Source: Google Webmaster Help Center Pour confirmer, je ne serais que le troisième, ce n'est pas du cloaking dans le cas du Hub... Le contenu présenté à Google est différent entre la version membre et non-membre (la liste des forums est retreinte pour le non-membre)... Entre la version normal et allégée le contenu des messages est le même, mais tu noteras vu le référencement dont jouit le Hub, Google ne semble pas considérer cela comme du cloaking. -
De rien... Amazon a tout à fait compris l'intérêt des API (que ce soit SOAP, REST) apparemment et c'est tant mieux ça nous facilite la vie et ça augmente leurs ventes sensiblement certainement Je ne sais pas combien d'entrées ils ont dans leur magasin mais ça doit sûrement en faire la base de données la plus vaste (surtout que cela ne se limite pas à l'ISBN, mais aussi aux code d'autres médias : EAN, SKU, UPC, ...) Merci de m'avoir forcé à chercher à m'informer sur un sujet qui m'avait toujours intéressé et que j'avais négligé par manque de temps et par oubli
-
En fait Amazon pense à tout pour ses revendeurs et "associés" : Amazon Web Services Comme ISBNdb, AWS dispose d'une API REST... et même une RPC/SOAP ...que demande le peuple... hé bien que ce soit gratuit, mais pas tout est gratuit malheureusement, daprès ce que j'ai lu ce que tu veux faire est gratuit...il faut tout de même un compte AWS. Après tu devrais pouvoir utiliser une URL du type : -http://xml.amazon.com/onca/xml3?locale=us&t=[amazon-id]&dev-t=[token]&AsinSearch=[isbn]&mode=books&%20;sort=%60+pricrerank&offer=All&type=heavy&page=&f=xml Il y a une description de l'API E-Commerce Service de AWS. Le sujet est très intéressant... si tu arrives à quelque chose je serais intéressé à voir le résultat.
-
Si tu t'orientes vers des ouvrages en Anglais et que tu n'as pas trop de moyens tu peux jetter un oeil du côté de ISBNdb ... Ils ont une API en XML facile à utiliser et environ 2 millions de livre indexés... Je n'ai pas trouvé d'équivalent (gratuit) français... EDIT: J'ai trouvé ceci encore -> http://www.isbn.org.uk/xml/ ("que" 200'000 enregistrements) EDIT2: En plus à partir du 1er janvier 2007 il va y avoir un changement pour le code ISBN...il passe de 10 à 13 chiffres -> http://www.afnil.org/
-
C'est juste, lorsque tu affiches des données provenant d'une source peu fiable (par exemple l'occurrence un visiteur), tu t'expose à une attaque par vol de cookie ou autres techniques XSS (Cross site scripting)... L'utilisation de htmlspecialchars empêche purement et simplement l'utilisation de balises HTML active...car elle transforme les caractères : & , " , ' , < et > en leurs entités respectives. Cela a pour effet d'afficher ces caractères au lieu qu'ils soient interprétés par les navigateurs. Pour ne pas être aussi restrictif, on peut utiliser la fonction strip_tags qui permet d'enlever les tags indésirable et de laisser ceux que tu désire... par exemple : echo strip_tags($message,'<b><strong><i><em>'); Permet les balises mentionnées comme deuxième paramètre...et enlève tous les commentaires et autres balises (entre autres celle à risque comme <script>). Mais si les balises sont mal formées, plus de texte que prévu ne sera enlevé...par exemple : <strong Mon texte</strong> Retournerait une chaine vide... regarde parmi les commentaires du manuel, il y a également des fonctions intéressantes créées par les utilisateurs
-
Bonjour, J'en suis sûr tu trouveras ton bonheur au niveau des techniques de référencement sur le Hub... ce n'est pas moi qui t'aiderait à ce niveau (quoi que accessibilité rime de plus en plus avec bon référencement...et c'est logique) Bref, Bienvenue sur le Hub !
-
Bonjour, tu peux éventuellement utiliser array_multisort pour classer le tableau...si cela correspond à tes besoins. Tu peux aussi regarder parmi les commentaires de cette même page, il y a de très intéressantes fonctions pour ordonner les multidimensionnels. Bonne chance
-
Bonjour, Vraisemblablement tu n'échappe pas les caractères de ta chaine de caractères $code_html avant de l'ajouter à ta table... Utilise la fonction addslashes pour les chaînes de caractères lorsque tu ajoute un élément à ta base de données... par exemple : mysql_query("INSERT INTO liste_partenaires VALUES('', '".addslashes($code_html)."')"); Et lorsque tu veux l'afficher, utilise la fonction stripslashes ... Ainsi les caractères devant être échappés (single quotes, double quotes, ...) seront échappés et ne poseront pas de problème lors de l'insertion des données... regarde les pages du manuel PHP... et jette un il à la fonction mysql_real_escape_string
-
Bonjour, C'est parce que Windows, ton environement de test, n'est pas sensible à la casse (test.php == Test.php) au niveau du système de fichiers. Alors que sur ton hébergement Linux est utilisé très probalbement et le système de fichier utilisé est sensible à la casse (test.php != Test.php)... C'est valable pour les fichiers et les dossiers bien entendu.
-
Je n'aime pas me citer...mais : C'est ce que je voulais dire