search without SQL (PHP)
- 📅 2023-03-15T18:40:42.204Z
- 👁️ 134 katselukertaa
- 🔓 Julkinen
<?php error_reporting(0); ?>
<html>
<head>
<style>
body {
font-family: Arial;
}
.main {
padding: 5px;
}
td {
padding-left: 10px;
}
</style>
</head>
<body>
<table class='main' width='100%'>
<tr>
<td>
<form action="index.php" method="POST">
<input type="text" placeholder="Insert a link or URL" name="link">
<input type="text" placeholder="Name" name="name">
<input type="text" placeholder="Category" name="category">
<input type="submit" name="submit">
<a href='index.php'>Home</a>
</form>
</td>
<td>
<div align='right'>
<form action="index.php" method="POST">
<input type="text" placeholder="Search" name="search">
<input type="submit" value="Search">
</form>
</div>
</td>
</tr>
</table>
<?php
$link = $_POST['link'];
$name = $_POST['name'];
$category = $_POST['category'];
if(!$name){
$name = preg_replace('/[^a-zA-Z0-9]/', ' ', $link);
}
if(!$category){
$category = "others";
}
// Avoid write files in not allowed directories
$name = str_replace('.', "", $name);
$category = str_replace('.', "", $category);
$category = strtolower($category);
$no_symbol = array ('<', '>');
// Avoid write javascript in the files
$link = str_replace($no_symbol, "", $link);
$name = str_replace($no_symbol, "", $name);
// Get the last occurrence of '.' and the remaining text
$lastDotIndex = strrpos($link, ".");
if ($lastDotIndex) {
$filetype = substr($link, $lastDotIndex + 1);
} else {
$filetype = "others";
}
$filetype = str_replace('.', "", $filetype);
$filetype = strtolower($filetype);
if(!file_exists("categories")){
mkdir("categories");
}
if(!file_exists("categories/$category")){
mkdir("categories/$category");
}
if (isset($_POST['submit'])) {
if(!file_exists("categories/$category/$name")){
$file = fopen("categories/$category/$name", "w");
fwrite($file, $link);
fclose($file);
$result = "<br><a href='categories/$category/$name' target='_blank'>Sent with success!</a>";
} else {
$result = "<br>File already exists!";
}
}
$start = $_GET['start'];
if (!$start){$start = 0;}
$search = $_POST['search'];
if ($search == ""){$search = $_GET['search'];}
// Avoid accessing the above directories
$search = str_replace('.', "", $search);
$c = 0;
$limit = 20;
$ini = $start * $limit;
$end = $ini + $limit;
$entry = 0;
$search = strtolower($search);
echo "<hr>$result <table width='100%'>";
if ($search != "" ){
$dir = 'categories';
// Open the directory
if ($handle = opendir($dir)) {
// Loop through each subdirectory
while (false !== ($subdir = readdir($handle))) {
if ($subdir != "." && $subdir != ".." && is_dir($dir.'/'.$subdir)) {
// Open the subdirectory
if ($subhandle = opendir($dir.'/'.$subdir)) {
// Loop through each file in the subdirectory
while (false !== ($file = readdir($subhandle))) {
$filename_written = $file;
// Find the occurrence in lower or uppercase
$file_l = strtolower($file);
//if ($subdir == $search){echo 'ok';}
// Check if the filename contains the string
// If there is a category with the searched name all the files within that category will be displayed
if (strpos($file_l, $search) !== false || $subdir == $search) {
// Pagination
if($entry >= $ini and $entry < $end){
if ($file == "." || $file == ".."){continue;}
// Display the filename
//echo $dir.'/'.$subdir.'/'.$file . "<br>";
$td_color = $entry % 2 == 0 ? '#EEE' : '#FFF';
$file_path = $dir.'/'.$subdir.'/'.$file;
$filesize = filesize($file_path);
// Checks if is a binary file or text content
if($filesize > 500){
$contents = $file_path;
} else {
$contents = file_get_contents($file_path);
}
$lastDotIndex = strrpos($contents, ".");
if ($lastDotIndex) {
$filetype = substr($contents, $lastDotIndex + 1);
}
$filetype = strtolower($filetype);
// Don't show characters or variables after the file extension
$filetype = substr($filetype, 0, 3);
echo "<tr style='background-color: $td_color;'><td><a href='$contents' target='_blank'>$filename_written</a></td><td>$subdir</td><td>$filetype</td><td><a href='comment.php?comment_file=$file' target='_blank'>Comment</a></td>";
// Show case be a picture extension
if($filetype == "png" || $filetype == "jpg" || $filetype == "jpeg" || $filetype == "gif"){
echo "<td><div align='center'><a href='$contents' target='_blank'><img src='$contents' width='184px'></a></div></td>";
}
// Show a thumbnail case exists
if(file_exists('thumbs/' . $subdir . '/' . $filename_written . '.jpg')){
echo "<td><div align='center'><a href='thumbs/$subdir/$filename_written.jpg' target='_blank'><img src='thumbs/$subdir/$filename_written.jpg' width='184px'></a></div></td>";
}
$search_break++;
}
$entry++;
// Skip the files of the directory when reached the total results
if($search_break == $end){break;}
}
}
if($search_break == $end){break;}
// Close the subdirectory
closedir($subhandle);
}
}
}
// Close the directory
closedir($handle);
}
if ($entry == 0){
echo "<br>Not found.";
}
}
echo "</table>";
if (!$search && !$start && !$result){
echo "Hello!";
}
echo "<br><br><div align='center'>";
if ($entry){
for ($i = $start; $i < $start + 20; $i++) {
echo "<a href='index.php?start=$i&search=$search'>$i </a>";
}
}
echo "</div>";
?>