IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

fichier non trouvé seulement la première fois [PHP 7]


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut fichier non trouvé seulement la première fois
    Bonjour,

    je lis un fichier, mais pour être sûr qu'il n'a pas déjà été lu, je génère d'abord un hachage que je stocke en bdd, et à chaque lecture de fichier, je vérifie si la valeur hachée n'est pas présente en bdd.
    Le souci est qu'à la première lecture, j'ai un message d'erreur (non trouvé) alors que le fichier est bien là. Et si je nettoie la bdd (enlever la valeur hachée) puis le lis une seconde fois, là, ça marche bien !

    Voici mon code :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    $hash = hash_file('sha512',   $this->filepath);

    et le message d'erreur :
    ( ! ) Warning: hash_file(C:\projets\ticket_rawsrc\csv_upload\test13-licences_avec_dq - nouveauCSV2.csv): failed to open stream: No such file or directory in C:\projets\ticket_rawsrc\model\HashFile.php on line 25
    Le fichier existe bien à cet emplacement (j'ai fait un var_dump de $this->filepath) et si je nettoie la bdd puis le relis, y a plus de message d'erreur. Comment éviter ça ?

    Pour info, j'ai mis en doute la fonction hash_file, donc j'ai fait
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    $content_file = file_get_contents($this->filepath); 
        $hash = hash('sha512', $content_file);
    et j'ai eu la même chose sur la fonction file_get_contents.

  2. #2
    Membre actif
    Homme Profil pro
    Webmaster - Développeur/intégrateur web
    Inscrit en
    Septembre 2011
    Messages
    210
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Jura (Franche Comté)

    Informations professionnelles :
    Activité : Webmaster - Développeur/intégrateur web
    Secteur : Conseil

    Informations forums :
    Inscription : Septembre 2011
    Messages : 210
    Points : 246
    Points
    246
    Par défaut
    Bonjour,

    Il y a peut être un truc qui m'échappe (fin de journée...), mais je ne comprend pas comment une valeur présente en base interviendrait sur la détection ou non d'un fichier...

    Est-ce que tu a essayé d'ouvrir ton fichier avec fopen() puis le lire avec fread() ?

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Merci car j'avais pensé à tester (avec succès) fopen, mais pas été plus loin. T'ayant lu, j'ai testé et voici le code qui fonctionne :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        $handle = fopen($this->filepath, "r"); 
        $contents = fread($handle, filesize($this->filepath));
        $hash = hash('sha512', $contents);

  4. #4
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    Pour info, tu as md5_file() https://www.php.net/manual/en/function.md5-file.php qui génère un code md5 et dont l'emploi est plus simple (juste une seule ligne de code là où tu en as trois).

  5. #5
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    OK, mais que penses-tu de la fiabilité de md5 ? J'ai retenu qu'elle était faible et c'est pourquoi je me suis tourné vers un autre algorithme de hachage.

  6. #6
    Membre expert
    Avatar de cavo789
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2004
    Messages
    1 797
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Mai 2004
    Messages : 1 797
    Points : 3 076
    Points
    3 076
    Par défaut
    On ne parle pas de protection d'un mot de passe ici mais juste d'un truc pour valider si un fichier a déjà été traité.

    md5 génère un hash qui remplit exactement cela.

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    On est d'accord. Je me suis fait peur pour rien. Adopté

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. importation de données : fichier non trouvé
    Par sam01 dans le forum SQL Procédural
    Réponses: 5
    Dernier message: 18/01/2007, 15h38
  2. fichier non trouvé dans apache?
    Par darkbob dans le forum Web
    Réponses: 1
    Dernier message: 18/07/2006, 04h03
  3. Réponses: 4
    Dernier message: 04/10/2005, 11h47
  4. Création version client - fichiers non trouvés
    Par Pascal dans le forum WinDev
    Réponses: 7
    Dernier message: 03/12/2004, 12h34
  5. [Debutant][Install][VS]erreur sur fichier non trouvé.
    Par silvermoon dans le forum DirectX
    Réponses: 4
    Dernier message: 16/07/2004, 21h59

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo