if(!empty($_SESSION['AR'])){
if(!$this->model->lookEquals(Session::getOne('AR', 'login'))){
if(Session::getOne('AR', 'pass') == Session::getOne('AR', 'confirmPass')){
if(filter_var(Session::getOne('AR', 'email'), FILTER_VALIDATE_EMAIL)){
foreach($array as $key=>$value){
$this->model->getString($key, $value, true, $_POST[$key]);
}
header("Location: /index");
}else{
self::setError('WrongEmail', 'Пожалуйста введите корректный email адресс. Спасибо.');
$this->index();
}
}else{
self::setError('EaqualsPass', 'Пароли должны совпадать');
$this->index();
}
}else{
self::setError('EaqualsLogin', 'This user already isset! Please choose other name.');
$this->index();
}
}else{
Error::errorRefresh();
}
}
Но это естественно - бред. Как логически это реализовать. Есть идея, что нужно сделать метод, кот. будет в массив записывать ошибки, и если есть хоть одна ошибка - то прирывать работу скрипта.... как то вот так. На практике еще не пробовал. У кого какие идеи будут?
Спустя 9 минут, 36 секунд (29.12.2011 - 11:21) sharki написал(а):
m4a1fox
Цитата |
if else в ООП является примером дурного кода и говнокода |
Если уровень вложенности превышает 3-4.
Через год, человек который будет разбираться в твоем коде, будет тебя адски материть, и думаю ты сам будешь матерится на свой нынешний код. ООП не панацея

Хороший и главное ПРОСТОЙ код, для понимания вот залог успеха твоей программы!
Спустя 1 минута, 5 секунд (29.12.2011 - 11:22) m4a1fox написал(а):
sharki
Цитата |
Хороший и главное ПРОСТОЙ код, для понимания вот залог успеха твоей программы! |
Вот и я за это!
Цитата |
Если уровень вложенности превышает 3-4. |
\А вот это не знал!
Спустя 1 час, 49 минут, 8 секунд (29.12.2011 - 13:12) Invis1ble написал(а):
m4a1fox
Цитата |
Как известно использование условных операторов if else в ООП является примером дурного кода и говнокода. |
с чего бы это?
А в твоем случае да, лучше переделать. С массивом идея нормальная, я сам примерно так делаю.
Спустя 53 минуты, 58 секунд (29.12.2011 - 14:05) m4a1fox написал(а):
Invis1ble
Цитата |
А в твоем случае да, лучше переделать. С массивом идея нормальная, я сам примерно так делаю. |
Ок! Значит на верном пути. Буду мучаться!

Цитата |
с чего бы это? |
Это не я сказал!
P.S. Логически то понял... теперь с программным кодом заминка....
Спустя 19 минут, 11 секунд (29.12.2011 - 14:25) Invis1ble написал(а):
Цитата |
Это не я сказал! |
если не ты сказал, то зачем пишешь это? А если разделяешь позицию автора этих строк - обоснуй.
Спустя 4 минуты, 26 секунд Invis1ble написал(а):
Цитата |
Как известно использование условных операторов if else в ООП является примером дурного кода и говнокода. |
Кому известно? Мне например не было известно до момента прочтения топика, вот хотелось бы услышать объективную аргументацию.
Спустя 9 минут, 41 секунда (29.12.2011 - 14:34) m4a1fox написал(а):
Invis1ble
Ок! Беру слова обратно! Вы правы. Но в моем случае - условности пример плохого кода.
Ок! Беру слова обратно! Вы правы. Но в моем случае - условности пример плохого кода.
Спустя 8 часов, 22 минуты, 13 секунд (29.12.2011 - 22:57) kirik написал(а):
Тоже не вижу связи ООП и кривого кода)
$error = array();
if (empty($_SESSION['AR'])) {
Error::errorRefresh();
} elseif ($this->model->lookEquals(Session::getOne('AR', 'login'))) {
$error = array(
'name' => 'EaqualsLogin',
'text' => 'This user already isset! Please choose other name.'
);
} elseif (Session::getOne('AR', 'pass') != Session::getOne('AR', 'confirmPass')) {
$error = array(
'name' => 'EaqualsPass',
'text' => 'Пароли должны совпадать'
);
} elseif (!filter_var(Session::getOne('AR', 'email'), FILTER_VALIDATE_EMAIL)) {
$error = array(
'name' => 'WrongEmail',
'text' => 'Пожалуйста введите корректный email адресс. Спасибо.'
);
}
if (empty($error)) {
foreach($array as $key => $value){
$this->model->getString($key, $value, true, $_POST[$key]);
}
header("Location: /index");
} else {
self::setError($error['name'], $error['text']);
$this->index();
}
Спустя 14 минут, 9 секунд (29.12.2011 - 23:11) kirik написал(а):
ЗЫ. там ещё в цикле нужно проверять на "объявленность" $_POST[$key]
Спустя 7 минут, 47 секунд (29.12.2011 - 23:18) m4a1fox написал(а):
kirik
Вот так сделал:
А вот тут срабатывает
Вот так сделал:
function checkForm(){
if(!empty($this->model->empty)){
self::setError('FullAllFields', 'All fields mus be full');
$this->index();
return false;
}elseif(!filter_var(Session::getOne('AR', 'email'), FILTER_VALIDATE_EMAIL)){
self::setError('WrongEmail', 'Не правильный формат Email');
$this->index();
return false;
}elseif(Session::getOne('AR', 'pass') != Session::getOne('AR', 'confirmPass')){
self::setError('EaqualsPass', 'Ваши пароли не совпадают');
$this->index();
return false;
}elseif($this->model->lookEquals(Session::getOne('AR', 'login'))){
self::setError('IssetLogin', 'Пожалуйста, выберите другой логин.');
$this->index();
return false;
}
return true;
}
public static function setError($name, $value){
self::$error[$name] = $value;
}
public static function getError($name){
if(!empty(self::$error) && isset(self::$error[$name])){
return self::$error[$name];
}
}
А вот тут срабатывает
if($this->checkForm())
header("Location: /index");
}else{
Error::errorRefresh();
}
Спустя 51 минута, 29 секунд (30.12.2011 - 00:10) kirik написал(а):
m4a1fox
У тебя дублируется кучу раз один и тот же код.. Вынеси
в конец метода. И зачем тебе методы getError и setError?
У тебя дублируется кучу раз один и тот же код.. Вынеси
self::setError('IssetLogin', 'Пожалуйста, выберите другой логин.');
$this->index();
return false;
в конец метода. И зачем тебе методы getError и setError?
Спустя 7 минут, 56 секунд (30.12.2011 - 00:18) m4a1fox написал(а):
kirik, не совсем тебя понял! Дублируется вот эта часть
Вот ее надо, согласен, вынести!
$this->index();
return false;
Вот ее надо, согласен, вынести!
Цитата |
И зачем тебе методы getError и setError? |
Устанавливаем ошибки и получаем к ним доступ! Считаешь излишни?
Спустя 20 часов, 16 минут, 7 секунд (30.12.2011 - 20:34) Guest написал(а):
Цитата (m4a1fox @ 29.12.2011 - 21:18) | ||
Устанавливаем ошибки и получаем к ним доступ! Считаешь излишни? |
Смешаны абстракции в одном классе.
Метод checkForm() относится к абстракции - Валидации и проверки форм
Методы getError() и setError() относятся к абстракции управлением ошибок системы (хотя как по мне так лучше использовать встроенный механизм исключений он очень мощный)
Спустя 2 минуты, 56 секунд (30.12.2011 - 20:37) Invis1ble написал(а):
Цитата |
Смешаны абстракции в одном классе. Метод checkForm() относится к абстракции - Валидации и проверки форм |
согласен
Спустя 22 минуты, 21 секунда (30.12.2011 - 20:59) Guest написал(а):
Вот так будет лучше и читаемость увеличиться
/**
* Исключения валидации форм
*/
class FormException extends Exception
{
private $badAction = '';
public function __construct($badAction, $message, $code = 0, Exception $previous = null)
{
$this->badAction = $badAction;
parent::__construct($message, $code, $previous);
}
public function GoToIndex($index) {
$index->index();
}
}
class Auth
{
public function __construct()
{
}
public function checkForm()
{
try
{
if(!empty($this->model->empty))
{
throw new FormException('FullAllFields', 'All fields mus be full');
}
elseif(!filter_var(Session::getOne('AR', 'email'), FILTER_VALIDATE_EMAIL))
{
throw new FormException('WrongEmail', 'Не правильный формат Email');
}
elseif(Session::getOne('AR', 'pass') != Session::getOne('AR', 'confirmPass'))
{
throw new FormException('EaqualsPass', 'Ваши пароли не совпадают');
}
elseif($this->model->lookEquals(Session::getOne('AR', 'login')))
{
throw new FormException('IssetLogin', 'Пожалуйста, выберите другой логин.');
}
return true;
}
catch(FormException $e)
{
$e->GoToIndex($this);
return false;
}
}
}
Спустя 10 минут, 48 секунд (30.12.2011 - 21:10) Guest написал(а):
Вот так будет ещё правильней с точки зрения абстракций
/**
* Исключения валидации форм
*/
class FormException extends Exception
{
private $badAction = '';
public function __construct($badAction, $message, $code = 0, Exception $previous = null)
{
$this->badAction = $badAction;
parent::__construct($message, $code, $previous);
}
public function GoToIndex($index) {
$index->index();
}
}
class AuthForm extends Form
{
public function __construct()
{
}
public function checkForm()
{
try
{
if(!empty($this->model->empty))
{
throw new FormException('FullAllFields', 'All fields mus be full');
}
elseif(!filter_var(Session::getOne('AR', 'email'), FILTER_VALIDATE_EMAIL))
{
throw new FormException('WrongEmail', 'Не правильный формат Email');
}
elseif(Session::getOne('AR', 'pass') != Session::getOne('AR', 'confirmPass'))
{
throw new FormException('EaqualsPass', 'Ваши пароли не совпадают');
}
elseif($this->model->lookEquals(Session::getOne('AR', 'login')))
{
throw new FormException('IssetLogin', 'Пожалуйста, выберите другой логин.');
}
return true;
}
catch(FormException $e)
{
$e->GoToIndex($this);
return false;
}
}
}
class Auth
{
public function __construct()
{
$formValidation = new AuthForm();
$formValidation->checkForm();
}
}
Спустя 22 минуты, 56 секунд (30.12.2011 - 21:33) Invis1ble написал(а):
все зависит от задач, можно 100500 сущностей наплодить
Спустя 1 час, 30 минут, 6 секунд (30.12.2011 - 23:03) m4a1fox написал(а):
Спасибо за труд. Очень интересно буду исправлять. На сегодняшний момент код выглядит вот так
function run(){
$this->model->run();
$array = array(
'login' => 'Логин',
'name' => 'Имя',
'surname' => 'Фамилия',
'day' => 'День рождения',
'month' => 'Месяц рождения',
'year' => 'Год рождения',
'sex' => 'Пол',
'email' => 'Email',
'pass' => 'Пароль',
'confirmPass' => 'Повтор пароля',
'token' => 'Токен'
);
if(!empty($_SESSION['AR'])){
foreach($array as $key=>$value){
$this->model->getString($key, $value, true, $_POST[$key]);
}
if($this->checkForm()){
Session::set('loggedIn', true);
$this->model->create();
header("Location: ../index");
}
}else{
Error::errorRefresh();
}
}
function checkForm(){
if(!empty($this->model->empty)){
Request::set('FullAllFields', 'Необходимо заполнить все поля');
$this->index();
return false;
}elseif(!filter_var(Session::getOne('AR', 'email'), FILTER_VALIDATE_EMAIL)){
Request::set('WrongEmail', 'Пожалуйста, введите правильный адрес электронной почты.');
$this->index();
return false;
}elseif(Session::getOne('AR', 'pass') != Session::getOne('AR', 'confirmPass')){
Request::set('EaqualsPass', 'Ваши пароли не совпадают');
$this->index();
return false;
}elseif($this->model->lookEquals(Session::getOne('AR', 'login'))){
Request::set('IssetLogin', 'Такой логин уже зарегестрирован. Выберите другой.');
$this->index();
return false;
}
return true;
}
Спустя 2 минуты, 56 секунд (30.12.2011 - 23:06) caballero написал(а):
Цитата |
Вот так будет ещё правильней с точки зрения абстракций |
А при чем тут абстракции и вообще шо сие такое в данном контексте.
Цитата |
все зависит от задач, можно 100500 сущностей наплодить |
Да, пример класического индусского кода.
Спустя 7 минут, 52 секунды (30.12.2011 - 23:14) caballero написал(а):
а зачем это повторять?
$this->index();
почему не
$this->index();
почему не
if($this->checkForm()){
Session::set('loggedIn', true);
$this->model->create();
header("Location: ../index");
}
else
{
$this->index();
}
Спустя 8 минут, 19 секунд (30.12.2011 - 23:22) m4a1fox написал(а):
caballero
Тут вот так реализовано
Это от прямого доступа!
Тут вот так реализовано
if(!empty($_SESSION['AR'])){
foreach($array as $key=>$value){
$this->model->getString($key, $value, true, $_POST[$key]);
}
if($this->checkForm()){
Session::set('loggedIn', true);
$this->model->create();
header("Location: ../index");
}
}else{
Error::errorRefresh();
}
Это от прямого доступа!
Спустя 11 минут, 19 секунд (30.12.2011 - 23:34) caballero написал(а):
Цитата |
Это от прямого доступа! |
Куда доступа? Я просто вынес повторяющийся 4 раза код за скобки.
Спустя 36 минут, 18 секунд (31.12.2011 - 00:10) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 20:06) |
А при чем тут абстракции и вообще шо сие такое в данном контексте. |
Учим ООП проектирование и не сношаем моск другим своей безграмотностью
Спустя 5 минут, 47 секунд (31.12.2011 - 00:16) Guest написал(а):
Цитата (Invis1ble @ 30.12.2011 - 18:33) |
все зависит от задач, можно 100500 сущностей наплодить |
Да всё правильно, но в данном случае разделение абстракций как раз уместно.
Приведу пример, если m4a1fox захочет ввести валидацию отдельно по каждому полю и вывод ошибочного сообщения только тому полю, которое инициировало ошибку, тогда нужно будет раздувать функции работающие с ошибками это во первых. Во вторых применение различных моделей форм можно будет применять на лету а не статически записанном в checkForm, вообщем чем лучше спроектирована система по абстракциям тем более гибкая, пример тому JS (caballero, если не понял лучше спроси чем глупы посты пдлодить на подобие
Цитата |
А при чем тут абстракции и вообще шо сие такое в данном контексте. |
)
Спустя 1 минута, 57 секунд (31.12.2011 - 00:18) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 20:06) | ||
А при чем тут абстракции и вообще шо сие такое в данном контексте. |
Это ООП, для неграмотных объектно-ориентированное программирование.
Встречный вопрос, а какой контекст здесь?

Спустя 3 минуты, 2 секунды (31.12.2011 - 00:21) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 20:06) |
Да, пример класического индусского кода. |
Просто требую аргументов

Спустя 37 минут, 33 секунды (31.12.2011 - 00:58) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 20:06) |
Да, пример класического индусского кода. |
Гмм ... странно, Вы считаете и разработчиков YII индусами в области WEB разработки. Потому что код напоминает модель YII.
Спустя 7 минут, 12 секунд (31.12.2011 - 01:05) caballero написал(а):
Цитата |
Учим ООП проектирование и не сношаем моск другим своей безграмотностью |
А еще лучше не втыкаем умняки где ни попадя.
Цитата |
Это ООП, для неграмотных объектно-ориентированное программирование. |
ООП я уже знал когда ты еще не знал что такое компьютер.
Цитата |
Встречный вопрос, а какой контекст здесь? |
Контекст здесь- конкретный вопрос конкретного человека с конкретным куском кода. Прежде чем давать встречный вопрос - ответь на заданный.
Цитата |
Просто требую аргументов |
Количество лишних строк кода и лишних сущностей в частности не имеющего смысла класса FormException. Не пробовал перейти от копипастов с вумных книжек к правтическому программированию?
Спустя 3 минуты, 59 секунд (31.12.2011 - 01:09) caballero написал(а):
Цитата |
Вы считаете и разработчиков YII индусами в области WEB разработки |
Индусов много в программировании- это не ругательство а стиль кодирования. На каждый чих создается иерархия классов, интерфейсов абстрактных фабрик и прочего. Они так привыкли им раньше плалтили зарплату от количествотва строк кода (как при совке кстати)
Спустя 1 минута, 12 секунд (31.12.2011 - 01:11) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 22:05) | ||||||||
А еще лучше не втыкаем умняки где ни попадя.
ООП я уже знал когда ты еще не знал что такое компьютер.
Контекст здесь- конкретный вопрос конкретного человека с конкретным куском кода. Прежде чем давать встречный вопрос - ответь на заданный.
Количество лишних строк кода и лишних сущностей в частности не имеющего смысла класса FormException. Не пробовал перейти от копипастов с вумных книжек к правтическому программированию? |
Пад сталом! особенно с
Цитата |
ООП я уже знал когда ты еще не знал что такое компьютер. |
Ты хоть знаешь мой опыт, по твоим аргументам можно делать лекции, как я не умею думать. Кстати книги иногда полезно почитать, да и других проектах посмотреть как хорошо делается. Блин такое впечатление что за ником caballero находится ламер с большим рюкзаком комплекса неполноценности, юноша который хочет доказать всему миру что я делаю лучше всех и большой знаток программирования.
Спустя 1 минута, 45 секунд (31.12.2011 - 01:12) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 22:09) | ||
Индусов много в программировании- это не ругательство а стиль кодирования. На каждый чих создается иерархия классов, интерфейсов абстрактных фабрик и прочего. Они так привыкли им раньше плалтили зарплату от количествотва строк кода (как при совке кстати) |
В YII такой же принцип архитектуры, ещё раз они то же индусы (хотя за свои строчки кода не получили ни чего)
Спустя 2 минуты, 55 секунд (31.12.2011 - 01:15) Guest написал(а):
Цитата (Invis1ble @ 30.12.2011 - 18:33) |
все зависит от задач, можно 100500 сущностей наплодить |
Согласен избыточность присутствует, но в контексте расширения проекта это может быть довольно обосновано и даст более лучшие результаты чем смешивание абстракций.
Спустя 10 минут, 47 секунд (31.12.2011 - 01:26) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 22:05) |
Контекст здесь- конкретный вопрос конкретного человека с конкретным куском кода. Прежде чем давать встречный вопрос - ответь на заданный. |
Это не контекст это вопрос, контекст этого кода как раз лежит в области ООП и лучшем применении условных переходов. А если ты очень хороший спец в ООП должен знать что ООП так же призвано убрать условности из программ.
Спустя 17 минут, 59 секунд (31.12.2011 - 01:44) caballero написал(а):
Цитата |
по твоим аргументам можно делать лекции, как я не умею думать. |
угадал
Цитата |
юноша который хочет доказать всему миру что я делаю лучше всех |
Не угадал
Цитата |
большой знаток программирования |
угадал
Спустя 4 минуты, 29 секунд (31.12.2011 - 01:48) Invis1ble написал(а):
Дорогие гости, вы хоть подписывайтеся хоть каким-нибудь ником, чтобы различать действующие лица

Спустя 47 секунд (31.12.2011 - 01:49) caballero написал(а):
Цитата |
В YII такой же принцип архитектуры |
Такой это какой? И с каких пор YII - истина в последней инстанции.
Цитата |
что ООП так же призвано убрать условности из программ |
Шо сие такое "условности" и при чем тут ООП?
Цитата |
Это не контекст это вопрос, |
Может начать с толкового словаря русского языка прежде чем к ООП переходить?
Цитата |
контекст этого кода как раз лежит в области ООП |
Как говорил профессор Преобрадженский "кто на ком стоял? Голубчик потрудитесь излагать ваши мысли яснее".
Спустя 12 минут, 54 секунды (31.12.2011 - 02:02) Guest написал(а):
Тебе политиком нужно быть, баки забивать и темы переводить, это получается лучше.
Спустя 12 секунд (31.12.2011 - 02:02) caballero написал(а):
Цитата |
Тьфу блин несмышлёныш. Да же не хочется диалог вести. Только воду в ступе толочь. |
Так говори понятным ТЕХНИЧЕСКИМ языком а не неси какую то невнятную лабуду из наукообразных терминов и бессмысленных конструкций типа "абстракция" "условность" и прочее. .
Спустя 8 минут, 44 секунды (31.12.2011 - 02:11) Guest написал(а):
Цитата (caballero @ 30.12.2011 - 23:02) |
Так говори понятным ТЕХНИЧЕСКИМ языком а не неси какую то невнятную лабуду из наукообразных терминов и бессмысленных конструкций типа "абстракция" "условность" и прочее. . |
Да же в ступор ввёл и подтвердил мои слова
http://www.ctc.msiu.ru/materials/Book/node82.html
http://www.objectorient.narod.ru/1d.htm
- вперёд и с песнями.
Если уже это считать НЕ ТЕХНИЧЕСКИМ языком, тогда уж извини ты сам себя сдал в неграмотности.
Спустя 1 минута, 9 секунд (31.12.2011 - 02:12) inpost написал(а):
Guest
Мега крутой авторитетный источник: "narod.ru"
Мега крутой авторитетный источник: "narod.ru"

Спустя 3 минуты, 13 секунд (31.12.2011 - 02:15) inpost написал(а):
! |
inpost |
Спустя 18 минут, 34 секунды (31.12.2011 - 02:34) Greg1978 написал(а):
Цитата (inpost @ 30.12.2011 - 23:15) |
Мне не нравится поведение некоторых анонимов в связи с их грубостью. В эту тему закрыт доступ для анонимов. Георгий, вроде так тебя зовут, сколько лет тебе не было, есть такая вещь: "Человеческое общение", и если ты обделён ею, не надо всю грязь выливать на других посетителей. Тебя не пытались оскорблять, так кто тебе давал право так себя вести? К тому же, если не ошибаюсь, тебе уже за 30, а поведением остался на уровне троллей. Ах да, ещё ко всему прочему сейчас у людей праздник, не можешь испускать из своих уст радость, доброту и праздничное настроение, то лучше помолчать, и свои проблема оставить при себе... это так, мой тебе совет.inpost |
Не не не, не надо меня сюда впутывать ... извольте.
То что я согласен с гостем не даёт право Вам меня обвинять в этом.
И большая просьба удалить своё замечание в мой адрес.
Спустя 13 минут, 9 секунд (31.12.2011 - 02:47) inpost написал(а):
Greg1978
У вас не только IP одинаковый, но и юзерагент, и другие параметры. Даже подделка с дополнительного приложения к FF не поможет скрыть.
В любом случае смысл не в этом, спор - это всегда плюс на любого программирования, не надо лишь грубить.
update: ещё и настройки браузера такие же.
У вас не только IP одинаковый, но и юзерагент, и другие параметры. Даже подделка с дополнительного приложения к FF не поможет скрыть.
В любом случае смысл не в этом, спор - это всегда плюс на любого программирования, не надо лишь грубить.
update: ещё и настройки браузера такие же.
Спустя 2 минуты, 20 секунд (31.12.2011 - 02:50) Greg1978 написал(а):
Цитата (inpost @ 30.12.2011 - 23:47) |
Greg1978 У вас не только IP одинаковый, но и юзерагент, и другие параметры. Даже подделка с дополнительного приложения к FF не поможет скрыть. В любом случае смысл не в этом, спор - это всегда плюс на любого программирования, не надо лишь грубить. update: ещё и настройки браузера такие же. |
Простите, но я сам специалист веб разработчик. Не ужели вы думаете я не знаю по каким параметрам вычисляется один и тот же пользователь.
И да кстати по IP это не вариант. У меня он динамический, странно как это может быть один и тот же. Да ладно, удачи и весёлых праздников.
Спустя 7 минут, 29 секунд (31.12.2011 - 02:57) inpost написал(а):
Greg1978
Никто не спорит про ваш опыт в веб-разработках, наоборот, достаточно проблемным был бы троллем, если бы стал вдруг таким. Потому что подделывать и скрывать данные можешь хорошо.
Про IP я сказал специально, чтобы вызвать такую реакцию и возмущение. Если динамический, то выдаётся провайдером, к тому же на сеть может быть один общий, тебе бы ещё и не знать. Возмущение у тебя вызвало то, что ты поменял свой IP прежде чем написать, а тут тебе говорят, что общий IP, ну как не возмутиться на прямую ложь в свой адрес. Это уже психология.
Ты можешь спорить, но мы оба знаем, что это был ты. В любом случае, тебя тоже с праздником и весёлых выходных!
Никто не спорит про ваш опыт в веб-разработках, наоборот, достаточно проблемным был бы троллем, если бы стал вдруг таким. Потому что подделывать и скрывать данные можешь хорошо.
Про IP я сказал специально, чтобы вызвать такую реакцию и возмущение. Если динамический, то выдаётся провайдером, к тому же на сеть может быть один общий, тебе бы ещё и не знать. Возмущение у тебя вызвало то, что ты поменял свой IP прежде чем написать, а тут тебе говорят, что общий IP, ну как не возмутиться на прямую ложь в свой адрес. Это уже психология.
Ты можешь спорить, но мы оба знаем, что это был ты. В любом случае, тебя тоже с праздником и весёлых выходных!
Спустя 2 минуты, 52 секунды (31.12.2011 - 03:00) Greg1978 написал(а):
Ок, раз на то пошло просьба удалить меня с форума.
PS: Глубоко ошибаетесь.
PS: Глубоко ошибаетесь.
Спустя 9 минут, 39 секунд (31.12.2011 - 03:10) inpost написал(а):
3 000 уникальных в сутки. Какова вероятность, что под именем "Георгий" есть только 1 посетитель всего? Никто не говорил на тебя, ты сам сказал на себя это.
В любом случае я насчитал 4 факта, которые выдали тебя. А эта наука, кстати, называется "Криминальная психология"
В любом случае я насчитал 4 факта, которые выдали тебя. А эта наука, кстати, называется "Криминальная психология"