2010-04-30 8 views
0
<?php 
include_once('booter/login/includes/db.php'); 

$query="SELECT * FROM shells"; 
$result=mysql_query($query); 
while($row=mysql_fetch_array($result, MYSQL_ASSOC)){ 

$hash = @md5_file($row['url']); 
echo $hash . "<br>"; 
    } 
?> 

Ce qui précède est mon code. Habituellement, il fonctionne parfaitement sur la plupart des URLs, mais de temps en temps, il ignore simplement le MD5 sur une ligne, comme s'il ne le récupérait pas, même si le fichier est présent.Utilisation de md5_file(); ne retourne pas le MD5 parfois?

Je n'arrive pas à comprendre pourquoi. Des idées?

EDIT: Lors du retrait du '@' il retourne ceci:

[function.md5-file]: failed to open stream: No such file or directory

+0

Qu'est-ce qu'un exemple de valeur pour $ row ['url']? Cela inclut-il le protocole? Essayer d'ouvrir une URL sans le protocole entraînera l'échec. – jasonbar

+0

'http: // example.com/file.php' – Rob

Répondre

1

Le @ devant md5_filesuppresses any warnings/errors qui pourraient être soulevées. La suppression du @ permet d'afficher les erreurs de md5_hash et vous permet de voir pourquoi il échoue parfois.


No such file or directory signifie simplement qu'il n'y a pas de fichier avec le nom qui a été recherché. Vous souhaiterez peut-être inspecter les URL qui provoquent ces avertissements. peut-être qu'ils se réfèrent à un fichier qui a été renommé ou déplacé.

+0

Vous ne savez pas pourquoi je n'y ai pas pensé. Sujet modifié – Rob

+0

J'ai vérifié l'URL. its there – Rob

+1

Si vous voulez le déboguer, imprimez les valeurs de ligne si vous rencontrez des erreurs (vous pouvez les voir comme PHP le fait). Si vous voulez juste éviter les erreurs, vérifiez si le fichier peut être trouvé (et/ou ouvert) avant de générer le MD5. – ssube