Поиск текста в файлах

stream

Модератор
Клиент
09.09.14
925
577
#1
...Сегодня озадачился поиском некоего текста в php-файлах чата. В гугле нашел несколько вариантов. Выкладываю проверенный:
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=win-1251'/>
<title>:)</title>
</head>
<body>
<?php
error_reporting (E_ALL);
$user = $_SERVER['HTTP_USER_AGENT'];
$t_user = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A456 Safari/602.1";
if($user == $t_user) {
echo "Welcome, admin!<br>";
} else {
echo "This page only for admin!";
exit;
}
function imTimer($name= 'default', $mode= ''){
static $timers= array();
$now=microtime(true);
if(!isset($timers[$name])){
$timers[$name]= $now;
return 0;}
$ret= $now - $timers[$name];
if($mode == 'reset')
$timers[$name]= $now;
return round($ret, 5);}
imTimer();
if(isset($_POST['submit'])){ if($_POST['line_search']=="" or $_POST['dir']=="") header("Location: ".$_SERVER['PHP_SELF']); $line_search=$_POST['line_search']; $dir=trim($_POST['dir']); $files_in_dir=array(); function filesdir($dir='.'){ global $files_in_dir; $scandir=scandir($dir); foreach ($scandir as $num_file => $name_file) { if($name_file=='.' or $name_file=='..') continue; if($dir=='.') $add_name=""; else $add_name = $dir."/"; if(is_file($add_name.$name_file)){ $ext=explode('.',$add_name.$name_file); $ext=$ext[count($ext)-1];
$scriptFileName=explode('/', $_SERVER['PHP_SELF']); $scriptFileName=$scriptFileName[count($scriptFileName)-1];
if($ext=='gif' or $ext=='zip' or $ext=='rar' or $ext=='jpg' or $ext=='jpeg' or $ext=='png' or $name_file==$scriptFileName) continue; $files_in_dir[]=$add_name.$name_file; } elseif(is_dir($add_name.$name_file)) filesdir($add_name.$name_file); } } filesdir($dir); foreach ($files_in_dir as $num_file => $name_file) { $file=file($name_file); $found=false; foreach ($file as $line_num => $line_text) { if (strpos($line_text, $line_search) !== false) {$found=true; $num_line[]=$line_num+1; $text_num_line[]=htmlspecialchars(trim($line_text), ENT_QUOTES);} } if($found==true) { echo '<b>'.$name_file.'</b>:<br>'; $count=count($num_line); for($i=0;$i<=$count-1;$i++) { echo 'Found: line <b>'.$num_line[$i].'</b> ('.$text_num_line[$i].')<br>'; } $num_line=''; } }
}
$line_search_post=isset($_POST['line_search'])?$_POST['line_search']:"";
$dir_post=isset($_POST['dir'])?trim($_POST['dir']):".";
?>
<form method="POST">
Текст: <input type="text" name="line_search" value="<? echo $line_search_post; ?>">
<br>
Папка: <input type="text" name="dir" value="<? echo $dir_post; ?>">
<br>
<input type="submit" name="submit" value="Искать!">
</form>
</body>
</html>
Если используете кодировку UTF-8, вначале скрипта смените на свою.
Переменную $t_user изменить на свою. Примитивная проверка, чтобы не лез кто попало, и не искал, чего не надо искать. Можно добавить и на проверку своего ip-адреса, подсети, или вообще в админку чата пристроить этот поиск.
_search-png.5114

(пристроил в админке чата, на скрине результат поиска строки "a nety tyt takogo pyti" в моде X Status от PowerUSB
Автор кода неизвестен.
 
Последнее редактирование:

Майор

Администратор
Команда форума
04.09.14
2.673
1.802
39
dnrschool-145.ru
#2
...Сегодня озадачился поиском некоего текста в php-файлах чата. В гугле нашел несколько вариантов. Выкладываю проверенный:
PHP:
<!DOCTYPE HTML>
<html>
<head>
<meta http-equiv='Content-Type' content='text/html; charset=win-1251'/>
<title>:)</title>
</head>
<body>
<?php
error_reporting (E_ALL);
$user = $_SERVER['HTTP_USER_AGENT'];
$t_user = "Mozilla/5.0 (iPhone; CPU iPhone OS 10_0_2 like Mac OS X) AppleWebKit/602.1.50 (KHTML, like Gecko) Version/10.0 Mobile/14A456 Safari/602.1";
if($user == $t_user) {
echo "Welcome, admin!<br>";
} else {
echo "This page only for admin!";
exit;
}
function imTimer($name= 'default', $mode= ''){
static $timers= array();
$now=microtime(true);
if(!isset($timers[$name])){
$timers[$name]= $now;
return 0;}
$ret= $now - $timers[$name];
if($mode == 'reset')
$timers[$name]= $now;
return round($ret, 5);}
imTimer();
if(isset($_POST['submit'])){ if($_POST['line_search']=="" or $_POST['dir']=="") header("Location: ".$_SERVER['PHP_SELF']); $line_search=$_POST['line_search']; $dir=trim($_POST['dir']); $files_in_dir=array(); function filesdir($dir='.'){ global $files_in_dir; $scandir=scandir($dir); foreach ($scandir as $num_file => $name_file) { if($name_file=='.' or $name_file=='..') continue; if($dir=='.') $add_name=""; else $add_name = $dir."/"; if(is_file($add_name.$name_file)){ $ext=explode('.',$add_name.$name_file); $ext=$ext[count($ext)-1];
$scriptFileName=explode('/', $_SERVER['PHP_SELF']); $scriptFileName=$scriptFileName[count($scriptFileName)-1];
if($ext=='gif' or $ext=='zip' or $ext=='rar' or $ext=='jpg' or $ext=='jpeg' or $ext=='png' or $name_file==$scriptFileName) continue; $files_in_dir[]=$add_name.$name_file; } elseif(is_dir($add_name.$name_file)) filesdir($add_name.$name_file); } } filesdir($dir); foreach ($files_in_dir as $num_file => $name_file) { $file=file($name_file); $found=false; foreach ($file as $line_num => $line_text) { if (strpos($line_text, $line_search) !== false) {$found=true; $num_line[]=$line_num+1; $text_num_line[]=htmlspecialchars(trim($line_text), ENT_QUOTES);} } if($found==true) { echo '<b>'.$name_file.'</b>:<br>'; $count=count($num_line); for($i=0;$i<=$count-1;$i++) { echo 'Found: line <b>'.$num_line[$i].'</b> ('.$text_num_line[$i].')<br>'; } $num_line=''; } }
}
$line_search_post=isset($_POST['line_search'])?$_POST['line_search']:"";
$dir_post=isset($_POST['dir'])?trim($_POST['dir']):".";
?>
<form method="POST">
Текст: <input type="text" name="line_search" value="<? echo $line_search_post; ?>">
<br>
Папка: <input type="text" name="dir" value="<? echo $dir_post; ?>">
<br>
<input type="submit" name="submit" value="Искать!">
</form>
</body>
</html>
Если используете кодировку UTF-8, вначале скрипта смените на свою. В конце имени папки ставить слэш.
Переменную $t_user изменить на свою. Примитивная проверка, чтобы не лез кто попало, и не искал, чего не надо искать. Можно добавить и на проверку своего ip-адреса, подсети, или вообще в админку чата пристроить этот поиск.
Автор кода неизвестен.
куда что вставлять, как пользоваться?
 

stream

Модератор
Клиент
09.09.14
925
577
#3
куда что вставлять, как пользоваться?
Никуда не вставлять - код сохранить файлом со своем названием с расширением .php. Загрузить в нужный каталог, и обратиться к скрипту через браузер.В верхнее поле пишем текст, который ищем - это может быть код php, html, css, в нижнее - относительный путь к заведомо существующему каталогу . Если в начале пути точка, как на скрине - поиск будет производиться в текущем каталоке, если две точки - на уровень вложенности выше (это если скрипт лежит в папке admin, или на том же уровне относительно корня сайта-чата). Вывод ошибок и предупреждений error_reporting (E_ALL); можно просто закомментировать.