2008-12-30

Бесплатный Касперский

Что делать если вы поймали вирус а у вас нет свежих обновлений вашего любимого антивируса? Оказывается, что большинство производителей коммерческих антивирусов имеют также и бесплатные продукты со свежими вирусными базами которые можно вполне легально скачать и вылечить компьютер. Так у DrWeb есть утилита CureIt а у Касперского вот такое средство называется Virus Removal Tool. Программа хорошо запрятана на сайте Касперского поэтому про нее мало кто знает. Это одноразовая программа - после инсталляции она предлагает проверить диски компьютера на вирусы а после проверки удаляет себя.

 

Оставить комментарий

 
  2008-12-12

Как настроить Google Talk для Миранды

Сейчас набирает обороты сервис мгновенных сообщений Googe Talk, однако мне совершенно не хочется ставить их клиента на свой компьютер - во первых у меня уже стоит Miranda, а во вторых их клиент постоянно норовит перебросить меня на Gmail - а онлайновый Gmail клиент по какой то странной причине блокирует загрузку писем в мой Thunderbird, к тому же мне совершенно не нужно смотреть на их рекламу у себя в браузере.

Поиски плагина Google Talk для Миранды успехом не увенчались. Однако такой плагин воовсе не нужен. Google использует для Google Talk протокол Jabber который входит в дистрибутив Миранды по умолчанию. Вот настройки:

Данный рецепт был найден здесь. Там также говорится, что нужно скачать и установить OpenSSL библиотеку но у меня заработало и так, возможно эта библиотека у меня уже стояла...

 

Оставить комментарий

 
  2008-11-25

Получение POST данных в PHP скрипте

Бывают такие ситуации когда много лет делаешь что-то одним способом и вдруг понимаешь, что то, что ты много лет делал на самом деле может быть сделано гораздо проще. И ведь знал об этом, просто не догадывался сложить два плюс два чтобы сделать очевидные выводы.

Вот практическая задача - как из программы на PHP получить данные посланные методом POST. Казалось бы нет ничего проще - бери переменную $_POST и смотри что в ней. Но... Переменная $_POST полезна только в том случае если данные были посланы в виде пар имя+значение, т.е. например через HTML форму. Однако, в ряде практических задач приходится иметь дело не с HTML формами, например, если имеем дело с XML преданным непосредственно методом POST - тут стандартная переменная $_POST не подходит.

В PHP для того чтобы непосредственно получить POST данные есть переменная - $HTTP_RAW_POST_DATA - но, она определена только если в php.ini включена always_populate_raw_post_data а она по умолчанию выключена - конечно ее можно включить через .htaccess но только если php стоит как модуль Апача, а это как правило сделано не всегда.

Все мы знаем, что в CGI приложения POST данные передаются через стандартный поток ввода. Значит, если открыть стандартный поток ввода по его имени в PHP он называется input то можно прочитать его содержимое:

$r = file_get_contents("php://input"); //contents of POST buffer

Указанный метод, похоже, работает всегда - и для модуля Апача и для CGI и к настройкам php.ini он не чувствителен.

 

Оставить комментарий

 
  2008-10-30

Как вывести список файлов через FTP

Встала такая задача - вывести в список всех флеш роликов используемых в проекте. При этом известен только FTP заход. Конечно, можно просмотреть все страницы сайта, посмотреть где есть ссылки на swf и записать их адреса, но это займет много времени да к тому же можно что либо пропустить. Можно воспользоваться возможностями FAR Мanager, но он не выводит результат в текстовый файл, поэтому написал вот такую программку:

<?php error_reporting(E_ALL | E_STRICT); class FtpSearch { var $server_url = ''; var $username = ''; var $password = ''; var $remote_folder = ''; var $ftp; function log($message){ print $message; } function show(){ $this->ftp = ftp_connect($this->server_url); if ($this->ftp===FALSE){ $this->log('Can not connect to FTP server'); } else { $this->log('Connected successful'); if(ftp_login($this->ftp,$this->username,$this->password)){ $this->getListOfFiles($this->remote_folder,$this->remote_folder); } else { $this->log('Login failure!'); } ftp_quit($this->ftp); $this->log('Connection closed!'); } } function getListOfFiles($folder,$filename){ flush (); set_time_limit(30); if (ereg('\.swf$',$folder)){ print $folder.'<br />'; } $c = @ftp_chdir($this->ftp,$filename); if ($c){ $list = ftp_rawlist($this->ftp,''); $files = array(); reset($list); while (list(,$row) = each($list)) { $buf=""; if ($row[0]=='d'||$row[0]=='-'){ $buf = ltrim(substr($row,55)); $files[]=$buf; } } if ($files!==FALSE){ foreach($files as $file){ if (($file!='..') and ($file!='.')){ $this->getListOfFiles($folder.'/'.$file,$file); } } } $c = ftp_chdir($this->ftp,'..'); } } } $c = new FtpSearch(); $c->show(); ?>
 

Коментариев: 4

 
  2008-10-29

Как удалить все сообщения из почтового ящика?

Сегодня случилось удалять сообщения из POP3 почтового аккаунта в коем набралось больше шести тысяч писем спама. Конечно гораздо проще убить и заново создать ящик, но это слишком просто, гораздо интереснее написать небольшую программку, которая и убьет все сообщения, тем более что здесь нашел замечательную функцию на PHP. Вот ее код:

function deleteAllMessages($server,$username,$password){ $cmd = array(); $cmd[] = "USER $username\r\n"; $cmd[] = "PASS $password\r\n"; $cmd[] = "STAT\r\n"; $cmd[] = "QUIT\r\n"; // Server is your POP3 server, ie pop3.server.com // Port is the port number ( should be 110 ) $port = 110; $fp = fsockopen($server, $port); if(!$fp) { print("Error connecting to server $server"); } else { $ret = fgets($fp, 1024); foreach($cmd as $ret) { fputs($fp,$ret); $line = fgets($fp, 1024); if($ret=="STAT\r\n") { $fields = explode(" ",$line); print 'found '.$fields[1].' massages
'; $num_mails = $fields[1]; for($i=1;$i<=$num_mails;$i++) { set_time_limit(30); fputs($fp,"DELE $i\r\n"); $line = fgets($fp, 1024); flush(); } } } fclose($fp); } }

здесь выложил работающий пример.

 

Оставить комментарий

 
  2008-10-25

Как отредактировать svn:ignore используя коммандную строку

svn --editor-cmd="vi" propedit svn:ignore .
 

Оставить комментарий

 
  2008-04-14

Полезная функция для валидации email на JavaScript

function validateEmail(elementValue){ 
    var emailPattern = /^[a-zA-Z0-9._-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,4}$/;  
    return emailPattern.test(elementValue);  
}
 

Оставить комментарий