Мой вариант: PHP: <? $log=file_get_contents('access_log'); $patterns=array('union','select','substr','script','java','\'','"','\.\.','/\*'); //символы, которые используются в регулярных выражениях, надо экранировать обратным слешем. for($k=0;$k<count($patterns);$k++) { $patterns[$k]='|.*'.$patterns[$k].'.*|i'; preg_match_all($patterns[$k],$log,$suspicious[$k]); } $out=array(); for($i=0;$i<count($suspicious);$i++) { foreach($suspicious[$i][0] as $v) { $v=trim($v); if(!empty($v)&&!in_array($v,$out)){$out[]=$v;}} } $f=fopen('suspicious.txt','w'); fwrite($f,implode("\r\n",$out)); fclose($f); ?>
как мне правильно написать скрипт.? у меня есть файл который нада переобразировать в НЕХ использую bin2hex php код виглядит так PHP: $str = "?????"; echo bin2hex($str) вместо знаков вопроса идет содержымое файла но, в нем присутствует ? , $ , < , >, кароче все брейкеры. что мне зделать чтобы отобразилось НЕХ нормально?
PHP: <?php function binary2hex($str) { $newstring = ''; $str = str_replace(" ", "", $str); $text_array = explode("\r\n", chunk_split($str, 8)); for ($n = 0; $n < count($text_array) - 1; $n++) { $newstring .= str_pad(base_convert($text_array[$n], 2, 16), 2, "0", STR_PAD_LEFT); } $newstring = chunk_split($newstring, 2, " "); return $newstring; } $str = 'xek?>$'; $str = binary2hex($str); $str = trim(htmlentities($str)); echo $str; ?>
И ещё один вопрос. Перед указанием пути - одна точка это current catalog, где находиться скрипт, а две точки - где коренной каталог? И что ,если точки не указано? а просто путь, папки, файлы.
PEPSICOLA, 1) Ну вообще их можно не ставить... 2) Допустим мы в дире /home/ugex.net/public_html/www/papka/dir/18/assig/ И в этой дире скрипт index.php Одна точка ./hek.php значит что файл лежит в этой же дире Две точки ../gglol.php значит что файл лежит в папке 18 Две пары двух точек ../../xxx.php значит что файл лежит в папке dir И т.п. Если без точки index.php, то корень public_html
Это в html так... Если речь идет про операции с файлом из скрипта, то include('index.php'); либо fopen('index.php','rb'); Будут значить то же самое, что и include('./index.php'); fopen('./index.php','rb'); И еще, стоит учесть include_path
PHP: function str2hex($str) { $hex=''; for($i=0;$i<strlen($str);$i++) { $hex.=dechex(ord(substring($str,$i,1))); } return '0x'.$hex; } Типа того?
Если php 5 версии - $binmd5=md5($str,true); Если 4-й, то PHP: function md5bin($str) { $str=md5($str); $bin=''; for($i=0;$i<32;$i+=2) { $bin.=chr(hexdec(substr($str,$i,2))); } return $bin; }
Ну все правильно, хотел бинарную строку из 16 символов - получил ее. Так и должно быть. Для чего тебе это надо, вообще?