ivtrans

Рейтинг
117
Регистрация
05.06.2006

Хорошие трояны по нескольку лет живут, особенно веселые экземпляры на так называемых сборках XP. Возьмите любой из них, постарее. И протестируйте - десяток можно наловить, а при хорошем раскладе - и поболее.

Подниму тему - скоро будет время на крупный проект, обращайтесь.

ТС, модернизация в РФ - это постройка сколково. А не системы ЧПУ :)

У меня год назад дернули короллу, угнали в 1 час ночи, обнаружилась пропажа в 8-30.

Не факт, что телефон поможет - у меня тарифа со слежением не было, но был телефон с симкой мегафона... результат - нулевой. Мне сказали, в каком направлении в область ушла машина :) и в какое время пропал сигнал. Там по карте - примерно 20 кв.км.

ЗЫ И еще - я думаю, вам позвонят через недельку.

1. Количество записей в запросе отдаст вам функция

mysql_num_rows($qGetCloud), count можно исключить.

2. в запросе с датой, если дата типа дататайм, используйте штамп TIMESTAMP

Несколько раз просили прислать им пример кода в личку | на почту. Видимо, уровень программиста можно оценить по внешнему виду кода. Решил выложить примеры здесь, надеюсь, модераторы не удалят его :)

Это два базовых класса моделей для работы в Zend Framework, они взаимосвязаны.

Первый


<?php
# Ordered.php
abstract class Jest_Model_Ordered extends Jest_Model_DbRow
{
/**
* Имя поля бызы данных по которому вычисляется порядок
*
* @var string
*/
protected $_orderColumn = 'ord';

/**
* Выражение выборки данных из базы.
*
* @return Zend_Db_Table_Select
*/
protected function _getSelect()
{
return $this->dbTable()->select();
}

/**
* Возвращает количество записей в базе
*
* @return Ambigous <Zend_Db_Table_Row_Abstract, NULL>
*/
private function _getCount()
{
$select = $this->_getSelect();
$table = $select->getTable();
$select->from($table, 'COUNT(*)');
$result = $table->fetchRow($select);
return $result ['COUNT(*)'];
}

/**
* Устанавливает порядковый номер для новой записи.
*/
public function save()
{
if ($this->isNew()) {
$this->_row->{$this->_orderColumn} = $this->_getCount();
}
parent::save();
}

/**
* Перенумеровывает оставшиеся элементы
*/
public function delete()
{
$select = $this->_getSelect();
$select->where($this->_orderColumn . ' > ?', $this->_orderColumn);
$table = $select->getTable();
$table->update(array(
$this->_orderColumn => new Zend_Db_Expr($this->_orderColumn . ' - 1')), $select->getPart(Zend_Db_Select::WHERE));
parent::delete();
}

/**
* Возвращает элемент с указанным порядковым значением.
*
* @param unknown_type $orderValue Порядковое значение
* @return Ads_Model_Sub|NULL
*/
private function _getSibling($orderValue)
{
$select = $this->_getSelect();
$select->where($this->_orderColumn . ' = ?', $orderValue);
$row = $select->getTable()->fetchRow($select);
if ($row) {
return new Ads_Model_Sub('row', $row);
} else {
return null;
}
}

/**
* Возвращает следующий по порядку элемент.
*
* @return Ambigous <NULL, Ads_Model_Sub>
*/
public function next()
{
return $this->_getSibling($this->{$this->_orderColumn} + 1);
}

/**
* Возвращает предыдущий по порядку элемент.
*
* @return Ambigous <NULL, Ads_Model_Sub>
*/
public function prev()
{
return $this->_getSibling($this->{$this->_orderColumn} - 1);
}

/**
* Перемещает элемент вверх в порядковом списке
*/
public function moveUp()
{
$prev = $this->prev();
if ($prev) {
$this->{$this->_orderColumn} = $this->{$this->_orderColumn} - 1;
$prev->{$this->_orderColumn} = $prev->{$this->_orderColumn} + 1;
$this->save();
$prev->save();
}
}

/**
* Перемещает элемент вниз в порядковом списке
*/
public function moveDown()
{
$next = $this->next();
if ($next) {
$this->{$this->_orderColumn} = $this->{$this->_orderColumn} + 1;
$next->{$this->_orderColumn} = $next->{$this->_orderColumn} - 1;
$this->save();
$next->save();
}
}

}

Второй:


<?php
#DbRow.php
abstract class Jest_Model_DbRow
{
/**
* Запись базы данных
* @var Zend_Db_Table_Row
*/
protected $_row = null;
/**
* Внутренне хранилище свойств
* @var array
*/
protected $_properties = array();
/**
* Признак нового объекта, ещё не сохраненного в базе.
* @var bool
*/
private $_isNew = false;

/**
* Волшебный конструктор :)
* Вызывает метод инициялизации с именем - _init%ПервыйАргумент%
*/
public function __construct()
{
$args = func_get_args();
$func = array_shift($args);
call_user_func_array(array(
$this,
$funcName = '_init' . ucfirst($func)), $args);
}

/**
* Инициализаци новой модели
*/
protected function _initNew()
{
$this->_row = $this->dbTable()->createRow();
$this->_isNew = true;
}

/**
* Инициализация по ключу $id
* @param int $id
*/
protected function _initId($id)
{
$this->_row = $this->dbTable()->find($id)->current();
}

/**
* Инициализаци напрямую из записи базы данных
* @param Zend_Db_Table_Row $id
*/
protected function _initRow($row)
{
$this->_row = $row;
}

/**
* Функция должна возращать таблицу базы данных в которой хранится модель
* @return Zend_Db_Table_Abstract
*/
abstract protected function dbTable();

/**
* Заполняет модель из массива.
* ! Заполняются только поля данных в записи таблицы
*
* @param array $data
*/
public function fill($data)
{
foreach ( $data as $key => $value ) {
if (isset($this->_row->$key)) {
$this->_row->$key = $value;
}
}
}

/**
* Сохранение данных в таблицу
*/
public function save()
{
$this->_row->save();
$this->_isNew = false;
}

/**
* Удаляет модель из таблицы
*/
public function delete()
{
$this->_row->delete();
}

/**
* Тест на целостность модели
*/
public function isValid()
{
return ($this->_row !== null);
}

/**
* Заполняет форму данными из записи базы данных
* @param Zend_Form $form
*/
public function populateForm(Zend_Form $form)
{
$form->populate($this->_row->toArray());
}

/**
* Реализует магию :) чтения свойств модели.
* Порядок следующий:
* 1. Из записи базы данных
* 2. Из хранилища свойств
* 3. Через метод доступа _get%ИмяСвойства%
*
* @param string $name
* @return multitype:|unknown|NULL
*/
public function __get($name)
{
// пробуем получить из записи базы данных
if (isset($this->_row->$name)) {
return $this->_row->$name;
}
// пробуем получить из хранилища свойств
if (array_key_exists($name, $this->_properties)) {
return $this->_properties [$name];
}
// пробуем через метод доступа
$method = '_read' . ucfirst($name);
if (method_exists($this, $method)) {
$result = $this->$method();
if ($result !== null) {
// сохраняем в хранилище свойств
$this->$name = $result;
}
return $result;
}
// ничего не нашли :)
}

/**
* Реализует магию :) записи свойств модели.
* Порядок следующий:
* 1. В запись базы данных
* 3. Через метод доступа _set%ИмяСвойства%
* 2. В хранилище свойств
*
* @param string $name
* @param unknown_type $val
*/
public function __set($name, $val)
{
if (isset($this->_row->$name)) {
$this->_row->$name = $val;
} else {
$method = '_write' . ucfirst($name);
if (method_exists($this, $method)) {
$this->$method($val);
} else {
$this->_properties [$name] = $val;
}
}
}

/**
* Удаляет свойство из хранилища
*
* @param string $name
*/
public function __unset($name)
{
unset($this->_properties [$name]);
}

/**
* Возвращает все свойсва в виде массива
*
* @return multitype:
*/
public function toArray()
{
return array_merge($this->_row->toArray(), $this->_properties);
}

/**
* Возвращает true если это новый экземпляр модели,
* еще не сохраненный в базе данных
*
* @return bool
*/
public function isNew()
{
return $this->_isNew;
}

/**
* Преобразует список записей $rowset в масив классов $className
*
* @param Zend_Db_Table_Rowset_Abstract $rowset
* @param string $className
* @return array of $className objects
*/
static public function transformRowset($rowset, $className)
{
$result = array();
foreach ( $rowset as $row ) {
$result [] = new $className('row', $row);
}
return $result;
}
}

Нужно вот так:


<?php
if (isset ( $_POST ['one'] )) {
$one = $_POST ['one'];
}
if (isset ( $_POST ['two'] )) {
$two = $_POST ['two'];
}
if (isset ( $_POST ['onevstwo'] )) {
$onevstwo = $_POST ['onevstwo'];
}

$address = 'mail@yandex.ru';
$sub = "Бронирование номера";
$mes = "Стандартный одноместный номер: $one
\nСтандартный двухместный номер: $two
\nОдноместное размещение в двухместном номере: $onevstwo";

if (mail ($address,$sub,$mes,"Content-type:text / plain; charset = windows-1251\r\nFrom:$email"))
{
echo "
";
}
else
{
echo "<p>Сообщение не отправлено</p>";
}

На локале работает, потому что по умолчанию переменные из массива $_POST передаются :)

У меня на FreeBSD была похожая ситуация, до тех пор, пока я в /etc/hosts не вписал IP сервера

95.31.24X.XXX jnc-cnc.com
DyaDya:
Формула: L*W/2=N (количество рулонов), т.е. Внимание математики! Длину комнаты (L, м) умножаем на Ширину (W, м) и делим всё на 2. Т.е. площадь пола делим на 2 - это и будет количество рулонов! ☝

А длина и ширина куска обоев в рулоне не участвует совсем в расчете? Или она у всех всегда одна и та же?

Заказы временно не принимаю - занят до 25 сентября 2010 года

Всего: 439