Поиск ошибок в строке поиска в php - PullRequest
0 голосов
/ 26 сентября 2018

Я пытаюсь создать код в php, который позволит мне искать (введите имя файла, данное пользователем) и отображать этот файл из моего каталога на веб-сайте.Вот код для отображения загружаемого файла PDF:

<!doctype html>
<html>
<head>

<meta charset="UTF-8">
<link rel="icon" type="image/png" sizes="32x32" href="favicon-32x32.png">
<title>Log Files</title>

<link rel="stylesheet" href="style.css">
<script src="sorttable.js"></script>
</head>

<body>
<div id="container">
<h1>Log Files</h1>

<table class="sortable">
    <thead>
    <tr>
        <th>Filename</th>
        <th>Type</th>
        <th>Size</th>
        <th>Date Modified</th>

    </tr>
    </thead>
    <tbody><?php

// Adds pretty filesizes
function pretty_filesize($file) {
    $size=filesize($file);
    if($size<1024){$size=$size." Bytes";}
    elseif(($size<1048576)&&($size>1023)){$size=round($size/1024, 1)." KB";}
    elseif(($size<1073741824)&&($size>1048575)){$size=round($size/1048576, 1)." MB";}
    else{$size=round($size/1073741824, 1)." GB";}
    return $size;
}

// Checks to see if veiwing hidden files is enabled
if($_SERVER['QUERY_STRING']=="hidden")
{$hide="";
 $ahref="./";
 $atext="Hide";}
else
{$hide=".";
 $ahref="./?hidden";
 $atext="Show";}

$directory = "downloads/";  // or example: $directory = "uploads/";
// opens this directory
$myDirectory = opendir($directory);


// Gets each entry
while($entryName=readdir($myDirectory)) {
   $dirArray[]=$entryName;
}

// Closes directory
closedir($myDirectory);

// Counts elements in array
$indexCount=count($dirArray);

// Sorts files
sort($dirArray);

// Loops through the array of files
for($index=0; $index < $indexCount; $index++) {

// Decides if hidden files should be displayed, based on query above.
    if(substr("$dirArray[$index]", 0, 1)!=$hide) {

// Resets Variables
    $favicon="";
    $class="file";


// Gets File Names
    $name=$dirArray[$index];
    $namehref=$dirArray[$index];

// Gets Date Modified
    $modtime=date("M j Y g:i A", filemtime($dirArray[$index]));
    $timekey=date("YmdHis", filemtime($dirArray[$index]));

// Separates directories, and performs operations on those directories
    if(is_dir($dirArray[$index]))
    {
            $extn="&lt;Directory&gt;";
            $size="&lt;Directory&gt;";
            $sizekey="0";
            $class="dir";

        // Gets favicon.ico, and displays it, only if it exists.
            if(file_exists("$namehref/favicon-32x32.png"))
                {
                    $favicon=" style='background-image:url($namehref/favicon-32x32.png);'";
                    $extn="&lt;Website&gt;";
                }

        // Cleans up . and .. directories
            if($name=="."){$name=". (Current Directory)"; $extn="&lt;System Dir&gt;"; $favicon=" style='background-image:url($namehref/.favicon-32x32.png);'";}
            if($name==".."){$name=".. (Parent Directory)"; $extn="&lt;System Dir&gt;";}
    }

// File-only operations
    else{
        // Gets file extension
        $extn=pathinfo($dirArray[$index], PATHINFO_EXTENSION);

        // Prettifies file type
        switch ($extn){
            case "png": $extn="PNG Image"; break;
            case "jpg": $extn="JPEG Image"; break;
            case "jpeg": $extn="JPEG Image"; break;
            case "svg": $extn="SVG Image"; break;
            case "gif": $extn="GIF Image"; break;
            case "ico": $extn="Windows Icon"; break;

            case "txt": $extn="Text File"; break;
            case "log": $extn="Log File"; break;
            case "htm": $extn="HTML File"; break;
            case "html": $extn="HTML File"; break;
            case "xhtml": $extn="HTML File"; break;
            case "shtml": $extn="HTML File"; break;
            case "php": $extn="PHP Script"; break;
            case "js": $extn="Javascript File"; break;
            case "css": $extn="Stylesheet"; break;

            case "pdf": $extn="PDF Document"; break;
            case "xls": $extn="Spreadsheet"; break;
            case "xlsx": $extn="Spreadsheet"; break;
            case "doc": $extn="Microsoft Word Document"; break;
            case "docx": $extn="Microsoft Word Document"; break;

            case "zip": $extn="ZIP Archive"; break;
            case "htaccess": $extn="Apache Config File"; break;
            case "exe": $extn="Windows Executable"; break;

            default: if($extn!=""){$extn=strtoupper($extn)." File";} else{$extn="Unknown";} break;
        }

        // Gets and cleans up file size
            $size=pretty_filesize($directory.$dirArray[$index]);
            $sizekey=filesize($directory.$dirArray[$index]);
    }
 $searchid = $_POST['search'];
 if($searchid == $namehref) {
         echo("<tr class='$class'>
        <td><a href='read.php?name_txt=$searchid'$favicon class='name'>$name</a></td>
            <td><a href='downloads/$searchid'>$extn</a></td>
        <td sorttable_customkey='$sizekey'><a href='downloads/$searchid'>$size</a></td>
        <td sorttable_customkey='$timekey'><a href='downloads/$searchid'>$modtime</a></td>
    </tr>");
        }
    }


else {
    if ($searchid == null) {
 echo("
    <tr class='$class'>
        <td><a href='read.php?name_txt=$namehref'$favicon class='name'>$name</a></td>
            <td><a href='downloads/$namehref'>$extn</a></td>
        <td sorttable_customkey='$sizekey'><a href='downloads/$namehref'>$size</a></td>
        <td sorttable_customkey='$timekey'><a href='downloads/$namehref'>$modtime</a></td>
    </tr>");
    }
  }
}
?>


    </tbody>
</table>

<h2><?php echo("<a href='$ahref'>$atext hidden files</a>"); ?></h2>
</div>
</body>
</html>

Я могу отобразить требуемый результат поиска.Но проблема в том, что когда search bar пусто или null, я хочу отобразить все файлы из этого каталога, чего не происходит.Чтобы быть понятным,

Желаемый результат поиска

enter image description here

Результат, который я хочу получитькогда значение строки поиска равно нулю

enter image description here Результат, который я получаю, когда строка поиска пуста

enter image description here Может кто-нибудь сообщить мне, где я иду не так?Также я новичок в php.

1 Ответ

0 голосов
/ 26 сентября 2018

заменить

if ($namehref == null)

на

if ($searchid == null)

Если это не помогло решить проблему, покажите нам больше кода

...