到目前为止,我编写了一个脚本,用于查找外部网站中是否存在某个文件。
<?php
if (isset($_GET['user'])){
if ($_GET['user'] != ""){
$userloc = "http://somesite.com/images/" . htmlspecialchars($_GET["user"]) . ".png";
$user = htmlspecialchars($_GET['user']);
if (getimagesize($userloc) !== false) {
echo $user . "exists!" ;
echo "<img src=\"" . $userloc . "\" height=\"100px\" />";
} else {
echo $username . "\" does not exist.";
$suggest = /* Code to find an image with a similar name */
echo "Did you mean: <a href=\"index.php?user=" . $suggest . "\"></a>";
}
}
?>
基本上,我想扩展代码,以便显示图像建议。 在PHP代码方面,我是一个完整的新手。任何帮助将非常感激。 :)
答案 0 :(得分:1)
levenshtein函数可用于查找字符串中的相似性。
假设您已正确检查文件是否存在,那么您可以使用此功能提出建议。
/**
* @param string $inputName
* @param string[] $knownNames
*
* @return string[]
*/
function getNameSuggestions($inputName, array $knownNames = array())
{
$candidates = array();
foreach ($knownNames as $candidate) {
$lev = levenshtein($inputName, $candidate);
if ($lev <= strlen($inputName) / 3 || false !== strpos($candidate, $inputName)) {
$candidates[] = $candidate;
}
}
return $candidates;
}
然后调用函数
$suggestions = getNameSuggestions((string) $_GET['user'], array(
// a list of known users
));
答案 1 :(得分:0)
您的脚本不会测试远程网站上是否存在文件。它的作用是假设文件$_GET['user'] . 'png';
存在于http://somesite.com/images/
,如果它不是""
你应该做的是这样的事情:
$remote = 'http://somesite.com/images/' . urlencode($_GET["user"]) . '.png';
if (file_get_contents($remote) !== false) {
echo 'Exists!';
} else {
echo 'Does not exist!';
// try something else or start bruteforce :P
}