
TheRec
Hubmaster-
Compteur de contenus
1 777 -
Inscrit(e) le
-
Dernière visite
Tout ce qui a été posté par TheRec
-
Bonsoir, il faut utiliser la clause JOIN, voici un explicatif de cette clause avec exemples (mais en anglais) : http://www.w3schools.com/sql/sql_join.asp A toi de voir s'il te faut une jointure gauche, droit, simple, ... Dans la plus part des car un "LEFT OUTER JOIN" sera suffisant. Tu noteras qu'il n'y a pas besoin d'utiliser une clause WHERE pour effectuer la jointure, bien que dans une certaine logique c'est le procédé qui est utilisé.
-
Bonjour, à la place de : echo $res; Utilise ceci par exemple : echo mysql_result($res,0); Le résultat de "mysql_query" donne une ressource (result set) et non directement les résultats. Il faut toujours utiliser une fonction pour récupérer les données, par exemple : mysql_fetch_array mysql_fetch_assoc mysql_fetch_field mysql_fetch_object mysql_fetch_row Bonne continuation !
-
C'est juste... ce sont des directives de php.ini. Au sujet de addslashes/magic_quotes, ..., les réponses se trouvent ici : http://frederic.bouchery.free.fr/?2005/02/...rophes-magiques Il se trouve que l'apostophe (entre autres) est un caractère utilisé par PHP lors de l'interprétation. On l'utilise pour délimiter une chaîne de caractères, donc si on attribue à une variable une valeur comportant ce caractère sans l'échappper (avec un anti-slash: \ ) cela posera des problème à l'interpréteur.
-
C'est plutôt stripslashes si ton $resultat vient d'une base de données. Conernant la réception de l'e-mail, cela dépend de la configuration de ton serveur. Je suppose que tu utilises EasyPHP (comme la majorité des néophytes en PHP). Tu dois configurer un serveur SMTP valide dans le fichier httpd.conf de Apache et également regarder . Pour savoir si la commande mail à pu s'exécuter correctement (un mail peu ne pas arriver même si elle se tzermine correctement, par exemple un adresse e-mail erronée) tu peux procéder comme ceci : if(mail(stripslashes($resultat[email]), $sujet, $message."\n\n".$desin."\n\n".$copyright, $de)) { echo "Mail envoyé"; } else { echo "Erreur"; } Ceci est possible car la fonction "mail" renvoie un booléen (true ou false) une fois exécutée. Malheureusement elle ne permet pas de diagnostique plus approfondi (Serveur inatteignable, ...). Une autre pise serait que tes headers sont mal formé et que cela empêche on e-mail de partir. Regarde dans le manuel de PHP pour la syntaxe des enêtes ($de), surtout fait attention au fin de lignes dans les en-têtes c'est \r\n et non juste \n .
-
Bonjour, addslashes est une fonction, au même titre que mail. Pour lui passer des paramètres, il faut les mettre entre parenthèses. La syntaxe est : mail(addslashes($resultat[email]), $sujet, $message."\n\n".$desin."\n\n".$copyright, $de); L'interpréteur te le dit bien, il n'attends pas un '"' juste après addslahses Bonne continuation ! PS: J'ai enlever les " supplémentaires entourant les variable ("$de" , par exemple, est devenu $de) , ce n'est pas nécessaire.
-
Bonsoir, Voici un comparatif des beaucoup de ces éditeurs, gratuits et d'autres payants : http://www.geniisoft.com/showcase.nsf/WebEditors Personnellement j'aime bien FCKeditor. **EDIT** : FCKeditor permet de faire tout ce dont tu parles dans ton premier message.
-
Bonjour, je n'ai pas trouvé de classe pour le protocole XMPP non plus, mais il y a ceci : http://www.phpclasses.org/browse/package/995.html (Identification requise) C'est une classe pour se connecter et interagir avec un serveur Jabber, qui lui-même utilise le protocole XMPP, donc tu trouveras sûrement ton bonheur dans cette classe.
-
Ah d'accord, j'avais compris que "lvl" indiquait le niveau du noeud dans la hiérarchie Mais après relecture c'est vrai, il correspond à idparent de mon exemple, pardon pour la confusion !
-
Bonsoir, sans répondre à ta question pour autant, la gestion algorithmique d'arbres n'est pas "efficace" (pour autant que ta structure soit modifiée moins de fois quelle n'est affichée) si tu utilises le modèle adjacent (parent->enfant) car tu utiliseras de la récursivité pour afficher ton arbre ou créer un breadcrumbs string (Catégorie > Sous-catégorie > Sous-sous catégorie > ...). Personnellement j'utilise un arbre suivant un modèle de "Nested sets", qui est plus lourd à gérer lors de la mise à jour de la structure, mais moins lourd à parcourir. J'en avais parlé sur ce fil : http://www.webmaster-hub.com/index.php?showtopic=13620 La classes PHP a déjà été écrite en partie (je l'ai crée en me basant sur cette "librairie" de fonction), j'y ai rajouté 2-3 fonctions et amélioré d'autres. A toi de voir si tu veux l'utiliser. Concerant ton problème, je disais que tu devrais utiliser la récursivité. Le problème c'est que chaque enfant devrait être lié à un parent, spécifier le niveau (lvl) ne suffit pas... je m'explique : Niveau 1 -Niveau 1.1 -Niveau 1.2 Niveau 2 -Niveau 2.1 Dans ce cas, comment sais tu dans ta table, que Niveau 2.1 appartient à Niveau 2 et non à Niveau 1. Si tu compte sur l'rdre d'entrée des éléments dans la table, il faut vite oublier, le but de stocker de telles données dans une table est de pouvoir les modfier suivant, donc l'orde va changer très vite Le modèle adjacent se compose ainsi. Table : id idparent name 1 0 Racine 2 1 Niveau 1 3 2 Niveau 1.1 4 2 Niveau 1.2 5 1 Niveau 2 6 5 Niveau 2.1 Et éventuellement un champ "lvl" que tu metterais à jour toi-même. Ainsi chaque "catégorie" a un parent, ensuite il faut utiliser la récursivité pour remonter dans la liste, par exemple : function getPath($node) { // Recherche du parent $result = mysql_query("SELECT * FROM mytable WHERE id=".$node); if(mysql_num_rows($result) > 0) { $path = array(); $parent = mysql_fetch_array($result); // Sommes-nous arrivés à la racine ? if($parent['idparent'] != 0) { $path[] = $parent['name']; $path = array_merge(getPath($parent['idparent']), $path); } } return $path; } La récusivité commence à cette ligne : $path = array_merge(getPath($parent['idparent']), $path); On appelle la fonction qu'on est en train de créer à l'intérieur de celle-ci, le leur cas ou ces appels successif cesseront sera lorsque nous aurons atteint la racine (et également lorsqu'aucun résultat n'est trouvé dans al table, par sécurité). Cette technique représente des inconvénient dans le cadre de grosses structures hiérarchiques cela représente beaucoup d'appel, jusque pour afficher un chemin ou même laa structure complète (c'est le meme principe). Et surtout lorsqu'on n'est pas à l'aise avec la récusivité, il peut se produire des problèmes de ressources en cas de boucle infinie (par exemple lorsqu'on test ) car la fonction est chargé en mémoire à chaque fois qu'elle est appellée. En plus il y a une requête sur la base de donnée pour chaque noeud parcouru lors de la récursion. Tu trouveras plus d'aide sur le modèle adjacent dans cet article (en anglais, désolé) : http://www.sitepoint.com/article/hierarchical-data-database Bonne chance !
-
Oui effectivement la création préalable des "miniatures" (comme le conseille xpatval) avant est une solution comme une autre. Mais les utilisateur ne sont jamais très fiable dans ces situations (dimensions, format, compression , ...), on se retouve souvent avec des galeries de formes diverses ;D En fait on ne parle pas vraiement de cache dans la situation que tu cites, le cache a une nature volatile, c'est à dire qu'il n'est conservé qu'un temps. Ce que tu fais c'est stocker les images miniaturisées sur le disque, donc l'accès sera assez lent. Toutefois GD n'est pas assez performant pour surpasser les accès au disque donc c'est la bonne solution. Je procède ainsi dans le cas de galeries personnellement. L'utilisateur peut uploader autant de fichiers qu'il souhaite à la fois. C'est souvent demandé, il suffit d'utiliser la fonctionnalité de PHP qui permet de nommer un <input type="file"> avec un nom de tableau (genre fichiers[], comme nom de champ de formulaire), ce qui permet de récupérer plusieurs fichier dans le même tableau et de les analyser les un après les autres et les miniatures sont créés à ce moment-là (à partir de l'image d'origine). Il est clair que si l'utilisateur vient à modifier/supprimer une image la miniature doit être tenue à jour. Evidemment cela limite la mise à jour à mon système (le client ne peut pas uploader une image par FTP et attendre que les miniature soient créées ou mises à jour). L'autre solution aurait été de créer à chaque fois les miniatures mais comme les image (je suppose) ne changent pas toutes les 5 minutes cela n'a pas vraiment d'intérêt ! Les miniatures changent quand l'image est mises à jour.
-
Bonjour, Donc l'utilisation que tu en fais me semble erronée, je verrais plutôt ça : imagejpeg($img_out); imagedestroy($img_out); Ensuite pour récupérer la taille de ton image générée à la volée, afin de l'utiliser comme Content-length dans les header voici une méthode éfficace qui fait appel aux buffers de PHP : // Nouveau buffer ob_start(); imagejpeg( $img_out, "", 90 ); $imgdata = ob_get_contents(); $imgdatalength = ob_get_length(); // Vide le buffer sans l'envoyer ob_end_clean(); // Les en-tête, tu peux mettre les autres si tu veux aussi;) header("Content-type: image/jpeg"); header("Content-Length: ".$imgdatalength ); echo $imgdata; Concernant le cache des images, c'est à mon avis la solution la plus adéquate. Mais actuellement, où est stocké les images qui sont mises en cache ? Le fait de garder toutes les images dans un répertoire semble correcte, dans la mesure ou les fonction PHP faisant accès aux fichier utilise un cache interne, mais pour l'accès FTP au répertoire je t'avoue que ça pose des problème parfois quant à la grosseur du "LIST" des fichiers qui prends du temps à être récupérer...
-
Bonjour, la barre est développée en Javascript. Le script fait appel à l'objet XMLHttpRequest qui est la base de nombreuses application dite "Web 2.0" (qui permet de converser avec le serveur de manière asynchrone). Si tu souhaite plus d'informations sur cette aliage de technologies je te conseille d'effectuer quelques recherche sur Google et sur ce forum également avec les mots clés suivant : Web 2.0 , AJAX (pas la marque, c'est l'acronyme de Asynchronous JavaScript And XML) , AFLAX (si tu es adèpte de Flash). Bonne chance.
-
Bonjour, Ce que tu veux c'est rediriger les gens accédant à www.url1.fr vers un autre site par exemple www.url3.fr, et tout de même référencer l'ancien contenu de www.url1.fr comme contenu de www.url2.fr ... Si tu veux que tout ceci soit fait dans un seul et même temps je ne vois que le "cloaking" et c'est fortement déconseillé. Cela correspond à un redirection 301 des visiteurs de ton site vers www.url3.fr et lorsque le User-Agent (et éventuellement l'IP) de ton visiteur correspond à un crawler (robot qui indexe les pages) tu le redirige avec une redirection 301 vers www.url2.fr . Mais avec cette méthode tu as un gros risque de pénaisation de tes pages ! Une autre solution étant de laisser les visiteur de www.url1.fr cliquer sur un lien pour accéder au site www.url3.fr (vu que c'est un nouveau site, ça te permet de les avertir), dans ce cas tu laisse l'utilisateur libre de choisir sur quel site il souhaite aller... Et je vois encore un autre solution, c'est de rediriger tous les visiteurs de www.url1.fr vers www.url2.fr avec un redirection 301 et de signaler la présence du nouveau site www.url3.fr sur www.url2.fr .
-
Bonjour, comme tu as un hébergement mutualisé, il est fort possible que ton hébergeur empêche la modification de certaines ou toutes les directives du php.ini (je ne connais pas la configuration des serveurs de OVH). Mais tu peux toujours essayer de les modifier à l'exécution de ton script avec la fonction : ini_set . Les directives concernées sont : upload_max_filesize, post_max_size et max_input_time . Il est également préférable, si tu ne peux pas modifier ces directives de spécifier la taille maximum des fichiers pouvant être téléchargés vers le serveur grâce à un champs caché (<input type="hidden" name="MAX_FILE_SIZE" value="{valeur en octets}" />) dans ton formulaire, certains navigateurs n'enverrons pas le formulaire au serveur tant que le fichier choisi exède cette taille (ce qui évite des temps d'attente long et inutiles suivant les cas). Tu trouveras tous ce dont tu as besoin pour la gestion de téléchargement de fichiers vers le serveur sur cette page du manuel PHP : Gestion des chargements de fichier Bonne chance !
-
Il n'existe pas de fonction native à PHP pour effectuer ceci. Mais la librairie cURL permet de récupérer entre autres les en-têtes HTTP d'une requête sur une URL. ATTENTION, vérifie que cURL soit bien disponible, sinon cette fonction sera inutilisable (tu peux voir ceci en utilisant la fonction phpinfo() sous la rubrique "curl"). Voici un bout de code qui fait ce dont on parle (trouvé sur la page du manuel de filesize et donc ce code n'est pas de moi) : <?php /* * (mixed)remote_filesize($uri,$user='',$pw='') * returns the size of a remote stream in bytes or * the string 'unknown'. Also takes user and pw * incase the site requires authentication to access * the uri */ function remote_filesize($uri,$user='',$pw='') { // start output buffering ob_start(); // initialize curl with given uri $ch = curl_init($uri); // make sure we get the header curl_setopt($ch, CURLOPT_HEADER, 1); // make it a http HEAD request curl_setopt($ch, CURLOPT_NOBODY, 1); // if auth is needed, do it here if (!empty($user) && !empty($pw)) { $headers = array('Authorization: Basic ' . base64_encode($user.':'.$pw)); curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); } $okay = curl_exec($ch); curl_close($ch); // get the output buffer $head = ob_get_contents(); // clean the output buffer and return to previous // buffer settings ob_end_clean(); // gets you the numeric value from the Content-Length // field in the http header $regex = '/Content-Length:\s([0-9].+?)\s/'; $count = preg_match($regex, $head, $matches); // if there was a Content-Length field, its value // will now be in $matches[1] if (isset($matches[1])) { $size = $matches[1]; } else { $size = 'unknown'; } return $size; } ?> Cela inclut aussi l'Authentification Basic HTTP, si tu n'en a pas besoin, libre à toi de modifier cette fonction A la rigeur tu peux alier cette fonction avec filesize, si tu as des fichiers externes à ton site et d'autres internes, à toi de voir.
-
Réécriture d'url et modification du chemin d'accès
TheRec a répondu à australien - Forum : Techniques de Référencement
Bonjour, RewriteRule ^annonce-([a-z0-9]+).html$ /module/annonce/annonce.php?id=$1 [L] Cette règle est juste, encore que s'il n'y aura que un ou des chiffres comme paramètre tu peux laisser ceci [a-z0-9]+ pour un simple [0-9]+, mais ce n'est qu'un détail. Concernant le problème, as-tu essayé de donner le chemin sans le slash (/) de début ? RewriteRule ^annonce-([0-9]+).html$ module/annonce/annonce.php?id=$1 [L] En fonction de la configuration de ton serveur cela peut avoir un impact, le slash de début renvoi le site à la racine du serveur, configurée dans Apache (sauf erreur le DOCUMENT_ROOT). Sinon je ne vois pas vraiement d'où le problème peut venir, si tu as l'occasion de regarder le log de la réécriture d'Apache après avoir lancé la requête "-http://www.monsite.com/annonce-x.html" Cela te donnera des informations sur ce qui a été renvoyé par le serveur. Pour activer le log de réécriture je te laisse consulter l'aide de la directive RewriteLog et RewriteLogLevel . -
Bonjour, Really Simple Syndication c'est pour tes utilisateurs Tu as la tâche de leur simplifier la vie Concernant la syntaxe de <enclosure> c'est juste, la syntaxe est correcte. L'attribut length est obligatoir selon la norme RSS 2.0, mais la moajorité des lecteurs de flux n'en on pas besoin, beaucoup de flux ne l'utilisent pas. Malheureusement <enclosure> permet d'afficher une image (ou donner le lien vers cette image si le client ne permet pas l'affichage), donc ton fichier doit avoir les bonne dimensions (de préférence pas trop grande pour ne pas gaspiller ta bande passante, vu que le flux est visité souvent) et tu ne peux pas y apposer de lien. L'idée étant qu'en voyant ta miniature la personne suivra le lien vers ton article/page et y retrouvera une image de taille normale. Pour le calcul de la taille de l'image à la volée tu as une fonction native à PHP appelée filesize qui retourne la taille d'un fichier en bytes (octets) directement, comme tu connais le chemin de ton image il suffit de lui donner celui ci en paramtère à cette fonction et tu n'a plus qu'à afficher ce qu'elle aura retourné. Bonne chance !
-
Bonjour, Voici un exemple de fonction donnant une "taille lisible par l'Homme" : http://aidanlister.com/repos/v/function.size_readable.php Je te laisse traduire ceci en français si nécessaire
-
Bonjour, En "pt" (point) pour l'impression papier, tu peux aussi utiliser le "pc" (pica) pour ce cas de figure. Mais pour l'affichage sur écran c'est à prohiber. 1 point vaut 1/72e de pouce 1 pica vaut 12 points soit 1/6e de pouce Pour l'affichage écran tu as le choix entre plusieurs unités. Taile absolue : pixels (px) Relatives : pourcentages (%) ou l'unité "em" Il existe aussi une échelle plus rigide, mais également relative : xx-small, x-small, small, medium, large, x-large ou xx-large. La tendance est à l'utilisation du "em", pour permettre la redimension de la police par tes utilisateurs. Il est à noter que certain navigateur (Firefox par exemple) ne prêtent pas attention aux tailles fixes et les redimensionnent également lorsque l'utilisateur choisis une autre taille de police que la taille par défaut. Tu trouvera des informations utiles sur cette page : http://perso.wanadoo.fr/coin.des.experts/r..._49/taille.html
-
Bonjour, je dirais plutôt : setcookie("login",$login, time()+3600*24, "/", $_SERVER['HTTP_HOST'],0); setcookie("pass",$pass, time()+3600*24, "/", $_SERVER['HTTP_HOST'],0); Ensuite, tes variables seront accessible grâce au tableau de variables super globales $_COOKIE ... soit : $_COOKIE['login'] et $_COOKIE['pass'] Mais je te mets en garde sur le fait de stocker ton mot de passe en clair dans un cookie, c'est très dangereux. Le cookie étant stocké en local chez l'utilisateur, cela représente un trop grand risque. Au pire il te faut utiliser un cryptage "irréversible" comme md5 pour stocker ton mot de passe dans la base de donnée et dans le cookie, la comparaison ne se fera que sur le mot de passe crypté et seul celui qui aura enregistré son mot de passe le saura dans sa forme non-cryptée. Au mieux tu ne communiques pas le mot de passe (même s'il est crytpé dans la base de données) mais une autre variable unique (un "cookie hash") qui change à chaque fois que l'utilisateur se connecte au moyen du formulaire, ainsi seul lui pourra l'utiliser (à moins que le cookie soit volé). Le but étant d'éviter les tentatives d'attaques avec dictionnaires pour retrouver de mot de passe crytpés.
-
Bonjour, tu devrais trouver ton bonheur avec cette classe : http://www.phpclasses.org/browse/package/2674.html (Tu devra t'enregistrer, gratuitement, pour le télécharger) Si tu veux le faire toi-même tu peux toujours t'appuyer sur l'algorithme utilisé dans cette classe. Bonne chance et amuse-toi bien
-
Le fait que tu t'y connaisse peu en PHP va être un problème au début, mais il existe un projet sur SourceForce nommé PHPNFO2PNG qui pourra t'aider. Je ne l'ai pas testé, mais je suis tombé dessus récemment et à vue d'oeil il me semble fort probable que ce la fonctionne. Ensuite pour le fait d'avoir une image (PNG) généré au moment ou tu upload le fichier par FTP cela nécessiterait des triggers (déclencheurs) au niveau du serveur FTP et ce n'est pas la bonne solution à mon avis (quoi que faisable ). Personnellement je procède ainsi, un permier formulaire qui permet d'uploader le fichier NFO, le deuxième forumlaire qui est appelé lorsque le NFO est uploadé (ou non, c'est optionnel, il se peut certainement qu'une release n'ai pas de NFO au moment ou elle est ajoutée) et sur ce deuxième formulaire tu as un aperçu du NFO (celui que tu viens de récupérer grâce au premier formulaire) ainsi que des champs concernant la release... L'aperçu te sera utile pour recopier le nom de la release, la date, ... Une fois que tu as entré toutes les informations de la release et que le formulaire est soumis cela exécute un autre script qui ajoute les informations à la base de données et qui ensuite crée le PNG depuis le NFO ... pour se retrouver dans les NFO et PNG, fait deux répertoires différents...et nomme les NFO et PNG par l'ID de la release... Quelques notions nécessaires (hors mis un minimum de bases en PHP) pour ceci : Gestion des chargements de fichier à mon avis la méthode POST est la plus appropriée. Gestion des fichiers (lecture/ecriture/...) Et sûrement quelques autres que j'ai oubliées ...
-
Bonjour, la gestion du site qui référence des fichiers .nfo (je suppose dans le cadre legal, c'est à dire sans proposer d'accès à du matériel en infraction avec les lois sur les droits d'auteurs) pourrait se faire par des pages statiques, mais ce n'est pas viable. Personnellement j'ai développé mon propre système de gestion pour ce type de site. Tout d'abord le PHP semble une bonne option dans ton cas et une base de données mySQL pour stocker la liste de tes fichiers .nfo et des informations en relations avec ceux-ci (date à laquellque ils ont étés ajoutés, ...). Tu dois aussi décider si tu souhaite stocker les fichiers .nfo dans la base de données ou si tu les conserve sous la forme de fichiers sur le serveur, ... Tu devrais aussi décider si l'affichage en mode texte de ces fichiers .nfo est suffisant pour tes utilisateurs, beaucoup de ces sites proposent une image générée à partir du .nfo en utilisant des charactères ASCII (avec soit une police DOS recréée ou un charmap fait maison) pour la composer car les polices actuelles ne rendent pas réellement un bon resultats avec l'ASCII Art généralement utilisé dans ces .nfo. Ensuite il faut décider si tu souhaites faire un site dont tu délègueras les mise à jours, si c'est le cas un système multi-utilisateurs / groupes d'utilisateurs sera nécessaires, ... Je peux continuer la liste comme ceci longtemps, il faudrait nous donner plus de détails pour qu'on puisse te conseiller correctement. Je sais également que certain forums (sauf erreur phpBB) proposent des solutions mais la generation d'image à partir des NFO n'existe pas sous forme de phpBB Hack actuellement..seul l'affichage des nfo avec la police "Terminal" et en mode preformatted (<pre>) : http://www.phpbb2.de/viewtopic.php?t=3009 **EDIT** : Si tu prends -vcdquality.com comme référence, ce site est articulé autour de vBulletin (un système de forum) ... chaque .nfo (release) fait l'office d'un message dans le forum, les réponses font partie du système de commentaire et certinement que le back-end s'appuie sur la base de données du forum pour gérer les droits de chaque utilisateur.
-
Supprimer un texte identique sur le serveur
TheRec a répondu à Americas - Forum : Le salon de Webmaster Hub
Bonjour, Je suis pas expert sous Linux... mais une petite recherche sur : find and replace Bash M'a mené sur cette page : http://www.bigbold.com/snippets/posts/show/110 for fl in *.php; do mv $fl $fl.old sed 's/find/replace/g' $fl.old > $fl done Il me semble que ça devrait marcher A noter qu'un backup de tous les fichiers sera créé avec le script donné, à toi de voir si tu veux le modifier si tu es très sûr de toi -
Euh pour l'exemple c'est peut être mal choisi, tous ces liens pointent vers disney.co.uk bien que le texte du lien soit différent Google ne traîte pas du texte du lien mais du champs href (voir même de la destination finale, si redirection il y a) lorsqu'il s'agit de l'URL à indexer à ma conaissance. Mais effectivement c'est possible que les liens vers ces pages soient d'origine externe aux sites en questions... mais après avoir essayé plusieurs recherche je ne suis pas tombé sur des exemples réellement probants :S Enfin, merci de l'intérêt que tu portes à ma question (elle n'a pas l'aire de suciter l'intréêt de beaucoup d'autres ), je me doute bien que cela ne change pas la face du monde du référencement, mais je suis tombé sur cette "bizarrerie" et je souhaitait un peu plus d'info