27 августа 2010 Нет комментариев

Для назначения горячих клавиш дописываем в секцию Shortcuts, например переименование файлов по F2 и показ скрытых файлов по F12

[Shortcuts]
F2=cm_RenameOnly
F12=cm_SwitchHidSys

полный список можно посмотреть выполнив Конфигурация -> Настройка -> Разное -> Переопределить горячие клавиши -> Выбираем любую клавишу и жмем на увеличительное стекло напротив поля «Команда»
Также, как пример, чтобы при переименовании по умолчанию было выделено только имя файла без расширения дописываем в секцию Configuration:

[Configuration]
RenameSelOnlyName=1
Categories: Windows Tags: ,
24 августа 2010 Нет комментариев

http://www.opennet.ru/base/net/2_channel_balancing.txt.html — подробно, понятно.

Categories: Unix Tags:
16 августа 2010 8 комментариев

Загружаемся в консоль восстановления
1. Восстанавливаем файлы hal.dll и ntoskrnl.exe
delete c:\windows\system32\hal.dll
delete c:\windows\system32\ntoskrnl.exe
expand d:\i386\hal.dl_ С:\windows\system32
expand d:\i386\ntoskrnl.ex_ С:\windows\system32
C и D — соответствено раздел с windows и cd-rom. windows — каталог установки Windows.
2. Восстанавливаем boot.ini
bootcfg /rebuild
На «Добавить систему в список загрузки?» отвечаем «да» (Y). На «Введите идентификатор загрузки» пишем что угодно (это имя операционной системы в списке загрузки). На «Введите параметры загрузки операционной системы» ничего не пишем и просто жмем Enter.

Categories: Windows Tags:
10 августа 2010 Нет комментариев

Собственно он самый:

  1. <?php
  2. function gen_pass() {
  3. 	$arr = array('q','w','e','r','t','y','u','i','o','p','a','s','d','f','g','h','j','k','l','z','x','c','v','b','n','m',
  4. 				'Q','W','E','R','T','Y','U','I','O','P','A','S','D','F','G','H','J','K','L','Z','X','C','V','B','N','M',
  5. 				'1','2','3','4','5','6','7','8','9','0');
  6. 	$pass = '';
  7. 	for($i=0;$i<=8;$i++) {
  8. 		$index = rand(0, count($arr) -1);
  9. 		$pass .= $arr[$index];
  10. 	}
  11. 	return $pass;
  12. }
  13.  
  14.  
  15. for ($i=0;$i<=10;$i++) {
  16. 	echo gen_pass().'<br/>';
  17. }
  18.  
  19. ?>

тут мы генерируем 10 паролей по 8 символов каждый.
изменить это можно:
7 строка: for($i=0;$i<=8;$i++) { — количество символов
15 строка: for ($i=0;$i<=10;$i++) { — количество паролей.
Ну или форму отправлять с указанием этих параметров если используется многократно.

Categories: PHP Tags:
4 августа 2010 8 комментариев

Имеется форма на сайте, при сабмите которой POST запросы должны отправляться на сторонний сайт, и у себя мы должны выводить полученные со стороннего сайта результаты.
1. Ну сама наша форма:

echo '<form action="" method="post">';
	echo 'Фамилия';
		echo '<input type="text" name="lastName" size="10" value="'.$_POST['lastName'].'" />';
	echo 'Имя';
		echo '<input type="text" name="firstName" size="10" value="'.$_POST['firstName'].'" />';
	echo '<input type="submit" name="searchButton" value="Поиск" />';
echo '</form>';

value для text-inputов добавлены для того чтобы после самбита формы указанные данные оставались введенными, можно и без этого
2. Если форма была отправлена:

if (!empty($_POST)) {
	$curl = curl_init(); //инициализация сеанса
	curl_setopt($curl, CURLOPT_URL, 'http://example.com/'); //урл сайта к которому обращаемся
	curl_setopt($curl, CURLOPT_HEADER, 1); //выводим заголовки
	curl_setopt($curl, CURLOPT_POST, 1); //передача данных методом POST
	curl_setopt($curl, CURLOPT_RETURNTRANSFER, 1); //теперь curl вернет нам ответ, а не выведет
	curl_setopt($curl, CURLOPT_POSTFIELDS, //тут переменные которые будут переданы методом POST
	array (
		'lastName'=>$_POST['lastName'],
		'firstName'=>$_POST['firstName'],
		'searchButton'=>'get' //это на случай если на сайте, к которому обращаемся проверяется была ли нажата кнопка submit, а не была ли оправлена форма
	));
	curl_setopt($curl, CURLOPT_USERAGENT, 'MSIE 5'); //эта строчка как-бы говорит: "я не скрипт, я IE5" :)
	curl_setopt ($curl, CURLOPT_REFERER, "http://ya.ru"); //а вдруг там проверяют наличие рефера
	$res = curl_exec($curl);
	//если ошибка то печатаем номер и сообщение
	if(!$res) {
		$error = curl_error($curl).'('.curl_errno($curl).')';
		echo $error;
	}
	else {
		//если результат содержит то что нам надо (проверяем регуляркой), а в данном случае это табличка с классом yaResultat, то выводим ее.
		if (preg_match("/\<table class\='yaResultat'(.+)\<\/table\>/isU", $res, $found)) {
			$content = $found[0];
			echo $content; //перед этим его конечно можно обработать всякими str_replace и т.д.
		}
		else {
			echo "<p>Неизвестная ошибка</p>"; //а если табличики с результатами нет, то печатать нечего и мы незнаем что делать :(
		}
	}
	curl_close($curl);
}

Хорошие ссылки:
http://www.web-junior.net/otpravka-post-zaprosov-s-pomoshhyu-php-otpravka-fajjlov/
http://www.web-junior.net/otpravka-post-zaprosov-s-pomoshhyu-php-chast-2/
http://www.sql.ru/forum/actualthread.aspx?tid=750546

Categories: PHP Tags: ,
28 июля 2010 2 комментария

Интеграция kcaptcha.
Отключаем в настройках ruBook стандартную защиту. Далее правятся файлы. (Проверялось на версии 0.4.3.)
1. /components/com_rubook/rubook.html.php
после:

<?php
    if ( is_imgcode() ) {
?>
  <tr>
    <td><?php echo _COM_RUBOOK_LANG_FIELD_ENTER_CODE; ?></td>
    <td><input type="text" class="inputbox" name="info[imgcodetext]" maxlength="7" style="width: 130px" /></td>
    <td colspan="2"><img src="<?php echo $GLOBALS['mosConfig_live_site']; ?>/components/com_rubook/imgcode.php"></td>
  </tr>
<?php
    }
?>

дописываем:

  <tr>
    <td><?php echo _COM_RUBOOK_LANG_FIELD_ENTER_CODE; ?></td>
    <td><input type="text" class="inputbox" name="info[keystring]" maxlength="7" style="width: 130px" /></td>
    <td colspan="2"><img src="<?php echo $GLOBALS['mosConfig_live_site']; ?>/imgcode/?<?php echo session_name()?>=<?php echo session_id()?>" /></td>
  </tr>

<?php echo $GLOBALS['mosConfig_live_site']; ?>/imgcode/ — путь к файлам kcaptcha, т.е. в примере распаковываем содержимое архива в папку imgcode в корне сайта.
2. components/com_rubook/rubook.class.php
после

        /** Проверка кода защиты */
        if ( ( $GLOBALS['mosRuBookConfig_imgcode'] == 1 ) and ( $GLOBALS['mosRuBookUser_admin'] != 1 ) ) {
            if ( ! ( $_SESSION['img_code'] == md5( $object->imgcodetext ) ) ) {
                $object->_error = _COM_RUBOOK_LANG_CODE_BAD;
                return false;
            }
        }

дописываем:

        if (isset($_SESSION['captcha_keystring']) && $_SESSION['captcha_keystring'] != $object->keystring) {
                $object->_error = _COM_RUBOOK_LANG_CODE_BAD;
                return false;
        }

после:

$object->imgcodetext = ( isset( $info['imgcodetext'] ) ) ? $info['imgcodetext'] : '';

дописываем:

$object->keystring = ( isset( $info['keystring'] ) ) ? $info['keystring'] : '';

после:

$this->imgcodetext = ( isset( $info['imgcodetext'] ) ) ? $info['imgcodetext'] : '';

дописываем:

$this->keystring = ( isset( $info['keystring'] ) ) ? $info['keystring'] : '';

Проверка значения параметра REFERER.
Т.е. адреса страницы, откуда выполнен переход. Если этот параметр пустой значит запрос к форме выполняется напрямую.

        if ($_SERVER["HTTP_REFERER"] == '') {
            $object->_error = "Spam Detected!";
            return false;
        }

Проверка, не содержит ли коммент ссылку
Лучше наверное добавить какую-то регулярку для проверки на наличие ссылок, но сейчас поступим более параноидально:

        if (preg_match("/http/i", $object->text)) {
            $object->_error = "Links in the comments are not allowed!";
            return false;
        }
Categories: CMS Tags:

Допустим мы имеем хостинг-аккаунт на 1 домен без прав создавать дополнительные домены, но с возможностью создавать определенное количество или неограниченное количество паркованных доменов. Домены паркуются на корневой каталог веб-содержимого, т.е. public_html и изменить это мы не можем (если бы могли, то можно было бы парковать разные домены на public_html/site1, public_html/site2 и т.д. и проблема бы решилась сама собой).
Используя mod_rewrite:
В корне (public_html) в файле .htaccess

RewriteEngine on

RewriteCond %{HTTP_HOST} ^site1.*
RewriteRule ^(.*)$ /site1/$1 [L]

RewriteCond %{HTTP_HOST} ^site2.*
RewriteRule ^(.*)$ /site2/$1 [L]

Также в папках site1 и site2 файлы .htaccess с содержимым

RewriteEngine on

Подробнее: Например основной наш домен primary.com
Паркуем домены site1.ru и site2.ru
В корне сайта primary.com есть еще папки site1 и site2 с соответствующими сайтами.
Теперь например когда запрашиваемый URL будет содержать site1 будет открываться содержимое папки /site1, т.е. site1.ru = primary.com/site1/

Categories: Web Tags: