Aller au contenu

francoisch

Hubmaster
  • Compteur de contenus

    678
  • Inscrit(e) le

  • Dernière visite

Tout ce qui a été posté par francoisch

  1. Bonjour Je fais deux authentifications Php à la suite pour des utilisateurs avec des droits différents. Comme mon hébergeur fait fonctionner Php en mode CGI, jutilise la variable $_SERVER['REMOTE_USER'] et le fichier Htaccess de Rewrite dont on trouve des exemples dans les forums. A la première authentification, une fois saisies les informations daccès dans la mire habituelle, la variable REMOTE_USER est initialisée à une valeur comme celle-ci: Basic bWFydGlub3Q6bWFydGlub3Q= Jen extrais : PHP_AUTH_USER: toto PHP_AUTH_PW: toto et je contrôle dans le fichier Htpasswd qui convient. Une fois passé ce premier contrôle, dans certains cas, lutilisateur doit en passer un deuxième avec une autre identité, identifiant et mot de passe différents du premier accès. Le problème : - à cette deuxième authentification (même mécanisme que pour la première), la mire daccès nest pas présentée - les variables PHP_AUTH_USER et PHP_AUTH_PW conservent leurs valeurs de la première authentification Jai essayé : - unset($PHP_AUTH_USER) et unset($PHP_AUTH_PW) - empty($_SERVER['REMOTE_USER']) - unset ($_SERVER['REMOTE_USER']) sans success. Peut-être cette méthode dautorisation nest elle pas possible deux fois de suite? Merci par avance de votre aide. Francois
  2. Jacques, merci de ta réponse. Oui, toutes les pages sont sur le même site mais Non, les pages suivantes ne sont pas dans le même dossier que la première page. Et, à la création du cookie, je n'ai pas précisé le chemin d'accès de validité du cookie. Tu as probablement identifié là mon problème; je vais corriger ça. Merci de ton aide. Francois
  3. Oui, mais: - mon cookie créé par la première page existe, ma vérification echo montre son contenu - cette page en appelle une autre qui commence par le test !isset() Je devrais donc le trouver et ne pas passer sur le code situé après le test !isset(). Mais j'y passe et c'est là où est mon problème ; à signaler que le ccokie existe tjs dans Docs & Sets. Francois
  4. Le cookie est créé par une première page, vérification visuelle faite dans Docs & Sets ; il est ensuite testé dans une deuxième page, maintenant avec isset($_COOKIE[$cookieAuthName]). Ces vérifications de son existence et de son contenu sont effectuées avec le même code dans les deux pages : echo "xxxAuth nom du Cookie: ".$cookieAuthName."<br>"; echo "xxxAuth contenu du Cookie: ".$_COOKIE[$cookieAuthName]."<br>"; Vérification à la création : creeAuth nom du Cookie: martinotP creeAuth contenu du Cookie: Martinot Vérification au test : verifAuth nom du Cookie: martinotP verifAuth contenu du Cookie: Donc le cookie, existant, ne passe pas dans la deuxième page le test isset($_COOKIE[$cookieAuthName]). Pour le cache, je ferme toujours IE v8 entre deux tests ; ça suffit à éviter des effets de cache ? Sinon, Oui, jaurais pu mettre une autre variable quune variable de session. Donc mon sujet de cookie reste entier. Merci de votre aide. Francois Mon test: if (!isset($_COOKIE[$cookieAuthName])) { // echo "verifAuth cookieAuthName n'existe pas<br>"; header( "Status: 301 Moved Permanently", false, 301); header( "Location: /pasAcces.php"); // envoi à la page d'erreur exit(); }
  5. francoisch

    Un cookie Php resistant

    Bonjour En première étape, je crée un cookie avec : setCookie($cookieAuthName,$_SESSION['familleS'],time()+60*60*24); Ensuite, pour un test de mon développement, je supprime manuellement le cookie dans Documents and settings ; vérification faite, même après un reboot, la ligne a bien disparu de lExplorateur. Plus tard, je teste la présence du cookie, qui devrait avoir disparu, avec : if (isset($cookieAuthName)) Mon problème : ce test est positif, le cookie semble toujours exister. En gros, je cherche un moyen de supprimer ce cookie qui le fasse disparaître au test isset() ou bien je cherche un autre test que isset() qui corresponde à labsence du cookie. Comme je ne connais pas très bien les cookies, je dois faire un truc de travers. Par avance merci de votre aide. Francois
  6. bonjour Ca semble fonctionner maintenant chez moi. Cette info si ça pouvait intéresser quelqu'un. Francois
  7. bonjour J'en sais un peu plus à mesure que j'avance; du moins, j'en ai l'impression. J'ai compris que: - l'ordre header('WWW-Authenticate: Basic realm="Connexion au site a0p"') provoque d'abord l'affichage de la boite d'identification puis recharge la page avec les paramètres saisis dans l'Url - les valeurs saisies peuvent être récupérées, en mode CGI, avec la variable $_SERVER['REMOTE_USER'] qui ne retourne, je crois, que l'identifiant J'ai cryu comprendre que le fichier Htaccess contenant: <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L] </IfModule> doit être placé dans la racine du site. Mais tout ça ne fonctionne pas encore chez moi. Si vous avez une idée qui pourrait m'aider, par avance merci. Francois
  8. bonjour et merci de ta réponse. En revoyant ma copie, voici ce que jessaie de faire : Proposer à mes utilisateurs, que je connais tous, deux modes de contrôle daccès suivant leurs capacités : par la boite de contrôle classique sils le peuvent, par une variable attachée à chacun à défaut (personnes âgées / handicapées) Lintérêt pour moi de gérer tous les accès est de pouvoir placer en tête de chacune de mes pages un contrôle et nen permettre laccès quà ceux qui y sont autorisés, mes visiteurs connus (no hacking) Donc : La page daccueil contrôle laccès Chaque page vérifie ensuite que le visiteur est autorisé Dans la page daccueil : Je vérifie si le visiteur doit être contrôlé en mode « facilité », si donc sa variable est positionnée A défaut, il doit passer par la mire classique de contrôle daccès Cest sur cette dernière étape que je coince ; comment faut-il sy prendre ? Ce que jai comme code pour afficher la mire de contrôle daccès : header('WWW-Authenticate: Basic realm="Connexion au site truc"'); header('HTTP/1.0 401 Unauthorized'); Un fichier Htaccess pour un dossier protégé par un contrôle d'accès classique: AuthUserFile /homez.110/fctest/tructruc/ferme/.htpasswd AuthGroupFile /dev/null AuthName "Accès à truc" AuthType Basic <Limit GET POST> require user toto </Limit> Les visiteurs qui passent par la mire de contrôle sont enregistrés, id et mdp, dans un fichier Htpasswd central. De toute évidence, il me manque plusieurs pièces pour faire fonctionner lensemble. Après laffichage de la mire : Je récupère quelles variables ? en mode Cgi, seulement $_SERVER['REMOTE_USER'] ? Comment contrôler la saisie faite par le visiteur avec ce qui est enregistré dans le Htpasswd ? avec du code Php ? Le fichier Htaccess ci-dessus est-il utile ? Par avance merci de votre aide, avec mes excuses si je pose des questions de base. Francois
  9. bonjour et merci de vos réponses. Je viens de faire la restauration de la table en utilisant la commande mysql proposée, ce qui s'est bien passé grace à vos conseils. Je n'ai effectivement aucune compétence en Linux, une matière dans laquelle je n'ai jamais suivi de formation. Je suis juste un utilisateur Windows, je construis aussi qqes sites Web pour mes besoins en utilisant du Php; actuellement, dans ce domaine du Web, je cherche une solution quand j'ai un problème. Il faudra probablement que j'aille un peu plus loin comme tu le suggères. Merci de votre aide, mon problème est résolu et j'ai appris qqechose de nouveau. Francois
  10. bonjour La copie dans la boite SQL n'a pas fonctionné très vraisemblablement parce que la table est trop volumineuse. Je vais reprendre avec la commande de Dan avec une question: - quand je fais une sauvegarde, ma commande commence par mysqldump - dans ta commande, Dan, ça commence par mysql Je comprend que je vais faire une restauration, et plus un dump; simplement, pour être sûr de ne pas me tromper, je souhaite vérifier que cette commande mysql est bien correcte pour cette restauration. Aussi, j'ai remarqué que les noms de la base et de la table dans ta commande sont séparés par un signe < alors que, dans mes sauvegardes, le séparateur est un signe >; y a t il une signification attachée au sens de ce signe? Par avance merci de ton aide. Francois
  11. bonjour et merci de vos réponses. Non, je ne peux pas importer la sauvegarde en local. Mais, extrait en éditant le fichier de sauvegarde de ma base, truc.sql, j'ai qqechose comme ça: INSERT INTO `compteur` VALUES ('chausson','','chausson/chausson.php','26/05/2008','2008-05-26'),('martinot','','martinot/martinot.php','26/05/2008','2008-05-26'),('chausson','','chausson/chausson.php','24/05/2008','2008-05-24'),('landry','', .... J'ai l'impression que je pourrai exécuter ce chargement de ces ordres dans la boite Sql de PhpMyAdmin; vrai? Si c'était faisable, ça me serait le plus simple. Francois
  12. francoisch

    Restaurer une table

    Bonjour Jai effacé par erreur une table sur ma base ; jai recréé la table et je dois maintenant restaurer son contenu. Jai une sauvegarde par mysqldump de la base ; je ne voudrais restaurer que la table effacée. Si je fais Importer dans PhpMyAdmin du fichier de sauvegarde, je vais restaurer toutes les tables, ce qui ne convient pas car certaines ont évolué depuis ma sauvegarde. Jai pensé à faire une extraction dans ce fichier de sauvegarde de la ligne concernant la table : INSERT INTO `compteur` VALUES et mettre ça en SQL dans PhpMyAdmin. Quelle est la bonne solution, avec PhpMyAdmin ou en Php ? Par avance merci de votre aide. Francois
  13. bonjour JeanLuc J'ai nettoyé mon fichier Php de libellés chinois, même les commentaires. Eh bien, maintenant, ça s'affiche correctement en chinois. Bravo, ton idée était la bonne. Merci de ton aide. Francois
  14. bonjour et merci de ta réponse. Pour en faire l'essai, j'ai supprimé dans une page les quelques libellés en français, mais sans que ça fasse apparaître les caractères chinois. De toute manière, tu as raison, je vais corriger mon fichier Php des libellés utilisé dans les pages chinoises pour que ce qui subsiste en francais s'affiche normalement, codé en Utf8. Je te dirai si ça fait une différence. Francois
  15. Une information supplémentaire: Quand j'ajoute au début d'une page une trace du genre echo ("machin: ".$machin."<br>" les caractères affichés sont bien des caractères chinois et non plus des rectangles. Donc, pour rétablir l'affichage chinois correct en IE8 WinXP, il suffirait d'ajouter une trace; ça sonne comme une bizarrerie. Par contre, l'affichage est correct en IE7, en IE8 Win7, en FF, ... Si l'un d'entre vous a une idée. Francois
  16. francoisch

    Ecrit pas écrit

    Bonjour Les pages de mon site accèdent à différentes tables installées sur lune de deux / deux de deux bases. Une page peut : - écrire / lire des tables toutes situées sur la même base - écrire / lire des tables dont certaines sont situées sur une base, dautres sur lautre base Dans ce dernier cas, jutilise deux connexions MySql, une par base. Mon problème est avec une fonction (init0) qui écrit dans une table (compteur) installée toujours sur la même base (fctestbase1) quelle que soit la page active. Le résultat : - quand la table compteur accédée est sur la même base que les autres tables accédées par la page : *** jutilise une seule connexion ***OK, lécriture est faite (vérification dans PhpMyAdmin) - quand la table compteur accédée est sur lautre base que les autres tables accédées par la page : *** jutilise 2 connexions *** KO, lécriture nest pas faite (vérification dans PhpMyAdmin) mais aucun message derreur ne lindique Une trace de lécriture qui fonctionne : Init0 db : fctestbase1 init0 connexionX: Resource id #23 init0 requeteX: INSERT INTO compteur (repertoire, espace, page, date, date2) VALUES ('Martinot', 'esp1', 'index.php', '02/01/2010', '2010-01-02') init0 resultX: 1 mysql-error: Une trace de lécriture qui ne fonctionne pas : Init0 db : fctestbase1 init0 connexionX: Resource id #29 init0 requeteX: INSERT INTO compteur (repertoire, espace, page, date, date2) VALUES ('Doe', 'esp100', 'index.php', '02/01/2010', '2010-01-02') init0 resultX: Resource id #31 mysql-error: Dans ce dernier cas, quand une autre connexion est déjà ouverte, il semble que l'écriture faite avec la seconde connexion ne se fasse pas sans le dire. J'imagine que je peux avoir deux connexions ouvertes en même temps? Faut-il prendre une précaution particulière dans ce cas? Quels moyens de diagnostic utiliser ? Par avance merci. Francois ---------------------------------------------------------------- J'ai finalement trouvé que j'utilisais des ressources (connexion, result, ...) communes aux deux connexions qui n'auraient naturellement pas dû être communes. Mon problème est résolu. Francois
  17. C'est très intéressant, je suis, moi, en WinXP. La police Unicode vient avec Microsoft Office, ce qui expliquerait que tu n'aies rien chargé si tu l'as installé. Aussi, pour la vérification, la balise: <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> présente dans toutes les pages. Autre chose dont je viens de m'apercevoir: dans mon affichage Notepad++, en Format / Encoder en Utf8 sans BOM, les caractères chinois que j'avais saisi sur mon autre PC s'affichent ici en rectangles. Même quand je fais des copier / coller à partir d'un document Word qui, lui, affiche bien en chinois. Je viens de lire:"Si la page affiche des caractères de ce type : "�" => Les données ont été enregistrées au format ISO, et le navigateur les affiche en pensant avoir affaire à de l'UTF-8." Je me demande si je n'oublie pas qqechose d'évident. Francois
  18. bonjour et merci de vos réponses. Vos résultats et les miens sont identiques: - IE7, Firefox: OK - IE8: les boutons roses et le bouton jaune affichent des rectangles Mais, ce qui m'étonne est que, en IE8, il y a aussi des affichages chinois corrects, dans le bandeau. Et tous mes libellés chinois, y compris celui du bandeau, proviennent du même fichier Php de constantes. Voici, par exemple, le code de création du premier bouton rose: "><button type="button" onclick="javascript:document.location.href='../../web/web.php?repertoire=user001&espace=esp200m'" class="bouton3 rose1rose2" id="button2"> <span class="libelle">我的网站</span ></button> tel qu'il apparaît dans la vue du code source. Le libellé est bien en caractères chinois (dans ma fenêtre IE, pas ici) mais l'affichage restitue des rectangles. Si vous avez une idée. Francois
  19. Bonjour Des pages de mon site parlent francais, dautres parlent anglais, dautres encore parlent chinois. Enfin, parlaient chinois car ça nest plus le cas, avec IE v8 (sur un autre PC que mon PC initial). Ces pages : parlaient chinois en IE v7 (sur lautre PC) parlent toujours chinois avec Firefox parlent pour partie chinois en IE v8 : certains libellés sont OK, dautres sont KO En regardant le source, voici le libellé dun bouton : <span class="libelle">我的网站</span ></ En regardant ce qui est affiché dans la page Web, ce bouton affiche plusieurs carrés. Jai bien ajouté la police de caractères ARIALUNI.TTF dans C:\WINDOWS\Fonts. Jai dû oublier qqechose en passant sur ce nouveau PC. Un coup d'oeil à http://www.a0p.fr/esp200m/user001/. Par avance merci de votre aide. Francois
  20. bonjour Mon site Web "parle" maintenant chinois, en bonne partie grace à vos conseils. Je serai heureux de fournir toutes informations utiles si quelqu'un en avait besoin. Francois
  21. Bonjour Je commence à créer un contrôle d’accès basé sur l’authentification Http en Php. J’ai trouvé ce code : if ((!isset( $_SERVER['PHP_AUTH_USER'] )) || (!isset($_SERVER['PHP_AUTH_PW']))) { header( 'WWW-Authenticate: Basic realm="Private"' ); header( 'HTTP/1.0 401 Unauthorized' ); echo '+++++ Authorization Required. +++++'; exit; } else{echo "You entered $PHP_AUTH_USER for a username.<BR>"; echo "You entered $PHP_AUTH_PW for a password.<BR>";} qui ne fonctionne pas. En creusant un peu, j’ai trouvé que : • Les 2 variables $_SERVER n’existent pas (header('content-type: text/plain'); print_r( $_SERVER ) • Que mon hébergeur tourne Php en mode CGI, ce qui expliquerait le point ci-dessus • Une description de ce qu’il faudrait mettre en œuvre dans ce cas dans http://forum.ovh.com/showthread.php?t=3275 J’ai donc : • Créé sur ma racine un .Htaccess en y mettant juste ça : <IfModule mod_rewrite.c> RewriteEngine on RewriteRule .* - [E=REMOTE_USER:%{HTTP:Authorization},L] </IfModule> AuthUserFile /homez.110/fctoto/www/ferme/.htpasswd AuthGroupFile /dev/null AuthName "Accès au site de test IsiPC" AuthType Basic <Limit GET POST> require user toto </Limit> • Ajouté devant mon Php précédent ce code if((!$_SERVER['PHP_AUTH_USER'] || !$_SERVER['PHP_AUTH_USER']) && preg_match('/Basics+(.*)$/i', $_SERVER['REMOTE_USER'], $matches)) { list($name, $password) = explode(':', base64_decode($matches[1])); $_SERVER['PHP_AUTH_USER'] = strip_tags($name); $_SERVER['PHP_AUTH_PW'] = strip_tags($password); } Ca ne fonctionne toujours pas: le script me propose l'identifiant, toto, mais ne prend pas le mot de passe, le message Authorization required sort. Par contre le Htaccess est correct car je m'en sers de manière classique. Merci par avance de votre aide. Francois
  22. Jacques, merci de ta réponse. J'ai encore fait la même erreur où je cherche à tester qqechose dans un PC (le disque F) avec du Php, pas sur un site; il faut que je me tourne plutôt vers du Javascript. Avec mes excuses. Francois
  23. francoisch

    Erreur avec is_dir()

    Bonjour Je fais : if (is_dir("F:/isipc/toto")) { echo "ccc"; } else {echo "ddd";} sur ce chemin qui existe en totalité. Résultat : le message ddd saffiche, ce qui me paraît contraire au résultat attendu du test. Merci par avance de votre aide. Francois
  24. bonjour et merci de votre aide. Ca marche, je détache maintenant les pièces jointes aux messages que mon client Imap descend et je les enregistre dans différents dossiers sur mon site. La clé a été les exemples que j'ai trouvé sur vos conseils avec imap_fetchstructure. Merci encore. Francois
×
×
  • Créer...