Модераторы: Aliance, skyboy, MoLeX, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Библиотека самых бесполезных кусков кода, или как не стоит писать на РНР 
:(
    Опции темы
IZ@TOP
  Дата 23.8.2006, 09:47 (ссылка) |  (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Недавно было обсуждение в одной теме - обсуждалось сколько можно валяться под столом глядя в чужой код.
Эта тема будет посвящена всему тому что пишут некоторые особоодаренные индивидумы. И/или начинающие пыхеры.
Прошу господ программистов постить, все что подвернется под руку, заслуживающее, так или иначе, постинга в данной теме. Желательно с комментарием о причине его ужасающей бесполезности, проблем безопасности и просто плохого стиля программирования.

Для новичков это будет основой для оценки своего кода.

Я пожалуй начну первым. Следующий код мне прислал человек, которого я собеседовал для своей старой работы на з.п. приблезительно близкой к 1000 у.е.:
Код

<?php
/**
 * File name admin.php
 * @author anonymous
 * 
 * Данный код предоставлен только в познавательных целях. 
 * Ни кто не несет ответственности за проблемы возникшие в результате
 * его использования.
 */


/**
 * Аффтар! Ну скажи мне, что это за непонятные инклуды и вызовы функций? 
 * Для чего?
 */

#include ('index2.php');
#include ('news.php');
#include ('shubl.php');
#shablon();
#addnews();
#shablon2();'



/**
 * Код конечно закоментен, но видно register_globals стоит в on))
 * Запомните дети - ни когда и ни при каких обстоятельствах не пользуйтесь 
 * авторегистрацией глобальных переменных или их симуляторами вроде extract'a!
 */
/*
  if ($HTTP_SERVER_VARS["argc"] != 0)
  {
   header("location: $PHP_SELF");
   exit;
  }
  */
  //global $pasfile;
//echo $pasfile;

/**
 * Замечательная конструкция! Естественно у меня на FreeBSD где расположен мой сервер
 * пароль от админки будет лежать в корне на диске C:! И естественно если он не найден
 * я умолчу об этом факте дабы ни кто не знал почему на странице пусто!
 */
if ($pasfile == 0) {  
   if (!file_exists ("c:\\password.txt"))
     {
//      header ("Location: invalpas.html");
      exit;
     }
   if ($fp = fopen("c:\\password.txt", "r")) 
     {
         
     /**
      * Какая однако красота! Тут без поллитра не разберешься что человек хотел
      * сделать! Возможно проще использовать explode, file? :p
      */
     while (feof($fp) == 0) 
      { 
       $line = trim(fgets($fp,1000)); 
       $userPass = split(",", $line); 
       if (($userPass[0] == $username) and ($userPass[1] == $password)) 
        { 
        $file =  fopen("user.txt", "w");
         fwrite ($file,$username);
 $pasfile = 1;
   $spisok="none";  
   $title="Панель администрирования сайта";
   $head="Панель администрирования сайта";
   
   /**
    * А вот это вообще супер! Кто ни будь слышал что такое switch? А то я что-то подзабыл!
    */
   
 if (@$link=="addnews") { 
   require ('index2.html');
   require ('admin/news.html');
   require ('shubl.html');
 }
 if (@$link=="adduser") { 
   require ('index2.html');
   require ('admin/adduser.html');
   require ('shubl.html');
 } 
  if (@$link=="") { 
   require ('index2.html');
   require ('admin/pan.html');
   require ('shubl.html');
 } 
 
   exit;
        } 
      }
      
 /**
  * Ну конечно эти комментарии многословно описывают все что нам 
  * необходимо знать о коде! Пусть они и встретились нам разок -
  * пустячек, а приятно)))
  */
 
//** invalid username / password entered. **
  //    include ('invalpas.html');
   $pasfile = 0;
   header ("Location: invalpas.html");
     exit;
    }
} else
{
   $spisok="none";  
   $title="Панель администрирования сайта";
   $head="Панель администрирования сайта";
   
   
 /**
  * Ну и опять таки, я все ни как не могу вспомнить зачем
  * иногда пользуюсь кострукцией switch/case! ХЭЛП!
  */
 if (@$link=="addnews") { 
   require ('index2.html');
   require ('admin/news.html');
   require ('shubl.html');
 }
 if (@$link=="adduser") { 
   require ('index2.html');
   require ('admin/adduser.html');
   require ('shubl.html');
 } 
  if (@$link=="") { 
   require ('index2.html');
   require ('admin/pan.html');
   require ('shubl.html');
 } 
}
/*global $login;
if ($login == "ok"){
require ('index2.html');
require ('admin/addnews.html');
require ('shubl.html');
}
else
{
require ('invalpas.html');
}
*/
?>


Немного комментария к коду:
1. Ужасный стиль программирования.
2. Проблемы безопасности.
3. Если его и оптимизировать, то только переписав заново. Уж больно не оптимально.

И еще ссылка по теме http://forum.vingrad.ru/index.php?showtopic=108540. Собственно благодаря ему и радилась идея создать данный топик.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Greendrake
Дата 23.8.2006, 09:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 364
Регистрация: 14.7.2005

Репутация: нет
Всего: 6



Думаю, любому более-менее опытному программисту сложно удержаться от пристрастной и субъективной оценки чужого кода. Зачастую превалирует "написано не так как пишу я, а я пишу наиболее оптимально, поэтому этот код - так себе".

Строгих и доказанных правил написания кода не существует - это творческий процесс (я не имею ввиду соблюдение читаемости, отступы и комментарии - это безусловно). Поэтому я убеждён, что придираться нужно в основном к работе кода. 

Это сообщение отредактировал(а) Greendrake - 23.8.2006, 09:56
PM MAIL   Вверх
IZ@TOP
Дата 23.8.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Greendrake, полностью поддерживаю! Именно этот вопрос я и хотел затронуть в данной теме! Стоит хотя бы пройтись по ссылке в теме.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 23.8.2006, 11:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(Greendrake @  23.8.2006,  10:55 Найти цитируемый пост)
Думаю, любому более-менее опытному программисту сложно удержаться от пристрастной и субъективной оценки чужого кода. Зачастую превалирует "написано не так как пишу я, а я пишу наиболее оптимально, поэтому этот код - так себе".

Не согласен. Опытному кодер нормально воспримет код, если он однообразный и написан по человечески. А привычки (мелочи всякие) это можно и пропустить.

Цитата(Greendrake @  23.8.2006,  10:55 Найти цитируемый пост)
Строгих и доказанных правил написания кода не существует - это творческий процесс (я не имею ввиду соблюдение читаемости, отступы и комментарии - это безусловно). Поэтому я убеждён, что придираться нужно в основном к работе кода. 

Вообще, ыроде был рекомендательный ISO...
PM ICQ   Вверх
smartov
Дата 23.8.2006, 11:49 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(Mal Hack @  23.8.2006,  10:18 Найти цитируемый пост)
Опытный кодер нормально воспримет код, если он однообразный и написан по-человечески

Поддерживаю.

Одно дело творчество. Другое дело незнание/неумение/нежелание. Творчество в программировании должно быть логически обосновано. А я не могу найти логического, стилистического или иного обоснования для кода, которым мне достался. Например:

Код

   if (!empty($_SESSION['loa_sortfield']))
      {
      if ($_SESSION['loa_sortfield'] == "loa_title")
         {
         $orderby = "obj_title";
         $ordertype = "text";
         }
      elseif ($_SESSION['loa_sortfield'] == "loa_type")
         {
         $orderby = "object";
         $ordertype = "text";
         }
      elseif ($_SESSION['loa_sortfield'] == "loa_action")
         {
         $orderby = "action";
         $ordertype = "text";
         }
      elseif ($_SESSION['loa_sortfield'] == "loa_date")
         {
         $orderby = "adate";
         $ordertype = "text";
         }
      elseif ($_SESSION['loa_sortfield'] == "loa_time")
         {
         $orderby = "atime";
         $ordertype = "text";
         }
      elseif ($_SESSION['loa_sortfield'] == "loa_user")
         {
         $orderby = "login";
         $ordertype = "text";
         }
      elseif ($_SESSION['loa_sortfield'] == "loa_ip")
         {
         $orderby = "ip_address";
         $ordertype = "text";
         }
      }


switch не только сэкономит тут место, но и сделает код читаемее и саппортнее. Я уж молчу о постоянно повторяющейся строке $ordertype = "text"; 7 раз! Одна и та же строка! Это у них творчество такое?

Или еще из перлов того проекта.
Для выставления прав на файлы, господа предыдущие "кодеры" использовали shell_exec('chmod....') (при том что есть родная функция), ну ладно, это дело такое, НО если вы уж так любиете shell_exec то зачем (?!) было для копирования директории со всем содержимым в другое место писать функцию (!) рекурсивную естественно, вместо того, чтобы просто и банально, как раз тут и заюзать shell_exec('cp...'). 
Мы иногда думаем, что может им за строчки кода платили.....

Или файлы, на 20 кб без (внимание!) без хотя бы единственной функции (!), в которых без поллитра не разобраться. То есть файл - одна большая процедура. При чем написана так, что идет if ($_POST...) то 200 строк кода, else - еще 200... В некоторых файлах вложенность скобок доходила до 8 (!).

Так же господа "те кодеры" постоянно перед самым выходом из файла, или перед директивой exit, ансетили по 5-8 переменок. В каждом месте вызова exit. В общем о каком творчестве речь? Это просто дилетанство.

Добавлено @ 12:00 
IZ@TOP
Код

      * сделать! Возможно просто explode(',', file_get_contents(...)) :p
      */
     while (feof($fp) == 0) 
      { 
       $line = trim(fgets($fp,1000)); 
       $userPass = split(",", $line); 


Просто explode не поможет. Нужно читать построчно.
Это если сначала $f =  file(...) а потом foreach ($f...) ... explode, то да.

Это сообщение отредактировал(а) smartov - 23.8.2006, 11:52
PM MAIL   Вверх
IZ@TOP
Дата 23.8.2006, 12:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Цитата(smartov @  23.8.2006,  12:49 Найти цитируемый пост)
Просто explode не поможет. Нужно читать построчно.
Это если сначала $f =  file(...) а потом foreach ($f...) ... explode, то да.

Естественно!))) Щас поправим)))


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Vaulter
Дата 23.8.2006, 13:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



ну что ж..вверили мне систему сайтов. и не смешно мне было отнюдь smile
для начала:
Код

function mailsender($a, $b, $c, $d)
{
$head      = "Content-type: text/html; charset=windows-1251\n";
$head     .= "From: ************\n";
$head     .= "Reply-To: ***********\n";
    
if ($a == "1") 
{
$query333 = "select * from dec_mess where typemess='1'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess']; 
}
elseif ($a == "2") 

$query333 = "select * from dec_mess where typemess='2'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess'];
}
elseif ($a == "3") 

$query333 = "select * from dec_mess where typemess='3'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess'];
}
elseif ($a == "4") 
{
$query333 = "select * from dec_mess where typemess='4'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess']; 
}


  if ($c == "0")
  {
$query = "select email from dec_users where type_user='$b'";
$result = mysql_query($query);
  while ($arw = mysql_fetch_array($result))
  {
  $to = "$arw[email]";
  mail($to, $subj, $mess, $head);
  }
  }
  else
  {
  $query = "select id_kto_vip from dec_orders where id='$c'";
  $result = mysql_query($query);
  $arw = mysql_fetch_array($result);
  $query = "select email from dec_users where id='$arw[id_kto_vip]'";
  $result = mysql_query($query);
  $arw = mysql_fetch_array($result);
  $to = $arw['email'];
  mail($to, $subj, $mess, $head);
  }
  
}

прониклись? человеку деньги за это платились..... скотина...


--------------------
PM MAIL WWW ICQ   Вверх
smartov
Дата 23.8.2006, 13:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(Vaulter @  23.8.2006,  12:13 Найти цитируемый пост)
($a, $b, $c, $d)

Убило наповал smile
PM MAIL   Вверх
Vaulter
Дата 23.8.2006, 13:54 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



гы, ща кстати заметил вот еще, как он его вызывал:
Код

mailsender("2", "2", "0", "$idorder");

ей богу не придумал! smile такое невозможно придумать smile

Добавлено @ 13:55 
а это я называю "упорный тип":
Код

  echo "день: <select name=dat_d><option value=1>1<option value=2>2<option value=3>3<option value=4>4<option value=5>5<option value=6>6<option value=7>7<option value=8>8<option value=9>9<option value=10>10<option value=11>11<option value=12>12<option value=13>13<option value=14>14<option value=15>15<option value=16>16<option value=17>17<option value=18>18<option value=19>19<option value=20>20<option value=21>21<option value=22>22<option value=23>23<option value=24>24<option value=25>25<option value=26>26<option value=27>27<option value=28>28<option value=29>29<option value=30>30<option value=31>31</select>";
  echo " месяц: <select name=dat_m><option value=1>1<option value=2>2<option value=3>3<option value=4>4<option value=5>5<option value=6>6<option value=7>7<option value=8>8<option value=9>9<option value=10>10<option value=11>11<option value=12>12</select>";
  echo " год: <select name=dat_y><option value=2006>2006<option value=2007>2007<option value=2008>2008<option value=2009>2009<option value=2010>2010<option value=2011>2011<option value=2012>2012</select><br>";



Добавлено @ 13:57 
из разряда тоже "упорного типа" smile
Код

if ($a['type_user']==6) $query = "select * from dec_orders where status = '3' OR status = '4' OR status='7' OR status = '9' OR status = '10' OR status='11' OR status='12' OR status='16' ORDER BY id DESC";
else $query = "select * from dec_orders where status = '3' OR status = '4' OR status='7' OR status = '9' OR status = '10' OR status='11' OR status='12' OR status='16' AND id_kto='$_SESSION[auth]' ORDER BY id DESC";




--------------------
PM MAIL WWW ICQ   Вверх
IvanB
Дата 23.8.2006, 19:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 23.5.2005
Где: Irkutsk

Репутация: нет
Всего: 5



Цитата(Vaulter @  23.8.2006,  13:54 Найти цитируемый пост)
а это я называю "упорный тип":
Выделить всёкод PHP
1:
2:
3:
    
  echo "день: <select name=dat_d><option value=1>1<option value=2>2<option value=3>3<option value=4>4<option value=5>5<option value=6>6<option value=7>7<option value=8>8<option value=9>9<option value=10>10<option value=11>11<option value=12>12<option value=13>13<option value=14>14<option value=15>15<option value=16>16<option value=17>17<option value=18>18<option value=19>19<option value=20>20<option value=21>21<option value=22>22<option value=23>23<option value=24>24<option value=25>25<option value=26>26<option value=27>27<option value=28>28<option value=29>29<option value=30>30<option value=31>31</select>";
  echo " месяц: <select name=dat_m><option value=1>1<option value=2>2<option value=3>3<option value=4>4<option value=5>5<option value=6>6<option value=7>7<option value=8>8<option value=9>9<option value=10>10<option value=11>11<option value=12>12</select>";
  echo " год: <select name=dat_y><option value=2006>2006<option value=2007>2007<option value=2008>2008<option value=2009>2009<option value=2010>2010<option value=2011>2011<option value=2012>2012</select><br>";


Добавлено @ 13:57 
из разряда тоже "упорного типа" smile
Выделить всёкод PHP
1:
2:
    
if ($a['type_user']==6) $query = "select * from dec_orders where status = '3' OR status = '4' OR status='7' OR status = '9' OR status = '10' OR status='11' OR status='12' OR status='16' ORDER BY id DESC";
else $query = "select * from dec_orders where status = '3' OR status = '4' OR status='7' OR status = '9' OR status = '10' OR status='11' OR status='12' OR status='16' AND id_kto='$_SESSION[auth]' ORDER BY id DESC";

А вот в этом как раз ничего плохого не вижу.... )
Хотя переносы всё же стоит иногда делать.

--------------------
Закон отладки: Каждая последняя ошибка является предпоследней.
PM MAIL ICQ   Вверх
skyboy
Дата 23.8.2006, 23:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



IvanB, "плохого" может и нету здесь... но циклы, циклы-то на кой ляд придумали?!
PM MAIL   Вверх
Vaulter
Дата 24.8.2006, 08:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



IvanB, ну и плохо, что не видишь ничего плохого! smile


--------------------
PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 24.8.2006, 11:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



IvanB, спешал фо ю эта тема была создана, коль ничего страшного в том коде не видишь)))

Записался в программисты?
Будь так добр писать красиво!
Чтоб понятно и с комментом,
Безопасно для системы,
Чтоб потом не засмеяли,
И к пробабкам не послали!


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Vaulter
Дата 24.8.2006, 11:36 (ссылка) |    (голосов:3) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



IZ@TOP, жжошь! smile
продолжая тему.

Код

<table border="0" width="100%" cellspacing="0" cellpadding="0">
    <tr>
        <td width="50%" class="lksss" valign="top">
<br>
<?
include("dblib.inc.php");
$query = "select * from baza where cat='1'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_1.html">Бухучёт, статистика</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='2'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_2.html">Иностранные языки</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='3'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_3.html">История</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='4'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_4.html">Медицина</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='5'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_5.html">Педагогика</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='6'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_6.html">Политология</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='7'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_7.html">Программирование</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='8'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_8.html">Психология</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='9'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_9.html">Разное</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='10'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_10.html">Русский язык и литература</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='11'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_11.html">Социология</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='12'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_12.html">Технические</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='13'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_13.html">Философия</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='14'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_14.html">Финансы и кредит</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='15'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_15.html">Химия и физика</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='16'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_16.html">Экономика</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='17'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_17.html">Юриспруденция</a> <small>(<?=$nm?>)</small>
</td>
        <td width="50%" class="lksss" valign="top">
<b>Шпаргалки школьникам:</b><br>
<?
include("dblib.inc.php");
$query = "select * from baza where cat='18'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_18.html">Литература</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='19'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_19.html">Математика</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='20'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_20.html">История</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='21'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_21.html">Человек и общество</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='22'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_22.html">Биология</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='23'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_23.html">Иностранные языки</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='24'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_24.html">Русский язык</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='25'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_25.html">Информатика</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='26'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_26.html">Право</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='27'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_27.html">Обществознание</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='28'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_28.html">География</a> <small>(<?=$nm?>)</small>
<?
$query = "select * from baza where cat='29'";
$result = mysql_query($query);
$nm = mysql_num_rows($result);
?>
<a href="./wapcat_29.html">Природоведение</a> <small>(<?=$nm?>)</small>
</td>
</tr>
</table>



--------------------
PM MAIL WWW ICQ   Вверх
smartov
Дата 24.8.2006, 12:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



млиин.. 29 раз... упорный тип, без вопросов... он наверное себе макросы в редакторе писал smile
PM MAIL   Вверх
Darhazer
Дата 24.8.2006, 13:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 429
Регистрация: 28.9.2005
Где: HellCity (Sofia, Bulgaria)

Репутация: 1
Всего: 29



Мой любимий кусок кода, не помню где его видел, но сразу в WTF отправил
Код
if (unlink("../news_photos/smalls/".$filename_old) == TRUE) {
     unlink("../news_photos/smalls/".$filename_old);
 }


P.S. это из винграда:
http://forum.vingrad.ru/index.php?showtopic=47964&hl=

Это сообщение отредактировал(а) Darhazer - 24.8.2006, 18:24


--------------------
I'm a wheel, I'm a wheel, I can roll, I can feel
But you can't stop me turning
'Cause I'm the sun, I'm the sun, I can move, I can run
But you'll never stom me burning
PM MAIL WWW ICQ YIM   Вверх
IZ@TOP
Дата 24.8.2006, 13:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Darhazer, ЖЖЕШЬ НЕ ПАДЕЦКИ! У нас весь офис лежал!!!

Добавлено @ 13:33 
Мне тут рассказывали про комменты в коде, значит идет какой-то if, и там коммент:
Код


if(что-то != чего-то) { // По идее логика программы сюда доходить не должна
   $_variable = что-то;
}



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Mal Hack
Дата 24.8.2006, 17:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Цитата(IZ@TOP @  24.8.2006,  14:31 Найти цитируемый пост)
Мне тут рассказывали про комменты в коде, значит идет какой-то if, и там коммент:

Вспомнилось. На вовебе одно ламо код JS не рабочий дало. Код содержал комментарий:
Цитата
<!--Dummy comment to hide code from non-JavaScript browsers-->

PM ICQ   Вверх
smartov
Дата 24.8.2006, 18:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Darhazer, ааааа smile ууужос smile smile smile
PM MAIL   Вверх
Ignat
Дата 24.8.2006, 18:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Цитата(smartov @  24.8.2006,  13:59 Найти цитируемый пост)
млиин.. 29 раз... упорный тип, без вопросов... он наверное себе макросы в редакторе писал

Хуже... Я такого кода, наверное, километров 10 перефакторил. Так пишут поклонники копипаста.


--------------------
Теперь при чем :P
PM   Вверх
vasac
Дата 24.8.2006, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1060
Регистрация: 4.5.2006

Репутация: нет
Всего: 36



Не далее, как вчера, наткнулся на код:
Код

$a = addslashes( stripslashes( addslashes( $str ) ) );


То ли чел покурил не того.
То ли я не понимаю всей глубинной сути.
PM WWW   Вверх
Vreden
Дата 24.8.2006, 21:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Idiotic Admin
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 12.7.2006

Репутация: -1
Всего: 1



Так ребятки, знаю код безобразный, признаюсь мой, упорный тип, да, знаю, не кричите.
Код

<?
$login = $_POST['login'];
$parol = $_POST['parol'];
$parol_povtor = $_POST['parol_povtor'];
if (preg_match('~[^qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMéöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ¸ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¨012345678 9]+~', $login))
{echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Âû èñïîëüçîâàëè çàïðåùåííûå ñèìâîëû â èìåíè ïåðñîíàæà. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
else
  {if (is_numeric($login[0]))
  {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Èìÿ âàøåãî ïåðñîíàæà íà÷èíàåòñÿ ñ öèôðû. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
  else
    {if ($parol != $parol_povtor)
    {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäåííûå âàìè ïàðîëè íå ñîâïàäàþò. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
    else
      {if ($login[0] == "")
      {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäèòå ïîæàëóéñòà Âàø ëîãèí. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
      else
        {if ($parol[0] == "")
        {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäèòå ïîæàëóéñòà Âàø ïàðîëü. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
        else
          {if ($login[0] == " ")
          {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ëîãèí íå ìîæåò íà÷èíàòüñÿ ñ ïðîáåëà. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
          else
            {$leng_login = strlen($login);
            {if ($leng_login < 3)
            {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ëîãèí ñîñòîèò ìåíåå, ÷åì èç òðåõ ñèìâîëîâ. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
            else
              {$leng_parol = strlen($parol);
              {if ($leng_parol < 8)
              {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ïàðîëü ñîñòîèò ìåíåå, ÷åì èç âîñüìè ñèìâîëîâ. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
              else
                {mysql_connect("localhost","root")or die (mysql_error());
                mysql_select_db("test") or die (mysql_error());
                $del = mysql_query (sprintf("select * from `user` where  login='%s'",$login)) or die (mysql_error());
                $del= mysql_fetch_array($del);
                if ($del[1]== $login)
                  {echo "<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Òàêîé ëîãèí óæå ñóùåñòâóåò. Ïðèäóìàéòå ïîæàëóéñòà äðóãîé. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>";}
                  else
                  {session_start();
                  session_register("loginuser");
                  session_register("paroluser");
                  $loginuser = $login;
                  $paroluser = $parol;
                  #setcookie ('loginuser', $login);
                  #setcookie ('paroluser', $parol);
                  header("location: registr2.html");}}}}}}}}}}}
?>

Переделайте плиз так, чтобы была та же самая логика проги, но выглядела правильно с точки зрения этой темы. И вообще скажите плиз, что не так?


--------------------
Чё? Как? ©
PM MAIL WWW   Вверх
jzZ
Дата 24.8.2006, 22:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 91
Регистрация: 17.7.2006

Репутация: нет
Всего: 2



Код

}}}}}}}}}}}

Это вообще что такое  smile ))

Добавлено @ 22:38 
Весь код сущий кошмар, это я еще не говорю о стиле кодирования...
PM MAIL   Вверх
Ignat
Дата 25.8.2006, 08:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Код

if (preg_match('~[^qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNMéöóêåíãøùçõúôûâàïðîëäæýÿ÷ñìèòüáþ¸ÉÖÓÊÅÍÃØÙÇÕÚÔÛÂÀÏÐÎËÄÆÝß×ÑÌÈÒÜÁÞ¨012345678 9]+~', $login))

Ой, мама... Где я?
Цитата(Vreden @  24.8.2006,  22:20 Найти цитируемый пост)
И вообще скажите плиз, что не так? 

Вообще, что здесь так?


--------------------
Теперь при чем :P
PM   Вверх
Vreden
Дата 25.8.2006, 10:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Idiotic Admin
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 12.7.2006

Репутация: -1
Всего: 1



нууууууууууууу и кто-нибудь исправит?  smile 


--------------------
Чё? Как? ©
PM MAIL WWW   Вверх
Ignat
Дата 25.8.2006, 10:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Цитата(Vreden @  25.8.2006,  11:04 Найти цитируемый пост)
нууууууууууууу и кто-нибудь исправит? 

Вероятно, нет. Здесь переписывать надо  smile 


--------------------
Теперь при чем :P
PM   Вверх
Vreden
Дата 25.8.2006, 10:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Idiotic Admin
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 12.7.2006

Репутация: -1
Всего: 1



ну тогда больше код я здесь не буду показывать


--------------------
Чё? Как? ©
PM MAIL WWW   Вверх
Ignat
Дата 25.8.2006, 10:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Цитата(Vreden @  25.8.2006,  11:09 Найти цитируемый пост)
ну тогда больше код я здесь не буду показывать 

Не верный ответ. Перепиши сам по правилам, высказанным в этой теме, а затем опубликуй. Тогда советы посыпятся как из ведра  smile 
А переписывать никто не будет.


--------------------
Теперь при чем :P
PM   Вверх
Vreden
Дата 25.8.2006, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Idiotic Admin
**


Профиль
Группа: Участник
Сообщений: 295
Регистрация: 12.7.2006

Репутация: -1
Всего: 1



знал бы я как, все пишут мол это не так, это не так, а примеров кода, как сделать это не так - так!, не дают


--------------------
Чё? Как? ©
PM MAIL WWW   Вверх
Ignat
Дата 25.8.2006, 11:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Тогда начнем:
1. С какой целью перечислены все алфавитно-цифровые символы в регулярке?
2. Для чего служит оператор || , это я не увидел у вас в коде, но он там напрашивается.
3. Откуда навыки комментировать знаком # ?
4. Если есть повторы кода, то почему не используются функции?




--------------------
Теперь при чем :P
PM   Вверх
smartov
Дата 25.8.2006, 11:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Vreden, у тебя похерилась кодировка. Ну и чтоли твои кракозябры раскодировать? Раскодировать не буду. Посему код со своими комментами.

Код

<?

function print_and_Die($messageHTML)
{
    echo $messageHTML;
    exit;
}

$login = $_POST['login'];
$parol = $_POST['parol'];
$parol_povtor = $_POST['parol_povtor'];

if (preg_match('/[^\w\d]+/', $login)) //non alphanumeric symbols in login
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Âû èñïîëüçîâàëè çàïðåùåííûå ñèìâîëû â èìåíè ïåðñîíàæà. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

if (is_numeric($login[0])) //only numeric symbols in login
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Èìÿ âàøåãî ïåðñîíàæà íà÷èíàåòñÿ ñ öèôðû. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

if ($parol != $parol_povtor) //passwords mismatch
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäåííûå âàìè ïàðîëè íå ñîâïàäàþò. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

if (trim($login[0]) == "") //login is empty
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäèòå ïîæàëóéñòà Âàø ëîãèí. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

if ($parol[0] == "") // password is empty
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäèòå ïîæàëóéñòà Âàø ïàðîëü. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

if (strlen($login) < 3) //login length is less 3
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ëîãèí ñîñòîèò ìåíåå, ÷åì èç òðåõ ñèìâîëîâ. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

if (strlen($parol) < 8) //minimal passwd length = 8
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ïàðîëü ñîñòîèò ìåíåå, ÷åì èç âîñüìè ñèìâîëîâ. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

mysql_connect("localhost","root") or die(mysql_error());
mysql_select_db("test") or die (mysql_error());

$del = mysql_query('select * from `user` where  login="'.$login.'"') or die (mysql_error());
$del= mysql_fetch_array($del);

if ($del[1] == $login) //such user exists
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Òàêîé ëîãèí óæå ñóùåñòâóåò. Ïðèäóìàéòå ïîæàëóéñòà äðóãîé. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");

session_start();

//S_M_A_R_T_O_V COMMENT: SINCE PHP 4 THERE IS NO NEED IN session_register
//session_register("loginuser"); 
//session_register("paroluser");

//S_M_A_R_T_O_V COMMENT: STOP USING IDIOTIK REGISTER GLOBALS!!!!!!!!!!!!!!!!!!!!!!!!!
//$loginuser = $login;
//$paroluser = $parol;
//S_M_A_R_T_O_V COMMENT: ZACHEM HRANIT PAROL V SESSII??????

$_SESSION['loginuser'] = $login;
//$_SESSION['paroluser'] = $parol;
header("location: registr2.html");
?>

PM MAIL   Вверх
skyboy
Дата 25.8.2006, 11:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



блоки "<html><body>" и прочие части ты печатаешь в любом случае. так зачем тогда их в каждую ветвь if'a вставлять?
PM MAIL   Вверх
smartov
Дата 25.8.2006, 11:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



skyboy, угу smile но дальше оптимизячить меня задолбало. Я б вообще все не так писал
PM MAIL   Вверх
Ignat
Дата 25.8.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Лёх, к запросу:
Код

$del = mysql_query('SELECT `login` FROM `user` WHERE `login`="'.$login.'"') or die (mysql_error());






--------------------
Теперь при чем :P
PM   Вверх
smartov
Дата 25.8.2006, 11:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Ignat, дырка в секьюрити smile а что к запросу smile
PM MAIL   Вверх
Ignat
Дата 25.8.2006, 12:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Цитата(smartov @  25.8.2006,  12:59 Найти цитируемый пост)
а что к запросу 

В смысле SQL тоже по правилам оформлять надо.

еще порефакторил, взял за основу код smartov
Код

<?php

/**
* There is no include config file. So defines is used.
*/
//! Mysql
DEFINE( 'MYSQL_HOST', 'localhost' );
DEFINE( 'MYSQL_USER', 'root' );
DEFINE( 'MYSQL_PASS', '' );
DEFINE( 'MYSQL_DB', 'test' );

//! Sequrity
DEFINE( 'MIN_PASS_LEN', 8 );
DEFINE( 'MIN_LOGIN_LEN', 3 )

//! Errors
DEFINE( 'ERR_SHORT_PASS', 1<<0 );
DEFINE( 'ERR_SHORT_LOGIN', 1<<1 );
DEFINE( 'ERR_NON_ALPHA', 1<<2 );
DEFINE( 'ERR_ONLY_NUM', 1<<3 );
DEFINE( 'ERR_PASS_MISSMATCH', 1<<4 );
DEFINE( 'ERR_EMPTY_LOGIN', 1<<5 );
DEFINE( 'ERR_PASS_EMPTY', 1<<6 );

$messages = array();
$messages[ERR_SHORT_PASS] = "I^?e`a'e^a`. <br /> Ia`?i^eu n~i^n~o`i^e`o` i`a*i'a*a*, ?a*i` e`c, a^i^n~ui`e` n~e`i`a^i^ei^a^. <br /><a href='registr.html'> A*u`? ?a`c,";
$messages[ERR_SHORT_LOGIN] = "I^?e`a'e^a`. <br /> Ei^a~e`i' n~i^n~o`i^e`o` i`a*i'a*a*, ?a*i` e`c, o`?a*o~ n~e`i`a^i^ei^a^. <br /><a href='registr.html'> A*u`? ?a`c,";
$messages[ERR_NON_ALPHA] = "I^?e`a'e^a`. <br /> A^u^ e`n~ii^euc,i^a^a`ee` c,a`i?a*u`a*i'i'u^a* n~e`i`a^i^eu^ a^ e`i`a*i'e` ia*?n~i^i'a`?a`. Ii^i?i^a'o'e'o`a* a*u`a* ?a`c,. <br /><a href='registr.html'> A*u`? ?a`c,";
$messages[ERR_ONLY_NUM] = "I^?e`a'e^a`. <br /> E`i`y a^a`?a*a~i^ ia*?n~i^i'a`?a` i'a`?e`i'a`a*o`n~y n~ oe`o^?u^. Ii^i?i^a'o'e'o`a* a*u`a* ?a`c,. <br /><a href='registr.html'> A*u`? ?a`c, ";
$messages[ERR_PASS_MISMATCH] = "I^?e`a'e^a`. <br /> A^a^a*aa*i'i'u^a* a^a`i`e` ia`?i^ee` i'a* n~i^a^ia`aa`?o`. Ii^i?i^a'o'e'o`a* a*u`a* ?a`c,. <br /><a href='registr.html'> A*u`? ?a`c,";
$messages[ERR_EMPTY_LOGIN] = "I^?e`a'e^a`. <br /> A^a^a*ae`o`a* ii^?a`eo'e'n~o`a` A^a`? ei^a~e`i'. <br /><a href='registr.html'> A*u`? ?a`c,";
$messages[ERR_PASS_EMPTY] = "I^?e`a'e^a`. <br /> O`a`e^i^e' ei^a~e`i' o'?a* n~o'u`a*n~o`a^o'a*o`. I?e`ao'i`a`e'o`a* ii^?a`eo'e'n~o`a` a?o'a~i^e'. <br /><a href='registr.html'> A*u`? ?a`c,";
$messages[ERR_LOGIN_EXIST] = 'Text lost by Ignat =)';

function print_error( $messageHtml )
{
    open_body();
    echo $messageHtml;
    close_body();
}

function open_body( )
{
    echo '<html><body bgcolor="black" text="green"><p align="center">';
}

function close_body( )
{
    echo '</p></body></html>';
}

function test_login_duplicate( $login )
{
    $con = mysql_connect( MYSQL_HOST, MYSQL_USER, MYSQL_PASS ) or die( mysql_error() );
    mysql_select_db( MYSQL_DB ) or die ( mysql_error() );
    $res = mysql_query( 'SELECT `login` FROM `user` WHERE `login`="'.$login.'"') or die (mysql_error());
    $num = mysql_num_rows( );
    mysql_free_result( $res );
    mysql_close( $con );
    return ( $num == 0 ) ? true : false;
}

$login = $_POST['login'];
$parol = $_POST['parol'];
$parol_povtor = $_POST['parol_povtor'];

$error = 0;
//! non alphanumeric symbols in login
if ( preg_match( '/[^\w\d]+/', $login ) ) 
    $error = ERR_NON_ALPHA;
 //only numeric symbols in login
if ( is_numeric( $login ) )
    $error |= ERR_ONLY_NUM;
//passwords mismatch
if ( $parol != $parol_povtor )
    $error |= ERR_PASS_MISMATCH;
 //login is empty
if ( trim( $login[0] ) == "" ) 
    $error |= ERR_EMPTY_LOGIN
// password is empty
if ( $parol[0] == "" ) 
    $error |= ERR_EMPTY_PASS;
//login length is less MIN_LOGIN_LEN
if ( strlen( $login ) < MIN_LOGIN_LEN ) 
    $error |= ERR_SHORT_LOGIN;
//minimal passwd length MIN_PASS_LEN
if ( strlen( $parol ) < MIN_PASS_LEN ) 
    $error |= ERR_SHORT_PASS;
//such user exists
if ( !test_login_duplicate($login) ) 
    $error |= ERR_LOGIN_EXIST;

if ( $error > 0 )
{
    foreach( $messages as $err_code => $mesage )
        if ( $error&$err_code )
            print_error( $message );

    exit;
}



session_start();
//S_M_A_R_T_O_V COMMENT: SINCE PHP 4 THERE IS NO NEED IN session_register
//session_register("loginuser"); 
//session_register("paroluser");
//S_M_A_R_T_O_V COMMENT: STOP USING IDIOTIK REGISTER GLOBALS!!!!!!!!!!!!!!!!!!!!!!!!!
//$loginuser = $login;
//$paroluser = $parol;
//S_M_A_R_T_O_V COMMENT: ZACHEM HRANIT PAROL V SESSII??????
$_SESSION['loginuser'] = $login;
//$_SESSION['paroluser'] = $parol;
header("location: registr2.html");
?>



--------------------
Теперь при чем :P
PM   Вверх
IZ@TOP
Дата 25.8.2006, 15:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Я, если честно, предложил что то вроде этого для обработки данных:

Код

<?php
/**
 * Товарисчи, не пользуемся шорт тегами!
 */

class ValidateTypes {
    const typeNonEmptyString            = 1;
    const typeEmptyString               = 2;
    const typeNonEmptyInt               = 3;
    const typeEmptyInt                  = 4;
    const typeValidName                 = 5;
    const typeValidPassword             = 6;
    const typeValidMail                 = 7;
}

/**
 * Класс валидации данных и типов
 *
 */
abstract class _ValidateDataType {
    
    /**
     * Данные для валидации
     * 
     * @example array(
     *      'field_name1'   => 'mixvalue 1',
     *      'field_nameN'   => '...',
     * )
     *
     * @var array
     */
    protected $__validation_array;
    
    /**
     * Указание типов полей данных для последующей валидации
     *
     * @var array
     */
    protected $__validation_types;
    
    /**
     * Сообщения об ошибках для разных полей данных
     *
     * @example array(
     *      'field_name1'   => 'errormessage 1',
     *      'field_nameN'   => '...',
     * )
     * 
     * @var array
     */
    protected $__validation_errors;
    
    protected $__defined_errors;
    protected $__default_error              = 'Empty data %s';
    protected $__default_type               = 1;
    
    protected function set_errors(array $_validation_errors, $_merge) {
        if($_merge) {
            $this->__validation_errors  = array_merge($this->__validation_errors, $_validation_errors);
        } else {
            $this->__validation_errors  = $_validation_errors;
        }
        return true;
    }
    
    protected function set_array(array $_validation_array, $_merge = false) {
        if($_merge) {
            $this->__validation_array   = array_merge($this->__validation_array, $_validation_array);
        } else {
            $this->__validation_array   = $_validation_array;
        }
        return true;
    }
    
    protected function set_types(array $_validation_types, $_merge = false) {
        if($_merge) {
            $this->__validation_types   = array_merge($this->__validation_types, $_validation_types);
        } else {
            $this->__validation_types   = $_validation_types;
        }
        return true;
    }
    
    protected function __is_failed() {
        return 0 == sizeof($this->__validation_errors);
    }
    
    protected function check($_field) {
        $_checks = (isset($this->__validation_types[$_field])) ?
            $this->__validation_types[$_field] :
            $this->__default_type;
            
        switch ($type) {
            case ValidateTypes::typeEmptyInt : {
                break;
            }
            case ValidateTypes::typeEmptyString : {
                break;
            }
            case ValidateTypes::typeNonEmptyInt : {
                break;
            }
            case ValidateTypes::typeNonEmptyString : {
                break;
            }
            case ValidateTypes::typeValidMail : {
                break;
            }
            case ValidateTypes::typeValidName : {
                // проверяем логин
                break;
            }
            case ValidateTypes::typeValidPassword : {
                // Проверяем пароль
                break;
            }
        }
        
        return true;
    }
    
    protected function __set_error($_field) {
        $this->__defined_errors[] = sprintf(
            ((isset($this->__validation_errors[$_field])) ? 
                $this->__validation_errors[$_field] :
                $this->__default_error), $_field);
        
        return true;
    }
    
    public function get_defined_errors() {
        return $this->__defined_errors;
    }
    
    public function get_first_error() {
        return reset($this->__defined_errors);
    }
    
    public function get_last_error() {
        return end($this->__defined_errors);
    }
    
    public function validate() {
        foreach ($this->__validation_array as $_field => $_data) {
            if(false === $this->check($_field, $_data)) {
                $this->__set_error($_field);
            }
        }
        
        if($this->__is_failed()) {
            return false;
        }
        
        return true;
    }
}

class ValidateDataType extends _ValidateDataType {
    
    public function __construct(array $_validation_array = array(), array $_validation_types = array(), array $_validation_errors) {
        $this->set_array($_validation_array);
        $this->set_types($_validation_types);
        $this->set_errors($_validation_errors);
    }
    
    public function get_defined_errors() {
        echo "Error: " . implode("<br />Error: ", $this->__defined_errors);
    }
}

$validate   = new ValidateDataType(
    $_POST,
    array(
        'login' => array(
            ValidateTypes::typeValidName, 'min' => 3, 'max' => 10,
         ),
        'parol' => array(
            ValidateTypes::typeValidPassword, 'min' => 8, 'max'   => 30,
        )
    ),
    array(
        'login' => 'Неверный формат имени пользователя',
        'login' => 'Неверный формат пароля',
    )
);

if($validate->validate()) {
    $validate->display_errors();
    exit;
}



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Ignat
Дата 25.8.2006, 15:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



IZ@TOP, зачОт,  smile 
Вот только одно замечание по коду:
аргументы в объявлениях и вызовах функций и методов класса принято обрамлять пробелами (по крайней мере меня за это "били долго").
Т.е. не так:
Код

    protected function check($_field) {
        $_checks = (isset($this->__validation_types[$_field])) ?
            $this->__validation_types[$_field] :
            $this->__default_type;

а так:
Код

    protected function check( $_field ) {
        $_checks = ( isset( $this->__validation_types[$_field] ) ) ?
            $this->__validation_types[$_field] :
            $this->__default_type;




--------------------
Теперь при чем :P
PM   Вверх
IZ@TOP
Дата 25.8.2006, 16:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Ignat, в каждой команде по своему))) Меня щас бьют за большие отступы)) Перучиваюсь по чуть-чуть. 

Конкурс для новичков! Найди в моем коде 1000 и одну ошибку! Ну не тысячу, хотябы пару, так как писалось все быстро и не как рабочий а как теоретический пример. В следующий раз вообще интерфейсы писать буду )

ООП РУЛЕЗ!


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
smartov
Дата 25.8.2006, 18:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



IZ@TOP, эк однако тебя штыркнуло smile
не хватает только
class HelloWorld.... smile
PM MAIL   Вверх
faost
Дата 25.8.2006, 18:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 5.11.2004

Репутация: нет
Всего: 2



Цитата(Ignat @ 25.8.2006,  15:36)
аргументы в объявлениях и вызовах функций и методов класса принято обрамлять пробелами 

А где принято? Очень вдруг интересно стало, откуда такая уверенность "в правильности" такого подхода

Примерно тот же вопрос к IZ@TOP по поводу 
Код

/**
 * Товарисчи, не пользуемся шорт тегами!
 */


Это сообщение отредактировал(а) faost - 25.8.2006, 18:59
--------------------
Если у вас нет проблем, значит вы уже умерли
PM MAIL   Вверх
Ignat
Дата 25.8.2006, 19:06 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Цитата(faost @  25.8.2006,  19:55 Найти цитируемый пост)
откуда такая уверенность "в правильности" такого подхода

Я не претендую на истину. Меня в последнее время на работе много натаскивали на оформление кода. И вот был такой пунктик.
Хотя надо было выразиться так "ИМХО лучше оформлять пробелами". Кстати, я действительно проникся этим.




--------------------
Теперь при чем :P
PM   Вверх
Muchenik
Дата 25.8.2006, 21:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: нет
Всего: 5



Цитата

аргументы в объявлениях и вызовах функций и методов класса принято обрамлять пробелами 

Мне тоже не совсем понятно почему так. В таких случаях  использую стандарт pear:


Код

foo($bar, $baz, $quux);


Из стандартов кодирования PEAR:
Цитата

 Вызовы функций должны быть написаны без отступв между именем функции, открывающей скобкой и первым параметром. Отступы в виде пробела должны присутствовать после каждой запятой в перечислении параметров. Пробелов также не должно быть между последним параметром, закрывающей скобкой и точкой с запятой

PM MAIL ICQ   Вверх
smartov
Дата 26.8.2006, 10:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Я тоже в коде стараюсь использовать PEAR-стандарт.
PM MAIL   Вверх
Rock
Дата 28.8.2006, 18:48 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



Кстати, не плохая тема, ведь учится как раз надо на чужих ошибках smile
Токо вот было бы лучше, если бы укзав код, вы бы указывали и на недостатки, объяснить, почему это не так. 
Как сделал IZ@TOP в первом посте, оставил свои комменты к когду
А то получается так, что с кода: 
Код

if (unlink("../news_photos/smalls/".$filename_old) == TRUE) {
     unlink("../news_photos/smalls/".$filename_old);
 }

Все знающие смеются smile А новички только затылки чешут, и продолжают делать так, возможно только никому теперь этого не показывая ))
Иначе эту тему смело в Юмор можно, да и только... имхо
PM MAIL ICQ   Вверх
Muchenik
Дата 28.8.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 174
Регистрация: 27.10.2005

Репутация: нет
Всего: 5




Просто, для того чтобы  что то делать, нужно четко себе представлять, что делает та или иная операция. При отсутствии  того, люди пишут курьезный код. 
Цитата

if (unlink("../news_photos/smalls/".$filename_old) == TRUE) {
     unlink("../news_photos/smalls/".$filename_old);
 }


unlink - удаляет файл и возвращает TRUE в случае успешного завершения. 

т.е. в данном случае, программист пытается удалить файл повторно. 

PM MAIL ICQ   Вверх
Rock
Дата 28.8.2006, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



я вкурсе, но начинающим это может быть неизвестно, ведь все-таки появился такой код, следовательно появится ещё раз, следовательно надо объяснить почему не надо так делать.
А ведь в понимании того человека возможно и было четкое представление, на основе которого код написан был smile
Код

if (unlink("../news_photos/smalls/".$filename_old) == TRUE) {
     unlink("../news_photos/smalls/".$filename_old);
 }

сначало проверка возможно ли это, а потом уже действие smile

Это сообщение отредактировал(а) Rock - 28.8.2006, 20:32
PM MAIL ICQ   Вверх
smartov
Дата 29.8.2006, 11:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Rock
Цитата(Rock @  28.8.2006,  19:27 Найти цитируемый пост)
 надо объяснить почему не надо так делать

Не прав ты, камрад. Это функция библиотечная и элементарная как 2х2
Любой новичок/начинающий/незнающий/прочий должен СНАЧАЛА ПРОЧТИТАТЬ МАНУАЛ, особенно после ознакомления с этой темой. RTFM, как говорится!
А если он будет продолжать делать точно так-же, только втихую, - то он просто ламер - т.е. человек, нежелающий учиться.


Это сообщение отредактировал(а) smartov - 29.8.2006, 11:30
PM MAIL   Вверх
Rock
Дата 29.8.2006, 13:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 264
Регистрация: 13.1.2005
Где: Краснодар

Репутация: нет
Всего: 1



smartov, эту функцию я просто как пример привел, смысл то более глобальный, чем объяснение библиотечных функций
PM MAIL ICQ   Вверх
smartov
Дата 29.8.2006, 16:07 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Rock, ну значит пример был неудачный. А обьяснять... кому. Друг-другу чтоль? Если спросят - обьясним.
PM MAIL   Вверх
faost
Дата 29.8.2006, 16:30 (ссылка) |   (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 114
Регистрация: 5.11.2004

Репутация: нет
Всего: 2



из библиотеки самых бесполезных кусков кода топик превращается в библиотеку самого бесполезного флуда =)
--------------------
Если у вас нет проблем, значит вы уже умерли
PM MAIL   Вверх
IZ@TOP
Дата 29.8.2006, 16:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Модератор: прекращаем пустую болтовню!

Товарищи! Если выкладывате какой-то код, хотя бы слегка комментируйте в нем происходящее! Так действительно будет лучше.

Кто-то спрашивал на счет шорт тегов: не используйте это безобразие! Я час копался - почему у меня не видно файла, который сгенерирован для экспорта (расширением html) и, с XML контентом. 
Угадайте почему? Потому что кто-то поставил хандлер РНР на html файлы + на сервере в конфиге были разрешены шорт теги! В итоге РНР матерится трехэтажным матом на XML и мы получаем пустую страницу, ибо (для тех кто не в курсе) XML файл начинается с объявления <?xml!

Добавлено @ 16:48 
Код

if (unlink("../news_photos/smalls/".$filename_old) == TRUE) {
     unlink("../news_photos/smalls/".$filename_old);
}


Наверное человек просто хотел проверить существование файла. Из этого делаем вывод что нужно было делать так:

Код

if (is_file("../news_photos/smalls/".$filename_old)) {
     unlink("../news_photos/smalls/".$filename_old);
}


Добавлено @ 16:51 
Замечательно, нашел тему просто переполненную безобразием называемым "иф адом")) http://forum.vingrad.ru/index.php?showtopic=109772



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
smartov
Дата 29.8.2006, 17:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



IZ@TOP, не так страшен иф ад как текст с картинкой до Тега html......
PM MAIL   Вверх
Всемогущий
Дата 30.8.2006, 09:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 440
Регистрация: 25.6.2006
Где: Челябинск

Репутация: 1
Всего: 13



Привет всем
на форуме видел
Цитата

Код

if () {
/*допустим здесь 300 сторк кода*/
}
else {
/*и здесь 300 сторк кода*/
}


верно говорят трудно разбираться.
А чем можно заменить


--------------------
Цитата(smartov @  16.1.2007,  13:26 Найти цитируемый пост)
Видел я PHP код, который пишут наСильники, никогда на php не писавшие  :D  То еще зрелище. Все пытаются сделать руками и через ж (как в С привыкли). Все пытаются память освобождать итд итп. 
PM MAIL ICQ   Вверх
skyboy
Дата 30.8.2006, 10:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



разбить на функции, к примеру
PM MAIL   Вверх
Alone
Дата 30.8.2006, 10:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: нет
Всего: 6



Это называется рефакторинг кода.


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
smartov
Дата 30.8.2006, 11:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Всемогущий
тут дейтсивтельно подходов много.
Можно как подсказал товарищ, разбить на фукнции.
Первые триста строк - одна функция. Вторые (по else) - вторая.
Это самый простой и в общем-то неправильный вариант. 
Потому-что я считаю и мой опыт это подтверждает, что можно всегда избежать ситуаций в которых иф 300 строк элс - 300 строк.
Наверняка можно построить логику по другому. Многое наверняка общее. Многое наверняка можно написать по-другому.
PM MAIL   Вверх
skyboy
Дата 30.8.2006, 14:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


неОпытный
****


Профиль
Группа: Модератор
Сообщений: 9820
Регистрация: 18.5.2006
Где: Днепропетровск

Репутация: нет
Всего: 260



Цитата(smartov @  30.8.2006,  10:13 Найти цитируемый пост)
Первые триста строк - одна функция. Вторые (по else) - вторая.

необязательно так страшно. интуиция мне подсказывает, что почти наверняка 50% кода в обоих ветвях могут быть объединены в одну функцию. возможно - с разными параметрами. хотя, конечно, вариант
Цитата(smartov @  30.8.2006,  10:13 Найти цитируемый пост)
избежать ситуаций в которых иф 300 строк элс - 300 строк

правильнее.
PM MAIL   Вверх
smartov
Дата 30.8.2006, 14:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(skyboy @  30.8.2006,  13:40 Найти цитируемый пост)
 интуиция мне подсказывает, что почти наверняка 50% кода в обоих ветвях могут быть объединены в одну функцию

Мне тоже, но реально кода в глаза я не видел...
PM MAIL   Вверх
Vaulter
Дата 1.9.2006, 12:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Код

$tm = time();
$query = "insert into dec_orders (status, tema, doptreb, cat, type_work, year_sd, file_up, cena_end, email_z, type_sms, sms_kod) values ('8'";
for ($c=0; $c<$num; $c++) {
  if ($data[$c] == "бухучёт, статистика") $bla = 1;
  elseif ($data[$c] == "иностранные языки") $bla = 2;
  elseif ($data[$c] == "история") $bla = 3;
  elseif ($data[$c] == "медицина") $bla = 4;
  elseif ($data[$c] == "педагогика") $bla = 5;
  elseif ($data[$c] == "политология") $bla = 6;
  elseif ($data[$c] == "программирование") $bla = 7;
  elseif ($data[$c] == "психология") $bla = 8;
  elseif ($data[$c] == "разное") $bla = 9;
  elseif ($data[$c] == "русский язык и литература") $bla = 10;
  elseif ($data[$c] == "социология") $bla = 11;
  elseif ($data[$c] == "технические") $bla = 12;
  elseif ($data[$c] == "философия") $bla = 13;
  elseif ($data[$c] == "финансы и кредит") $bla = 14;
  elseif ($data[$c] == "химия и физика") $bla = 15;
  elseif ($data[$c] == "экономика") $bla = 16;
  elseif ($data[$c] == "юриспруденция") $bla = 17;
  elseif ($data[$c] == "реферат") $bla = 1;
  elseif ($data[$c] == "курсовая") $bla = 2;
  elseif ($data[$c] == "диплом") $bla = 3;
  elseif ($data[$c] == "диссертация") $bla = 4;
  elseif ($data[$c] == "другой") $bla = 5;
  else $bla = 0;
echo "<td>$data[$c]</td>";
$data[$c] = untag($data[$c]);
 if ($bla != 0) { $query .=", '$bla'"; $bla = 0; }
 else $query .=", '$data[$c]'";
}
$query .=")";



--------------------
PM MAIL WWW ICQ   Вверх
Ignat
Дата 2.9.2006, 09:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Vaulter, только не говори, что это писал ты smile


--------------------
Теперь при чем :P
PM   Вверх
RomanK
Дата 2.9.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: нет
Всего: 2



Вот... нашел. Цитирую только кусок кода:
Код

<?
print"
  <tr>
    <td width=754 height=19 colspan=3 background=img/1.gif class=text><font color=#FFFFFF><b>Информация на форуме</b></font></td>
  </tr>
  <tr>
    <td width=754 height=35 colspan=3 bgcolor=#EFEFEF class=niz>
Сегодня : $chislo $mesyac, $den_nedeli<br>
Всего тем оставленных за всю работу скрипта : $count <br>
В настоящее время присутствуют пользователей: $online<br>
<b>Статистика</b> :
<br>Уникальных: $unique
<br>Сегодня: $all_today
<br>Всего: $all

";


case("lol") :

print"";

break;
endswitch;
?>


Больше всего понравились строки - 16, 19, 21. smile

Это сообщение отредактировал(а) RomanK - 2.9.2006, 18:01
PM MAIL WWW ICQ   Вверх
smartov
Дата 2.9.2006, 22:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Не оценил. Просто какой-то недоработанный код и все :\

Написан конечно дубово но индусский стиль присутствует очень мало...
Да и не рабочий код по-идее...
PM MAIL   Вверх
Vaulter
Дата 3.9.2006, 10:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Ignat, чур меня! тебе вот смешно! smile а мне пришлось ловить бугага на протяж. двух месяцев переделывая систему...
в итоге, с нуля свою накропал smile



--------------------
PM MAIL WWW ICQ   Вверх
RomanK
Дата 3.9.2006, 19:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 81
Регистрация: 25.6.2005
Где: Россия, Выборг

Репутация: нет
Всего: 2



smartov, если это ты про код в моем посте, то это просто вырезка из большого кода, в котором мне понравились именно строки 16, 19, 21. Особенно понравилась строка 21. smile 
Интересно что этим хотел показать автор! smile
PM MAIL WWW ICQ   Вверх
smartov
Дата 3.9.2006, 21:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Ну строка 16 - строка как строка, ну может хотел он переносов в конце текста.
19, 21 - такое впечатление что кто-то что-то дебажил или временно проверял, а потом забыл убрать...
PM MAIL   Вверх
IZ@TOP
Дата 4.9.2006, 17:40 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Всем офисом дружно катались под столами после просмотра такого кода:

Код

switch(TRUE) {
   default:
     // Что-то выполняется...
}



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
smartov
Дата 4.9.2006, 20:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Мощно! smile)
Мы такой код называем Uber_really_что-то
В твоем случае Uber_realy_true smile
PM MAIL   Вверх
BuShaRt
Дата 11.9.2006, 18:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



 smile 
А зачем топ был созда? =)) Переименуйте его в "Забавные ошибки" 
Просто не чего интересного не узнал...
PM MAIL   Вверх
smartov
Дата 11.9.2006, 19:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(BuShaRt @  11.9.2006,  17:00 Найти цитируемый пост)
Просто не чего интересного не узнал...

Это хорошо! smile
PM MAIL   Вверх
BuShaRt
Дата 11.9.2006, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



smartov
Ну да, я конечно посмеялся, почуствовал себя не полным нубом, но все же было бы гораздо лучше, если бы люди рассказывали тут как стоит избавляться от определенных ошибок.... В самом первом посте были комменты, к которым можно прислушаться, а больше я нечего не увидел, лишь куча кода... 

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

Вот я кстате не понял вот тут:

Код

if (preg_match('/[^\w\d]+/', $login)) //non alphanumeric symbols in login    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Âû èñïîëüçîâàëè çàïðåùåííûå ñèìâîëû â èìåíè ïåðñîíàæà. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");    
if (is_numeric($login[0])) //only numeric symbols in login    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Èìÿ âàøåãî ïåðñîíàæà íà÷èíàåòñÿ ñ öèôðû. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");    
if ($parol != $parol_povtor) //passwords mismatch    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäåííûå âàìè ïàðîëè íå ñîâïàäàþò. Ïîïðîáóéòå åùå ðàç. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");    
if (trim($login[0]) == "") //login is empty    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäèòå ïîæàëóéñòà Âàø ëîãèí. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");    
if ($parol[0] == "") // password is empty    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ââåäèòå ïîæàëóéñòà Âàø ïàðîëü. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");    
if (strlen($login) < 3) //login length is less 3    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ëîãèí ñîñòîèò ìåíåå, ÷åì èç òðåõ ñèìâîëîâ. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>");    
if (strlen($parol) < 8) //minimal passwd length = 8    
    print_and_Die("<html><body bgcolor='black' text='green'><p align='center'> Îøèáêà. <br> Ïàðîëü ñîñòîèò ìåíåå, ÷åì èç âîñüìè ñèìâîëîâ. <br><a href='registr.html'> Åù¸ ðàç </></p></body></html>"
);


А зачем каждый раз прерывать? не проще ли делать так?

Код

if (preg_match('/[^\w\d]+/', $login)) 
    $messages[] = ошибка.


Потом перенести в отдельный файл...

Код

<p align='center'> Ошибки:</p>
<p align='center'> Îøèáêà. <br> <messages> <br><a href='registr.html'> Åù¸ ðàç </></p>


и сделать так в подытоживание ошибок:
Код

$error = file ("html/error.html");
print $error[0];
foreach ($message as $val)
    {
        print (ereg_replace ("<messages>",$val,$error[1]));
    }    


PM MAIL   Вверх
smartov
Дата 11.9.2006, 20:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



BuShaRt, можно еще много чего красивого сделать. Я написал поправку а 5 минут чтобы показать как от этого можно хотя бы _минимально_ здыхаться. 
Код что я написал тоже корявый, но гораздно менее индусский чем оригинал.
Потом ребята еще навернули. Ты ж видел.

Цитата(BuShaRt @  11.9.2006,  19:25 Найти цитируемый пост)
Потом перенести в отдельный файл...

Даже в файл отдельный переносить не надо. Зачем? Накапливай в переменку.
PM MAIL   Вверх
BuShaRt
Дата 11.9.2006, 20:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Цитата(smartov @  11.9.2006,  20:35 Найти цитируемый пост)
Даже в файл отдельный переносить не надо. Зачем? Накапливай в переменку.


Ты наверно не правилно понял... Я про перенос HTML кода в отдельный файл...

мешать HTML и PHP не хочеться не в каком виде...


Это сообщение отредактировал(а) BuShaRt - 11.9.2006, 20:43
PM MAIL   Вверх
BuShaRt
Дата 12.9.2006, 09:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Вот сейчас разгребаю один из модудей RunCMS, вроде пример для подражания, а вот такой код увидеть обчное дело:

Код

<table border="0" cellpadding="0" cellspacing="0" width="100%" align="center">
        <tr>
<?php
        if ( $start >= $nombre && $total > $nombre ) {
?>
        <td align="left"><a href="index.php?start=<?php echo ($start - $nombre);?>&nombre=<?php echo $nombre;?>&let=<?php echo $let;?>&ordre=<?php echo $ordre;?>"><?php echo $PdmPrec;?></a></td>
<?php
        }
?>
        <td align="center"><b><?php echo $n_pages;?></b> <?php echo $TotalPages;?></td>
<?php
        if ( ($total - $start) > $nombre ) {
                ?>
                <td align="right"><a href="index.php?start=<?php echo ($start + $nombre);?>&nombre=<?php echo $nombre;?>&let=<?php echo $let;?>&ordre=<?php echo $ordre;?>"><?php echo $PdmSucc;?></a></td>
                <?php
        }
                ?>
        </tr>
</table> 


В чем же дело? Почему программисты позволили себе написать такой стращный код?

Добавлено @ 09:13 
Код

<? /*                                         </td>
                                </tr>
                        </table>
                </td>
        </tr>
</table> */ ?>

PM MAIL   Вверх
smartov
Дата 12.9.2006, 12:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(BuShaRt @  11.9.2006,  19:38 Найти цитируемый пост)
Ты наверно не правилно понял... Я про перенос HTML кода в отдельный файл...
мешать HTML и PHP не хочеться не в каком виде...

А. Тогда да. Но учти, что у товарища там все ошибки имели разный тескт. Так что это уже шаблоны получаются. 

Цитата(BuShaRt @  12.9.2006,  08:07 Найти цитируемый пост)
Вот сейчас разгребаю один из модудей RunCMS, вроде пример для подражания

Значит не такой уж пример для подражание как кажется.
Или писало много программеров. Ты бы видел код довольон широко рапсространенного движка OSCOmmerce. Там просто жесть.
А phpBB? Сколько там дыр. Так что не все что массово- пример для подражания.
PM MAIL   Вверх
Eugene_Bond
Дата 12.9.2006, 12:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 138
Регистрация: 3.9.2006

Репутация: нет
Всего: 4



На эту тему есть комьюнити в ЖЖ, но в последнее время активность спала..
PM MAIL   Вверх
BuShaRt
Дата 12.9.2006, 13:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



smartov
Ну так да, шаблон. В нем тег <messages>, который регуляркой заменяеться на текст ошибки=)

Хе.. Покажу ка я свой код, который мне не очень нравиться.. Можете посмеяться, но пожалуста откоментируйет над чем и чем моно заменить =)
То, что ввода не безопасен во второй форме я знаю... просто пока не дошел то туда, а функция field_validator как раз фильтрует ввод и возращает массив $messages. На примере описанного мной выше. 

Код

include ("config/config_index.php"); 
if (!$page) $page="index";

if($_POST["indexform"]) //Если был ввод в форму indexform
        {    
            field_validator("Логин", $_POST["login"], "alphanumeric", 4, 15);
            field_validator("Пароль", $_POST["password"], "string", 4, 15);
            if ($messages)
                {
                    GoIndex ($page); //Функция которая создает переменную $pages (в которой содержиться содержимое страници) и обращаюшееся к отдельному классу, который генерирует из шаблонов целостный html-код
                    exit;
                }
            if( !($row = CheckPass($_POST["login"], $_POST["password"],"index")) ) //проверка логина-пароля на совпадение
                {
                    $messages[]="Логин - пароль не совпадают.";
             }
            if ($messages)
                {
                    GoIndex ($page);
                    exit;
                }
            GreatMemberSession($row[login], $row[password]); //Занесение данных в сессию
            header("Location: index.php?".session_name()."=".session_id());
            
        }
    else 
        {    
            GoIndex ($page);
        }

if($_POST["indexreg"]) //
    {
        $query = "INSERT INTO ban_user ( login , password , mail , siteurl , banerurl , sitename , title, printlvl ) 
        VALUES (
            '$_POST[login]',
            '$_POST[password1]',
            '$_POST[mail]',
            '$_POST[siteurl]',
            '$_POST[banerurl]',
            '$_POST[sitename]',
            '$_POST[title]',
            '1')";
        $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
    }

PM MAIL   Вверх
Ignat
Дата 12.9.2006, 13:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Флудератор
****


Профиль
Группа: Экс. модератор
Сообщений: 4030
Регистрация: 19.4.2004
Где: غيليندزيك مدينة

Репутация: 2
Всего: 73



Код

                {
                    $messages[]="Логин - пароль не совпадают.";
             }


ИМХО, во всем тексте проблемы с отступами...


--------------------
Теперь при чем :P
PM   Вверх
smartov
Дата 12.9.2006, 13:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



BuShaRt, смеятся не будем. Зачем.
А вот поправить.
Ну беде вдаваться особо в структуру (то бишь улучшать саму логику предлагать не буду, это дело вкуса). А именно по стилистическим ошибкам.

1) 
Код

if($_POST["indexform"]) //Если был ввод в форму indexform    

12 строк кода
}
else
{
1 строка
}

Уже много раз говорено даже в этом теме, даже с обьяснениями, что не надо так писать. 
if (...) {500 строк) читать неудобно ну ни в каком месте. 
Код

  if ($messages)    
                {    
                    GoIndex ($page);    
                    exit;    
                }

Этот код почему то повторяется два раза в одном и том же уловии. Это UberReallyExit такой?
Итого имеем.
Код

if(!$_POST["indexform"]) //Не было ввода в форму indexform    
{
GoIndex ($page);
exit; //не знаю есть ли exit в GoIndex поэтому на всякий случай.
}

field_validator("Логин", $_POST["login"], "alphanumeric", 4, 15);    
field_validator("Пароль", $_POST["password"], "string", 4, 15);    
if( !($row = CheckPass($_POST["login"], $_POST["password"],"index")) )
{    
    $messages[]="Логин - пароль не совпадают.";    
}    
if ($messages)    
{    
    GoIndex ($page);    
    exit;    
}    

GreatMemberSession($row[login], $row[password]); //Занесение данных в сессию    
header("Location: index.php?".session_name()."=".session_id());    

А регистрацию я бы а) доделал б) вынес в другой файл или класс
PM MAIL   Вверх
BuShaRt
Дата 12.9.2006, 19:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



smartov
хм.. логично =) спасибо...
А если вот это еще посмотреть (раз такая расдача)? Тут я сам понимаю что бред, но просто не знаю, как можно оптемезировать.... Писал вообше нарашиванием, т.е. сначало одно написал, а потом (когда понадобилось) дописывал другое.

Чтоб везде не коменнтить... В итоге все операции сводяться к занесению в переменную $page определенных данных.

Код

function GoIndex ($pages) 
    {    
        $html = new WorkHTML (); //Создание объекта класса для генирации HTML
        global $link; 
        if ($pages=="reg" or $pages=="rule") //Если в переменной page reg или rule, то
            {
                        $valpage = file ("html/index_".$pages.".html"); 
                        foreach ($valpage as $val) $page.=$val; //Хватаем из папки html нужный файл и кидаем его в переменную $page (не путаем с $pages)
            }
        else
            {    
                if ($pages=="index" or $pages=="sys" or $pages=="mail" or $pages=="top") //Опять, смотрим, что у нас в переменной
                    { 
                        if ($pages=="top") // гМ=)
                            {
                                $sh_table = file ("html/index_sh_toptable.html"); 
                                $sh_row = file ("html/index_sh_rowtable.html"); //Типо шаблоны таблички извлекаем
                                $query="SELECT * FROM ban_user ORDER BY `push` DESC"; // Выделяем нужные данные сортируя сразу по полю push
                                $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
                                while ($table = mysql_fetch_array($result)) //Загоняем данные в табличку
                                    {
                                        foreach ($sh_row as $val)
                                            {
                                                $val = ereg_replace ("<sitename>",$table[sitename],$val);
                                                $val = ereg_replace ("<sitetitle>",$table[title],$val);
                                                $val = ereg_replace ("<push>",$table[push],$val);
                                                $pageval.= $val;    
                                            }    
                                    }
                                foreach ($sh_table as $val)
                                    {
                                        $val = ereg_replace ("<printrow>",$pageval,$val);
                                        $page.=$val;
                                    }

                            }
                        else //Если все же не top, то делаем слудующие
                            {
                                $query="SELECT text FROM ban_indextext WHERE nametext='$pages'"; //Из специально таблици в бд выдираем текст страница
                                $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
                                $row = mysql_fetch_array($result);
                                $page =  $row[text];
                            }
                    }
                else
                    {
                        if ($pages=="exit") //Если нечего у нас не получилось, то смотрим был ле exit и если да, то чистим сессию и кидаем пользователя на главную
                            { 
                                session_destroy();
                                header("Location: index.php");
                            }
                        else $page = "Такой страници не существует";        
                    } 
            }
        $html->GreatHTML($_SESSION["loggedIn_index"],$pages,$page); // Класс генерирующий HTML
    }         


 smile Чувствую тут точно ржать будите
PM MAIL   Вверх
smartov
Дата 12.9.2006, 22:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Ну незнаю. Так написано как написано. По стилистике - нормально, без индуизмов. 
То бишь код читабельный и саппортный.
PM MAIL   Вверх
IZ@TOP
Дата 13.9.2006, 11:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



BuShaRt, есть несколько замечаний:

Код

<?php

function GoIndex ($pages) 
    {    
        $html = new WorkHTML (); //Создание объекта класса для генирации HTML
        global $link; 
        
        /**
         * IZ@TOP: В данном случае я бы посоветовал использовать switch/case конструкцию на предмет значения
         * в $pages - и быстрее и читабельнее. Еще можно было бы создать некий массив с индексами pages
         * значениями которых были бы массивы с перечислениями тех страниц которые нужно загрузить.
         * 
         */
        if ($pages=="reg" or $pages=="rule") //Если в переменной page reg или rule, то
        {
            $valpage = file ("html/index_".$pages.".html"); 
            
            /**
             * IZ@TOP: ну зачем же так страшно? Есть ведь чудо функция file_get_contents.
             * @example $page = file_get_contents($path);
             */
            
            foreach ($valpage as $val) $page.=$val; //Хватаем из папки html нужный файл и кидаем его в переменную $page (не путаем с $pages)
        }
        else
            {    
                /**
                 * IZ@TOP: и опять-таки, ни кто ведь не мешает воспользоваться switch/case.
                 * @example 
                 * switch($pages) {
                 *      case 'index':
                 *      case 'sys':
                 *      case 'mail':
                 *      case 'top': {
                 *          // выполнить некое действие
                 *          break;
                 *      }
                 * }
                 */
                if ($pages=="index" or $pages=="sys" or $pages=="mail" or $pages=="top") //Опять, смотрим, что у нас в переменной
                    { 
                        if ($pages=="top") // гМ=)
                            {
                                $sh_table = file ("html/index_sh_toptable.html"); 
                                $sh_row = file ("html/index_sh_rowtable.html"); //Типо шаблоны таблички извлекаем
                                $query="SELECT * FROM ban_user ORDER BY `push` DESC"; // Выделяем нужные данные сортируя сразу по полю push
                                $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
                                while ($table = mysql_fetch_array($result)) //Загоняем данные в табличку
                                    {
                                        foreach ($sh_row as $val)
                                            {
                                                /**
                                                 * IZ@TOP: Здесь мы видим живой пример того, как не следует заменять строки.
                                                 * В днном случае нужно решать задачу при помощи str_replace, так как 
                                                 * она работает гораздо быстрее. А если уж и нужно использовать 
                                                 * регулярные выражения, то использовать не тормознутые POSIX регулярки
                                                 * а PCRE (Perl compatible regular expression), т.е. функции preg_*().
                                                 */
                                                $val = ereg_replace ("<sitename>",$table[sitename],$val);
                                                $val = ereg_replace ("<sitetitle>",$table[title],$val);
                                                $val = ereg_replace ("<push>",$table[push],$val);
                                                $pageval.= $val;    
                                            }    
                                    }
                                foreach ($sh_table as $val)
                                    {
                                        $val = ereg_replace ("<printrow>",$pageval,$val);
                                        $page.=$val;
                                    }
                            }
                        else //Если все же не top, то делаем слудующие

                            {
                                
                                /**
                                 * IZ@TOP: Ну и хочу сказать что mysql_real_escape_string та самая функция которая оградит тебя
                                 * от домогательств SQL инъекциями.
                                 */
                                $query="SELECT text FROM ban_indextext WHERE nametext='$pages'"; //Из специально таблици в бд выдираем текст страница
                                
                                $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
                                $row = mysql_fetch_array($result);
                                $page =  $row[text];
                            }
                    }
                else
                    {
                        if ($pages=="exit") //Если нечего у нас не получилось, то смотрим был ле exit и если да, то чистим сессию и кидаем пользователя на главную
                            { 
                                session_destroy();
                                header("Location: index.php");
                            }
                        else $page = "Такой страници не существует";        
                    } 
            }
        $html->GreatHTML($_SESSION["loggedIn_index"],$pages,$page); // Класс генерирующий HTML
    }         
    
?>


Еще хотелось бы заметить что у тебя ошибки на разных языках... по моему это странно. Еще меня приятно удивило полное отсутствие каких бы то нибыло обрамлений кавычками индексов массивов... может это у тебя константы?
Попробуй в начале всех своих страничек поставить ini_set('display_errors', 1); error_reporting(E_ALL);. Пока не избавишься от всех нотисов - код невалидный.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
BuShaRt
Дата 13.9.2006, 12:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Цитата

Попробуй в начале всех своих страничек поставить ini_set('display_errors', 1); error_reporting(E_ALL);


 smile 
боже... сколько ошибок повылезало...
PM MAIL   Вверх
BuShaRt
Дата 19.9.2006, 21:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Как теперь?
mysql_real_escape_string  еще не юзал, ее отнес отдельно к целому классу работы с БД, которым щас и занимаюсь...
Да, и не ужели mysql_real_escape_string  полностью защищает от иньекция?

Код

function GoIndex ($pages)
    {    
        //Создание класса и глобализация необходимых переменных
        $html = new WorkHTML (); global $link; global $messages;
        //Проверка значения $pages
        $page = ''; $valpage = '';
        //Если $pages = exit    
        if ($pages=='exit'){
            //Отчистка сесси и переход на главную страницу
            session_destroy();
            header("Location: index.php");
            }

        switch ($pages){
        
        //Если $pages = reg, rule
        case 'reg':
        case 'rule': 
            //Заносим в массив $page[] HTML странички 
            $valpage = file ("html/index_".$pages.".html");
            foreach ($valpage as $val) $page .= $val;
            //Преостановка выполнения функции Switch
            break;
        
        //Если $pages = index, sys, mail
        case 'index':
        case 'sys': 
        case 'mail': 
            //Выделение из таблици ban_indextext содержимово поля text соотвествующего выбранной странице
            $query="SELECT text FROM ban_indextext WHERE nametext='$pages'";
            $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
            //Занесение текста в переменную $page
            $row = mysql_fetch_array($result);
            $page =  $row['text'];
            //Преостановка выполнения функции Switch
            break;
                                
        //Если $pages = top
        case 'top':
            //Загружаем шаблоны таблицы                
            $sh_table = file ("html/index_sh_toptable.html");
            $sh_row = file ("html/index_sh_rowtable.html");
            //Выдиляем все данные из таблицы ban_user и сотртируем их по полю push
            $query="SELECT * FROM ban_user ORDER BY `push` DESC";
            $result=mysql_query($query, $link) or die("Died inserting login info into db.  Error returned if any: ".mysql_error());
            //Запускаем просмотр данных в цикле 
            while ($table = mysql_fetch_array($result))
                {    
                    //Заносим данные в строки таблици заменой тегов вшаблоне требуемыми данными. Сохраняем HTML код в массиве $valpage[]
                    foreach ($sh_row as $val)
                        {
                            $val = preg_replace ("/<sitename>/",$table['sitename'],$val);
                            $val = preg_replace ("/<sitetitle>/",$table['title'],$val);
                            $val = preg_replace ("/<push>/",$table['push'],$val);
                            $valpage .= $val;    
                        }    
                }
            //Создание полноценной таблици и занесение ее HTML-кода в массив $page[] 
            foreach ($sh_table as $val) $page .= preg_replace ("/<printrow>/",$valpage,$val);
            //Преостановка выполнения функции Switch
            break;
                
        //Если $pages = не объявленному значению        
        default: 
            $page = "Такой страници не существует";        
                    
        }
        //Передача свобранных параметров классу, генерирующему целостный HTML код странички
        $html->GreatHTML($_SESSION["loggedIn_index"],$pages,$page);
        //Завершение работы программы
        exit;
    }    

PM MAIL   Вверх
smartov
Дата 20.9.2006, 11:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(BuShaRt @  19.9.2006,  20:00 Найти цитируемый пост)
Да, и не ужели mysql_real_escape_string  полностью защищает от иньекция?

Если правильно юзать.
PM MAIL   Вверх
BuShaRt
Дата 20.9.2006, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



smartov

Код

    //Метод экранирования запроса
    function quote_smart($value) {
         // если magic_quotes_gpc включена, то снимаем экранированние
     if (get_magic_quotes_gpc()) $value = stripslashes($value);
        //Если переменная не число, то окружаем кавычками и экранируем
     if (!is_numeric($value)) $value = "'" . mysql_real_escape_string($value) . "'";
        return $value;
    }


Вот так =)

А потом 

Код

$query = sprintf("SELECT text FROM ban_indextext WHERE nametext=%s ",
            $mysql->quote_smart($pages));

PM MAIL   Вверх
IZ@TOP
Дата 22.9.2006, 13:33 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



BuShaRt, опять же, есть небольшое замечание: в некоторых случаях preg_replace лучше заменить на str_replace. А насколько я вижу, тебе именно это лучше и сделать, так как у тебя не регулярка а простая строка идет на замену - зачем лишний раз процессорное время тратить?

Добавлено @ 13:34 
Цитата(BuShaRt @  19.9.2006,  22:00 Найти цитируемый пост)
Да, и не ужели mysql_real_escape_string  полностью защищает от иньекция?

Дело в том что эта функция экранирует данные согласно синтаксису mysql и данных касаемых конкретного коннекта.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
G0rinich
Дата 4.10.2006, 11:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 35
Регистрация: 21.8.2006

Репутация: нет
Всего: 1



http://siteservice.ru/
Linker 3.0
файл linker_files/add_form.php строка 14

if(($banner || $link) && $ok==1) $ok=1;
PM MAIL   Вверх
smartov
Дата 5.10.2006, 12:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



УберРеаллыПрисвоить smile встречал тоже такие строки smile
PM MAIL   Вверх
mr.fox
Дата 8.10.2006, 07:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 13.3.2005
Где: Ирландия

Репутация: нет
Всего: 2



Cейчас этого кадра поймал..

Код



 Создал базу данных и тд.
Теперь пытаюсь вывести всю информацию что в ней есть.


<?php
 mysql_connect($dbhost,$dbuser,$dbpassword ) OR DIE("Error");
 mysql_select_db($dbName) or die(mysql_error());
 $querry = "select * from Main";
 mysql_query($query) or die(mysql_error());
?>

мне выводит Query was empty.... Не могу понять в чем ошибка.... Доки читал но что-то не помогает...

Кто знает в чем проблема помогите плз.


http://forum.woweb.ru/topic25160s0.html?

я валяюсь
PM MAIL WWW ICQ   Вверх
smartov
Дата 8.10.2006, 12:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Что-то пост не совсем по теме. Описки бывают. Бывает что сидишь и тупо не видишь что ошибся в написании
Тут тема не про это.
PM MAIL   Вверх
mr.fox
Дата 8.10.2006, 17:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 298
Регистрация: 13.3.2005
Где: Ирландия

Репутация: нет
Всего: 2



smartov, ну я не знаю, такое не заметить очень уж сложно
PM MAIL WWW ICQ   Вверх
AztEK
Дата 25.10.2006, 19:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



Недавний прикол с bash.org.ru :
Цитата

<Шелезяка[work]> подскажите плиз как проверить существует ли таблица в базе mysql
<Есть> if (mysql_query('DROP TABLE таблица')) echo "таблица существовала";


Не совсем в тему, но поржал  smile  smile 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Ground
Дата 29.10.2006, 08:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 321
Регистрация: 27.2.2006
Где: Комсомольск

Репутация: нет
Всего: 1



Подскажите как можно упрощать такой код:

Код

function view() {
    echo ('<p align = "center"><b>'.$row["name"].'</b></p>'.$row["rasskaz"].'<p>Автор: '.$row["author"].'</p>');}

    if (isset($_GET['id'])) {

        switch($id) {
            case 1:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 0,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 2:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 1,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 3:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 2,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 4:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 3,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 5:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 4,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 6:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 5,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 7:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 6,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 8:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 7,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 9:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 8,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 10:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 9,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 11:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 10,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 12:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 11,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 13:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 12,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 14:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 13,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 15:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 14,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 16:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 15,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 17:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 16,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 18:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 17,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 19:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 18,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            case 20:
                $sql = 'SELECT * FROM `rasskaz` LIMIT 19,1';
                $result = mysql_query($sql, $connect);
                while ($row = mysql_fetch_assoc($result)) {view();}
            break;
            default:
             echo("Рассказ не обнаружен");
            }}


PM MAIL ICQ   Вверх
Vaulter
Дата 29.10.2006, 14:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Ground, скрепя зубами... smile


--------------------
PM MAIL WWW ICQ   Вверх
клоп
Дата 30.10.2006, 10:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 28.2.2006
Где: г. Череповец

Репутация: нет
Всего: нет



Решил написать свой пост тут, т.к. не уверен в правильности своего решения.

Делаю скрипт онлайн матча 2х команд.

Файл 1 , доступен по паролю (статист в онлайне сидит и забивает результаты в форму)
Код

// кусок PHP кода

//-----------------------------------------------------
// Запись очков команды A
//-----------------------------------------------------
    
$data_score_a = ".htscore_a";
$fp_score_a=@fopen($data_score_a,"w");
flock($fp_score_a, LOCK_EX);
fwrite($fp_score_a,"$score_a_1|$score_a_2|$score_a_3|$score_a_4|$score_a_1ot|$score_a_2ot");
flock($fp_score_a, LOCK_UN);
fclose($fp_score_a);

//-----------------------------------------------------
// Запись очков команды Б
//-----------------------------------------------------
    
$data_score_b = ".htscore_b";
$fp_score_b=@fopen($data_score_b,"w");
flock($fp_score_b, LOCK_EX);
fwrite($fp_score_b,"$score_b_1|$score_b_2|$score_b_3|$score_b_4|$score_b_1ot|$score_b_2ot");
flock($fp_score_b, LOCK_UN);
fclose($fp_score_b);

// кусок XTML блока

<td bgcolor=#fff3ce class="c" width="26"><input type=text size=1 name="score_a_1" value="<?echo $_POST['score_a_1']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#fff3ce class="c" width="26"><input type=text size=1 name="score_a_2" value="<?echo $_POST['score_a_2']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#fff3ce class="c" width="26"><input type=text size=1 name="score_a_3" value="<?echo $_POST['score_a_3']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#fff3ce class="c" width="26"><input type=text size=1 name="score_a_4" value="<?echo $_POST['score_a_4']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#fff3ce class="c" width="26"><input type=text size=1 name="score_a_1ot" value="<?echo $_POST['score_a_1ot']?>" maxlength=3 class="txtinpyellow"></td>
<td bgcolor=#fff3ce class="c" width="26"><input type=text size=1 name="score_a_2ot" value="<?echo $_POST['score_a_2ot']?>" maxlength=3 class="txtinpyellow"></td>
------------------------
------------------------
<td bgcolor=#dee7ef class="c" width="26"><input type=text size=1 name="score_b_1" value="<?echo $_POST['score_b_1']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#dee7ef class="c" width="26"><input type=text size=1 name="score_b_2" value="<?echo $_POST['score_b_2']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#dee7ef class="c" width="26"><input type=text size=1 name="score_b_3" value="<?echo $_POST['score_b_3']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#dee7ef class="c" width="26"><input type=text size=1 name="score_b_4" value="<?echo $_POST['score_b_4']?>" maxlength=3 class="txtinp"></td>
<td bgcolor=#dee7ef class="c" width="26"><input type=text size=1 name="score_b_1ot" value="<?echo $_POST['score_b_1ot']?>" maxlength=3 class="txtinpblue"></td>
<td bgcolor=#dee7ef class="c" width="26"><input type=text size=1 name="score_b_2ot" value="<?echo $_POST['score_b_2ot']?>" maxlength=3 class="txtinpblue"></td>
-----------------------
-----------------------
<input name='check'  type='submit' class='buttinp' value='Обновить статистику'></td>


Файл 2 , доступен всем (обновляется через определенное время)
Код

<META http-equiv=refresh content="10;">

// кусок кода показывающего результат

<td bgcolor=#fff3ce class="c" width="26">
<?php
$score_file_a = @fopen("data/.htscore_a", "r"); 

         $line  = fgets($score_file_a);
         $arr_score_a = explode("|", $line);
         if($arr_score_a[0] == ""){$arr_score_a[0] = "-";}
         echo "$arr_score_a[0]";

@fclose($score_file_a);
?>
</td>
<td bgcolor=#fff3ce class="c" width="26">
<?php
$score_file_a = @fopen("data/.htscore_a", "r"); 

         $line  = fgets($score_file_a);
         $arr_score_a = explode("|", $line);
         if($arr_score_a[1] == ""){$arr_score_a[1] = "-";}
         echo "$arr_score_a[1]";

@fclose($score_file_a);
?>
</td>
<td bgcolor=#fff3ce class="c" width="26">
<?php
$score_file_a = @fopen("data/.htscore_a", "r"); 

         $line  = fgets($score_file_a);
         $arr_score_a = explode("|", $line);
         if($arr_score_a[2] == ""){$arr_score_a[2] = "-";}
         echo "$arr_score_a[2]";

@fclose($score_file_a);
?>
</td>
--------------------
--------------------

И так далее ....


Как видете, чтоб показать какой либо результат, а их может быть не один десяток и находиться они могут в разных местах страницы (файл 2) приходиться каждый раз открывать файл и считывать, что не есть хорошо как мне кажется. Как быть?
--------------------
Всякая чепуха посещает голову, когда она пуста ....
PM MAIL WWW   Вверх
smartov
Дата 30.10.2006, 12:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Ground
Цитата(Ground @  29.10.2006,  07:05 Найти цитируемый пост)
Подскажите как можно упрощать такой код:

Лёгко. Смотри. У тебя повторяются одни и те же строки 20(!!) раз. Извеняются только границы выборки. 
Логично что надо просто организовать условие и всё.

Код
function view() 
{
    echo '<p align = "center"><b>'.$row["name"].'</b></p>'.$row["rasskaz"].'<p>Аффтар: '.$row["author"].'</p>';
}
    
if (!isset($_GET['id']))
{
    echo "Это типо захачить хотел?";
    exit;
}

if ($id > 20)
{
    echo("Рассказ не обнаружен");
    exit;
}

$sql = 'SELECT * FROM `rasskaz` LIMIT '.($id-1).',1';
$result = mysql_query($sql, $connect);
while ($row = mysql_fetch_assoc($result)) 
{
    view();
}




клоп, навскидку (писал по быстрому. может ошибки будут, но думаю смысл поймешь)
Файл 2 будет таким
Код

<META http-equiv=refresh content="10;">
// кусок кода показывающего результат
<?

if (!file_exists("data/.htscore_a"))
{
    echo "Извините. Произошла офигенная ошибка.";
    exit;
}

$arr_score_a = file("data/.htscore_a");//весь файл массивом строк

foreach ($arr_score_a as $line)
{
$line_array = explode("|", $line);//строка массивом scores
foreach ($line_array as $score)
    echo '<td bgcolor=#fff3ce class="c" width="26">'.($score ? $score : '-').'</td>';
}

?>

PM MAIL   Вверх
клоп
Дата 30.10.2006, 13:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 103
Регистрация: 28.2.2006
Где: г. Череповец

Репутация: нет
Всего: нет



smartov спасибо, но этот перебор выведет один за другим все значения в массиве, а нужно только одно определенное
Код

foreach ($arr_score_a as $line)
{
$line_array = explode("|", $line);//строка массивом scores
foreach ($line_array as $score)
    echo '<td bgcolor=#fff3ce class="c" width="26">'.($score ? $score : '-').'</td>';
}

--------------------
Всякая чепуха посещает голову, когда она пуста ....
PM MAIL WWW   Вверх
smartov
Дата 30.10.2006, 14:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



клоп, тебе нужна только первая строчка из файла? Ну тогда читай только ее. Одним циклом меньше.
PM MAIL   Вверх
Vaulter
Дата 5.11.2006, 00:03 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник Клуба
Сообщений: 1724
Регистрация: 30.12.2002
Где: бункер

Репутация: нет
Всего: 22



Код

$inArray = array("'", ";", "/**/", "/UNION/", "/SELECT/", "AS ");
if (strpos($_SERVER['PHP_SELF'], "trackback") === false) {
    foreach($inArray as $res) {
        if(stristr($_SERVER['QUERY_STRING'], $res)) {
            die("Access denied.");
        }
    }
}

вчитайтесь внимательно. особенно "Access denied."!!!
однако: www.e107.org !!!


--------------------
PM MAIL WWW ICQ   Вверх
smartov
Дата 5.11.2006, 22:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Vaulter, я подобное видел в коде phpbb. Методы защиты конечно так себе.
PM MAIL   Вверх
Mystery_of_being
Дата 8.11.2006, 00:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 52
Регистрация: 7.11.2006

Репутация: нет
Всего: нет



Мне кажется он просто полный новичок. Я когда только учил тоже был упорным типам.  )) Вы когда начинали глупочти не делали ??


Я вот писал  

If( ... )
{

Делам что-то

}
else
{

А тут пусто. Думал если не будет Элс то будет ошибка ))) 

}

Это сообщение отредактировал(а) Mystery_of_being - 8.11.2006, 00:58
PM MAIL WWW ICQ   Вверх
smartov
Дата 8.11.2006, 11:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Mystery_of_being, к чему ты это написал? Представленный Вольтером код писал не новичок однозначно.
По крайней мере не настолько новичок чтобы думать что если else не написать то будет ошибка.
PM MAIL   Вверх
BuShaRt
Дата 29.11.2006, 14:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1391
Регистрация: 29.6.2006

Репутация: -1
Всего: 6



Mystery_of_being
Почему не писал так?

Код

if ($var) {
    //---
} elseif ($var) {
    //---
} else {
    //---
}


Это сообщение отредактировал(а) BuShaRt - 29.11.2006, 14:09
PM MAIL   Вверх
coyl
Дата 4.1.2007, 02:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 13.6.2006

Репутация: нет
Всего: 1



Жесть конечно все это, но я вот сейчас получил проект. Посмотрев на код, я понял, что дал бы ему максимум 15 штук рублей за и то только за то, что время потратил на написание 5 мегов кода.
Когда я стал углубляться, чтобы внести срочные изменения, я просто проклял его (все вышеперечисленные ошибки там были, структурирование, видимо було для него незнакомым словом ифы и элсы, содержащие по 300 строк кода ит.д. ит.п.) и понял, что не дал бы ему и 15 штук...
Так вот представьте мой ужОс, когда я узнал, что этот "кодер" получил за написание этой системы (внимание внимание) 170 000 рублей. Поприветствуем его заказчиков)))
PM MAIL   Вверх
Mal Hack
Дата 4.1.2007, 02:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



А можно, хотя бы приватно получить ссылочку на сие чудо? Уж больно хочется воочию глянуть реализацию...
PM ICQ   Вверх
coyl
Дата 4.1.2007, 14:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 13.6.2006

Репутация: нет
Всего: 1



Да там смотреть-то особо нечего. Все \вродебы\ работает правильно, дизайн рисовал мой хороший друг, так что выглядит все прилично, но вносить какие-либо изменения или дополнительные модули - это аЦЦко просто.
Собственно говоря поэтому этот чел и ушел с проекта - не укладывался ни в какие сроки даже по мелочовым правкам.
PM MAIL   Вверх
smartov
Дата 4.1.2007, 14:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата
<gram|work> про индийский код
<gram|work> Какой самый извращенный способ проверить в условии if () булевскую переменную ?
<gram|work> bool b;
<gram|work> b = false;
<gram|work> if (b == true){...}
<gram|work> Это децкий лепет
<gram|work> ИТАК, ПЕРВОЕ МЕСТО
<gram|work> Знакомый говорит что нашел только что в коде:
<gram|work> if (b.ToString().length < 5){...}

PM MAIL   Вверх
coyl
Дата 4.1.2007, 21:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 74
Регистрация: 13.6.2006

Репутация: нет
Всего: 1



Жесть. Только что нарвался на кусок кода
Код

    if(isset($_POST['total']))
    {
        $n = $_POST['total'];
        for($i = 0; $i < $n; $i++)
        {
            $db->query("UPDATE charts SET
                al_id='".$_POST['al_id'.($i)]."'
                WHERE id='".$_POST['id'.($i)]."'");
        }
    }


За такое люди еще и деньги получают. smile 
PM MAIL   Вверх
smartov
Дата 5.1.2007, 00:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



coyl, ну в принципе написано кривовато и несекьюрно, но идея ясна. Возможно там поля в динамике генерятся, я страницу не вижу.
PM MAIL   Вверх
Mal Hack
Дата 8.1.2007, 00:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Код

// $answ = array(0, 1, 2, 3, 4, ...)
$i = 0;
$dx = 0.01;
$L = 1;
for ($i=0; $i<L; $i+=$dx)
{
   echo $answ[$i*100];
}

PM ICQ   Вверх
AztEK
Дата 10.1.2007, 19:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



Цитата(Mal Hack @ 8.1.2007,  03:04)
Код

// $answ = array(0, 1, 2, 3, 4, ...)
$i = 0;
$dx = 0.01;
$L = 1;
for ($i=0; $i<L; $i+=$dx)
{
   echo $answ[$i*100];
}

Это действительно реальный код? smile  smile 


--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
Mal Hack
Дата 10.1.2007, 19:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



PM ICQ   Вверх
awers
Дата 12.1.2007, 20:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



ЖЕСТЬ ТАК ЖЕСТЬ:
Сайт: http://studinfo.ru/
Все в файле..
Не весь исходник кинул ... просто и так хватит )))

Присоединённый файл ( Кол-во скачиваний: 43 )
Присоединённый файл  1.RAR 35,34 Kb
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 12.1.2007, 21:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Да вроде бы нормальный код.
PM ICQ   Вверх
awers
Дата 12.1.2007, 21:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



читай папку A2 ... ))))
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 12.1.2007, 21:19 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Нет такой

PM ICQ   Вверх
awers
Дата 13.1.2007, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Участник
Сообщений: 1465
Регистрация: 22.3.2006
Где: Россия, Таганрог

Репутация: нет
Всего: 31



ну а модули с папки админ??
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 13.1.2007, 14:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 1
Всего: 261



Нормально более менее...
PM ICQ   Вверх
MuToGeN
Дата 24.1.2007, 13:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 2
Всего: 32



awers, единственная вещь - никаких error_reporting(0).
ini_set('display_errors', 0) и настраиваем логирование ошибок, желательно помимо стандартного PHPшного логирования свой обработчик (man set_error_nadler) с логированием стека вызова.


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
AztEK
Дата 24.1.2007, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 723
Регистрация: 4.1.2005

Репутация: нет
Всего: 18



[offtop]
А как логировать стек вызовов?
[/offtop]



--------------------
Linux is like wigwam -- no windows, no gates, apache inside.
PM MAIL Jabber   Вверх
MuToGeN
Дата 25.1.2007, 20:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Лесник
****


Профиль
Группа: Модератор
Сообщений: 4379
Регистрация: 15.8.2002
Где: Москва

Репутация: 2
Всего: 32



debug_backtrace()


--------------------
Three pings for the token rings,
Five pings for the UNIX machines,
Hundred pings for the broken links,
One special ping to check them all
Through Simple Network Management Protocol!
PM MAIL ICQ   Вверх
IZ@TOP
Дата 2.2.2007, 16:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 1
Всего: 73



Уга-га. Купили один проект (фотогалерея), код с первого взгляда порадовал, но некоторые вещи особенно)

Код

          if(eregi("jpeg",$files[$i]['type']))$ext = '.jpg';
          if(eregi("jpg",$files[$i]['type'])) $ext = '.jpg';


Люблю сокращения, но все же)))

Код

return ($_SERVER['HTTP_HOST']!=FOTO_HOST?'http://'.HOST:'').$this->config['img_dir'].$p1.'/'.$p2.'/'.$userid.'/'.$albid.($pass?'pass':'').'/'.$file;



--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
smartov
Дата 2.2.2007, 20:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(IZ@TOP @  2.2.2007,  15:26 Найти цитируемый пост)
некоторые вещи особенно

Как обычно smile Strict Indian Style smile
PM MAIL   Вверх
WolfON
Дата 21.4.2007, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 604
Регистрация: 19.7.2004

Репутация: нет
Всего: 8



Есть код типа:
Код

    public function getDayCounts() {
        $raw = $this->http->Post("www.livejournal.com/interface/flat", "mode=getdaycounts&user=".$this->username."&auth_method=cookie", array("X-LJ-Auth: cookie"));
        return $this->explodeFlat($raw);            
    }
    
    public function getFriendOf() {
        $raw = $this->http->Post("www.livejournal.com/interface/flat", "mode=friendof&user=".$this->username."&auth_method=cookie", array("X-LJ-Auth: cookie"));
        return $this->explodeFlat($raw);            
    }


И судя по всему, прийдется дописать таких функций еще пять
Каким образом вы-бы упростили код, не лишая его читабельности, пока ничего, кроме как вынести его в отдельную функцию в голову не приходит =/
PM MAIL ICQ   Вверх
smartov
Дата 21.4.2007, 10:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



WolfON
как вариант, например
Код

public function getValueOfMode($mode) {
        $raw = $this->http->Post("www.livejournal.com/interface/flat", "mode=".$mode."&user=".$this->username."&auth_method=cookie", array("X-LJ-Auth: cookie"));
        return $this->explodeFlat($raw);
}


...
//вызов

$dayscount = $className->getValueOfMode('getdayscount');

$friendOf = $className->getValueOfMode('friendof');

PM MAIL   Вверх
d4rkr00t
Дата 10.11.2008, 19:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 8
Регистрация: 26.3.2006

Репутация: нет
Всего: нет



во что встретил в одном проекте

Код

<?
$ip = getenv("REMOTE_ADDR");

If ($ip == "63.76.234.54" or $ip == "194.158.208.151" or $ip == "212.5.100.140" or $ip == "194.67.159.230") {
echo "<p><b>Форум временно закрыт</b></p>";
exit;
}
?>



Это что система банна??)))
 



Это сообщение отредактировал(а) d4rkr00t - 10.11.2008, 19:57
PM MAIL   Вверх
smartov
Дата 10.11.2008, 20:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(d4rkr00t @  10.11.2008,  19:56 Найти цитируемый пост)
во что встретил в одном проекте

Клааас smile  smile 
PM MAIL   Вверх
jnb
Дата 13.11.2008, 18:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 4.10.2006

Репутация: нет
Всего: 1



Вижу ветка еще жива.
Прочитать смог только первую страницу.
Идея ТС-а конечно интересная, но что-то пошло вразнос: гуру выкладывают код, потом дружно ржут над ним без комментариев, засирают авторов кода и ВСЕ!
Это очень полезно для новичков. Новичок только может сделать вывод: что бы он не написал - его залажают.


PM MAIL   Вверх
bars80080
Дата 13.11.2008, 18:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



jnb, согласен, тема не флеймовая.
однако на первой странице всего три куска. первые два от IZ@TOP и smartov объяснены достаточно
Vaulter, правда, изначально ничего не говорит, но дальше из контекста ясно, что убивает в этом коде. и не нужно быть семи пядей во лбу, чтобы понять что в первом примере из-за ($a, $b, $c, $d) просто фиг разберёшься в функции. почему было не назвать переменные понятно - неизвестно
а во втором примере человек явно страдает. очень сильно. циклы для того и придуманы, чтобы не было подобных упражнений для пальцев
PM MAIL WWW   Вверх
Majesty
Дата 28.11.2008, 14:37 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 98
Регистрация: 20.3.2005
Где: Almaty, Kazakhsta n

Репутация: нет
Всего: нет



Платный движок для создания "социальных сетей" SocialEngine. Класс se_user (/include/class_user.php). Метод user_fields.
Код
...
      // SET PROFILE TAB VARIABLES
      $tab_query = "SELECT * FROM se_tabs"; if($tab_id != 0) { $tab_query .= " WHERE tab_id='$tab_id'"; } $tab_query .= " ORDER BY tab_order";
      $tabs = $database->database_query($tab_query);

      // LOOP THROUGH TABS
      while($tab_info = $database->database_fetch_assoc($tabs)) {

        // GET NON DEPENDENT FIELDS IN TAB IF NECESSARY
        if($tabs_only == 0) {
          $field_count = 0;
          $this->profile_fields = "";
          $field_query = "SELECT * FROM se_fields WHERE field_tab_id='$tab_info[tab_id]' AND field_dependency='0'"; if($signup != 0) { $field_query .= " AND field_signup<>'0'"; } if($profile != 0) { $field_query .= " AND field_browsable<>'-1'"; } if($search != 0) { $field_query .= " AND (field_browsable='1' OR field_browsable='2')"; } $field_query .= " ORDER BY field_order";
          $fields = $database->database_query($field_query);
          while($field_info = $database->database_fetch_assoc($fields)) {
...
Мало того, что отсутствие оформления делает абсолютно не читабельным, мало того, что вложенность операторов выше всякой меры... Убивает вложенность циклов с запросами. Какую нагрузку, интересно, выдержит такая "соц. сеть"?
PM MAIL WWW   Вверх
NLspieler
Дата 5.12.2008, 09:29 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Функция помогающая составлять mathml формулы. 
Сильно же по-уродски выглядит? 

Код

<?php

function mathml ($text)
{
    $array = explode (' ' , $text) ;
    $Anzhal = count ($array) ;
    $key = 0 ;
  
    echo   '<math xmlns="http://www.w3.org/1998/Math/MathML">' , "\n"  ;
  
    while ($key < $Anzhal)
    {
        $symbol = $array[$key] ;
    
        if ( $symbol == '+' or $symbol == '-' or $symbol == '*' or $symbol == '=' or $symbol == ',' 
                            or $symbol == '<' or $symbol == '>' or $symbol == '(' or $symbol == ')' )
        {
            echo '<mo>',"$symbol",'</mo>' , "\n"  ;
        }
        elseif (is_numeric($symbol))
        {                                                                                 
            echo '<mi>' , "$symbol" , '</mi>' , "\n"  ;
        }
        elseif ($symbol == '[')
        {
            echo       '<mrow>'   , "\n"  ;
        }    
        elseif ($symbol == ']')
        {
            echo       '</mrow>'   , "\n"  ;
        }    
        elseif ($symbol == '_s')
        {
            echo       '<msqrt>'   , "\n"  ;
        }
        elseif ($symbol == 's_')
        {
            echo      '</msqrt>'   , "\n"  ;
        }
        elseif ($symbol == '{')
        {
            echo       '<mfrac>'   , "\n"  ;
        }
        elseif ($symbol == '}')
        {
            echo      '</mfrac>'   , "\n"  ;
        }
        elseif ($symbol == '_n')
        {
            echo       '<msub>'   , "\n"  ;
        }
        elseif ($symbol == 'n_')
        {
            echo      '</msub>'   , "\n"  ;
        }
        elseif ($symbol == '_w')
        {
            echo       '<msup>'   , "\n"  ;
        }
        elseif ($symbol == 'w_')
        {
            echo      '</msup>'   , "\n"  ;
        }
        elseif ($symbol == '+-')
        {
            echo   '<mfrac linethickness="0">'       , "\n"  ;
            echo       '<mo>+</mo>'                  , "\n"  ;
            echo       '<mo>-</mo>'                  , "\n"  ;
            echo    '</mfrac>'                       , "\n"  ;
        }
        else 
        {
            echo '<mi>' , "$symbol" , '</mi>' , "\n"  ;
        }
        
        $key++ ;
    }

    echo    '</math>'                                          , "\n"  ;
    echo       '<br/> <br/>'                                   , "\n"  ; 

}


?>

PM MAIL   Вверх
smartov
Дата 5.12.2008, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



NLspieler, да, все это можно было сделать проще, забив сначала массив соответсвий замен.
PM MAIL   Вверх
NLspieler
Дата 6.12.2008, 09:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



Цитата(smartov @ 5.12.2008,  13:40)
NLspieler, да, все это можно было сделать проще, забив сначала массив соответсвий замен.

Что значит массив соответствий замен? 
PM MAIL   Вверх
NLspieler
Дата 6.12.2008, 10:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 619
Регистрация: 13.10.2008
Где: Берлин

Репутация: нет
Всего: 19



А вот это одна из функций, которая использует предыдущую функцию 

Код

<?php

/* Отображение квадратного уравнения */

function urawnenie ($A, $B, $C)            
{
    /* ax2 + bx + c = 0 */

    $absA = abs ($A) ;  #Модули входящих переменных
    $absB = abs ($B) ;
    $absC = abs ($C) ;

    $mathml = ($A < 0)                    ? '-'                        .' '   : ''          ;
    $mathml = ($A <> 0 and $absA <> 1)    ? "$mathml"."$absA"          .' '   : "$mathml"   ;
    $mathml = ($A <> 0)                   ? "$mathml".'_w x 2 w_'      .' '   : "$mathml"   ;
  
    $mathml = ($B < 0)                    ? "$mathml".'-'              .' '   : "$mathml"   ;
    $mathml = ($B > 0)                    ? "$mathml".'+'              .' '   : "$mathml"   ;  
    $mathml = ($B <> 0 and $absB <> 1)    ? "$mathml"."$absB"          .' '   : "$mathml"   ;
    $mathml = ($B <> 0)                   ? "$mathml".'x'              .' '   : "$mathml"   ;
  
    $mathml = ($C < 0)                    ? "$mathml".'-'              .' '   : "$mathml"   ;
    $mathml = ($C > 0)                    ? "$mathml".'+'              .' '   : "$mathml"   ;  
    $mathml = ($C <> 0)                   ? "$mathml"."$absC"          .' '   : "$mathml"   ;
  
    $mathml = "$mathml".'= 0'  ; 
  
    mathml ($mathml)           ;
}


?>

PM MAIL   Вверх
smartov
Дата 6.12.2008, 12:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Цитата(NLspieler @  6.12.2008,  09:34 Найти цитируемый пост)
Что значит массив соответствий замен?  

Код

//массив замен
$replacementRules = Array(
'+' => "<mo>_PLACEHOLDER_</mo>\n",
'-' => "<mo>_PLACEHOLDER_</mo>\n"....
);
//и так далее

//функция замены
function returnReplacement($item) {
    if (isset($replacementRules[$item])) {
        echo str_replace('_PLACEHOLDER_', $item, $replacementRules[$item]);
    }



//а потом
function mathml ($text)
{
    $array = explode (' ' , $text) ;
    array_walk($array, returnReplacement)
}


это навскидку так можно упростить
PM MAIL   Вверх
nerezus
  Дата 8.12.2008, 02:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Код

$NETCAT_FOLDER = join( strstr(__FILE__, "/") ? "/" : "\\", array_slice( preg_split("/[\/\\\]+/", __FILE__), 0, -1 ) ).( strstr(__FILE__, "/") ? "/" : "\\" );

Хотя по сравнению с  битрегзом...

Это сообщение отредактировал(а) nerezus - 8.12.2008, 02:55


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MoLeX
Дата 2.4.2009, 06:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



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

последние месяцы стали этот проект очень сильно развивать, каждый день закачивалось от 20 файлов и достигли мы такими темпами более 10 тыщ файлов (законопроекты, приказы и т.д.), и началось у меня веселье - чтобы закачать файл надо ждать минут 15 (к слову сервер у нас не хилый, когда файлов было менее 6 тыщ все работало на ура, а тут вот началось). в результате беглово осмотра нашел следующий код

Код

// 3. ВЫБОРКА ИНФОРМАЦИИ
$fileSelect = array();

if (is_dir($filefolder)) {
    if ($dh = @opendir($filefolder)) {
        while (($file = readdir($dh)) !== false) {
            if (filetype($filefolder . $file) == "file" and $file != "0.txt") {
                $sql  = 'SELECT * FROM bd_file WHERE file_file = ?';
                $stmt = db_prepare($sql, $file); $res  = db_query($stmt);
                if (!db_num_rows($res)) {
                    $fileSelect[$file] = $file;
                }
            }
        }
    }
    closedir($dh);
}
 

после убития этих строк проект опять залетал.

Люди не когда так не делайте


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
pompei
Дата 2.4.2009, 08:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 155
Регистрация: 7.9.2007

Репутация: нет
Всего: 6



Вот темная прога для shell-а:
Код

echo "password:" | perl -e '$??s:;s:s;;$?::s;;=]=>%-{<-|}<&|`{;;y; -/:-@[-`{-};`-{/" -;;s;;$_;see'

Я официально и уполномоченно заявляю, эту программу нельзя использовать, и категорически запрещено её запускать, особенно под суперпользователем "root" - ЭТО БУДЕТ НАРУШЕНИЕ АВТОРСКИХ ПРАВ И БУДЕТ ОЧЕНЬ СТРОГО КАРАТЬСЯ ПРИТОМ НЕМЕДЛЕННО И НЕЗАМЕДЛИТЕЛЬНО

Это сообщение отредактировал(а) pompei - 2.4.2009, 08:03
--------------------
А всё оказывается гораздо проще: пассивные наноструктуры - активные наноструктуры - системы наносистем - молекулярные наносистемы - сингулярность! По пять лет на каждый этап.
PM MAIL   Вверх
MoLeX
Дата 2.4.2009, 08:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



Цитата(pompei @  2.4.2009,  08:01 Найти цитируемый пост)
официально и уполномоченно заявляю, эту программу нельзя использовать, и категорически запрещено её запускать, особенно под суперпользователем "root" - ЭТО БУДЕТ НАРУШЕНИЕ АВТОРСКИХ ПРАВ И БУДЕТ ОЧЕНЬ СТРОГО КАРАТЬСЯ ПРИТОМ НЕМЕДЛЕННО И НЕЗАМЕДЛИТЕЛЬНО

не понял

Добавлено через 7 минут и 5 секунд
это же перл?


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
nerezus
Дата 2.4.2009, 09:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



MoLeX, запусти )
Это тест на профессионализм админа: он автоматически узнает скилл админа и, если админ плохой, наказывает его.


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
MoLeX
Дата 2.4.2009, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



nerezus, аха, запустил. и не чего

Добавлено через 12 секунд
 smile 


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
mogul82
Дата 16.5.2009, 23:07 (ссылка)    | (голосов:18) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 20.11.2008

Репутация: нет
Всего: -5



Я когда увольнялся из 2х фирм, запоганил все сайты. Стер функции для проверки ошибок, заменил функции на старые и т.д.
Вот там ща наверное мучуются.
 smile  smile  smile  smile  :
PM MAIL   Вверх
nerezus
Дата 16.5.2009, 23:20 (ссылка) |    (голосов:2) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Т.е. ты работал в настолько гадюшнике, что даже не было CVS-системы у них?


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
mogul82
Дата 16.5.2009, 23:21 (ссылка) |  (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 282
Регистрация: 20.11.2008

Репутация: нет
Всего: -5



nerezus
Каждый делал один проект с нуля в одиночку.
PM MAIL   Вверх
nerezus
Дата 18.6.2009, 02:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Покажешь код?)


--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
TUMS
Дата 7.8.2009, 08:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 61
Регистрация: 16.3.2008

Репутация: нет
Всего: 3



Код

// I don't know how to write it right, so I do it my newbie way. Code " if($sql['user_ip'] == $ip) " must be modified, but...
function check_user($id,$ip) 
{
    $sql = mysql_query("SELECT `user_ip` FROM `rating` WHERE `quote_id` = '$id' AND `user_ip` = '$ip'");
    $sql = mysql_fetch_assoc($sql);
    if($sql['user_ip'] == $ip) {
        return true;
    }
    else {
        return false;
    }
}

$ip = mysql_real_escape_string($_SERVER['REMOTE_ADDR']);

if(isset($_GET['id']) && (int)$_GET['id'] > 0 ) {
    $id = (int)$_GET['id'];
    if(isset($_GET['score'])) {
        switch($_GET['score']) {
        case "up":
            if(check_user($id,$ip) == false) {
                $sql = mysql_query("UPDATE `quotes` SET `score` = score + 1 WHERE `id` = '$id'");
                $sql = mysql_query("INSERT INTO `rating` (user_ip, quote_id) VALUES ('$ip','$id')");
            }
        break;
        case "down":
            if(check_user($id,$ip) == false) {
                $sql = mysql_query("UPDATE `quotes` SET `score` = score - 1 WHERE `id` = '$id'");
                $sql = mysql_query("INSERT INTO `rating` (user_ip, quote_id) VALUES ('$ip','$id')");
            }
        break;
    }
}


как-то так =)
PM MAIL WWW ICQ Skype GTalk Jabber MSN   Вверх
WiseFire
Дата 22.9.2009, 11:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 2
Регистрация: 22.9.2009

Репутация: нет
Всего: нет



Цитата(Vaulter @ 23.8.2006,  13:13)
ну что ж..вверили мне систему сайтов. и не смешно мне было отнюдь smile
для начала:
Код

function mailsender($a, $b, $c, $d)
{
$head      = "Content-type: text/html; charset=windows-1251\n";
$head     .= "From: ************\n";
$head     .= "Reply-To: ***********\n";
    
if ($a == "1") 
{
$query333 = "select * from dec_mess where typemess='1'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess']; 
}
elseif ($a == "2") 

$query333 = "select * from dec_mess where typemess='2'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess'];
}
elseif ($a == "3") 

$query333 = "select * from dec_mess where typemess='3'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess'];
}
elseif ($a == "4") 
{
$query333 = "select * from dec_mess where typemess='4'";
$result333 = mysql_query($query333);
$arw333 = mysql_fetch_array($result333);
if ($d != "0") { $ddd = 500+$d; $subj = "Номер заказа: $ddd\r\n"; $mess = "Номер заказа: $ddd\r\n"; }
else { $subj = ""; $mess = ""; }
$subj .= $arw333['subj']; 
$mess .= $arw333['mess']; 
}


  if ($c == "0")
  {
$query = "select email from dec_users where type_user='$b'";
$result = mysql_query($query);
  while ($arw = mysql_fetch_array($result))
  {
  $to = "$arw[email]";
  mail($to, $subj, $mess, $head);
  }
  }
  else
  {
  $query = "select id_kto_vip from dec_orders where id='$c'";
  $result = mysql_query($query);
  $arw = mysql_fetch_array($result);
  $query = "select email from dec_users where id='$arw[id_kto_vip]'";
  $result = mysql_query($query);
  $arw = mysql_fetch_array($result);
  $to = $arw['email'];
  mail($to, $subj, $mess, $head);
  }
  
}

прониклись? человеку деньги за это платились..... скотина...

 smile  smile  smile  smile  smile  smile  smile  smile 

МЕНЯ РВЕТ =)))))
 smile  smile  smile  smile  smile  smile  smile  smile 


P.S. Извините, не сдержался...
PM MAIL   Вверх
smartov
Дата 22.9.2009, 13:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



За что только не плОтют smile
PM MAIL   Вверх
nerezus
Дата 25.9.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Вселенский отказник
****


Профиль
Группа: Участник
Сообщений: 3330
Регистрация: 15.6.2005

Репутация: нет
Всего: 43



Отсюда: http://forum.vingrad.ru/forum/topic-274389.html

Код

$ishod=explode ("-", $stroka);
    $size_kupon=sizeof ($ishod);

    for ($i=0; $i<$size_kupon; $i++) {
        $size_ishod [$i]=strlen ($ishod[$i]);
    }

    for ($z0=0; $z0<$size_ishod [0]; $z0++) {
        $ish[0] = substr($ishod[0], $z0, 1);
        for ($z1=0; $z1<$size_ishod [1]; $z1++) {
            $ish[1] = substr($ishod[1], $z1, 1);
            for ($z2=0; $z2<$size_ishod [2]; $z2++) {
                $ish[2] = substr($ishod[2], $z2, 1);
                for ($z3=0; $z3<$size_ishod [3]; $z3++) {
                    $ish[3] = substr($ishod[3], $z3, 1);
                    for ($z4=0; $z4<$size_ishod [4]; $z4++) {
                        $ish[4] = substr($ishod[4], $z4, 1);
                        for ($z5=0; $z5<$size_ishod [5]; $z5++) {
                            $ish[5] = substr($ishod[5], $z5, 1);
                            for ($z6=0; $z6<$size_ishod [6]; $z6++) {
                                $ish[6] = substr($ishod[6], $z6, 1);
                                for ($z7=0; $z7<$size_ishod [7]; $z7++) {
                                    $ish[7] = substr($ishod[7], $z7, 1);
                                    for ($z8=0; $z8<$size_ishod [8]; $z8++) {
                                        $ish[8] = substr($ishod[8], $z8, 1);
                                        for ($z9=0; $z9<$size_ishod [9]; $z9++) {
                                            $ish[9] = substr($ishod[9], $z9, 1);
                                            for ($z10=0; $z10<$size_ishod [10]; $z10++) {
                                                $ish[10] = substr($ishod[10], $z10, 1);
                                                for ($z11=0; $z11<$size_ishod [11]; $z11++) {
                                                    $ish[11] = substr($ishod[11], $z11, 1);
                                                    for ($z12=0; $z12<$size_ishod [12]; $z12++) {
                                                        $ish[12] = substr($ishod[12], $z12, 1);
                                                        for ($z13=0; $z13<$size_ishod [13]; $z13++) {
                                                            $ish[13] = substr($ishod[13], $z13, 1);
                                                            for ($z14=0; $z14<$size_ishod [14]; $z14++) {
                                                                $ish[14] = substr($ishod[14], $z14, 1);

                                                                                                                    
                                                                $new_stroka="";
                                                                for ($i=0; $i<15; $i++) {
                                                                    $new_stroka.=$ish[$i];
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }



--------------------
Сообщество художников Artsociety.ru
PM MAIL WWW   Вверх
bars80080
Дата 25.9.2009, 23:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


прапор творюет
****
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 12022
Регистрация: 5.12.2007
Где: Königsberg

Репутация: нет
Всего: 315



свежачок
PM MAIL WWW   Вверх
overmet
Дата 18.8.2010, 23:57 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 83
Регистрация: 15.8.2009
Где: Gomel

Репутация: нет
Всего: -2



Код

Если метод может быть статическим, объявляйте его статическим.

echo быстрее, чем print.

Передавайте в echo несколько параметров, вместо того, чтобы использовать конкатенацию строк.

Устанавливайте максимальное количество проходов ваших циклов for до цикла, а не во время его выполнения.

Удаляйте свои переменные для освобождения памяти, тем более, если это большие массивы.

Остерегайтесь магических методов, таких как __set, __get, __autoload.

require_once дорого обходится.

Указывайте полные пути в конструкциях include/require, меньше времени будет тратится на поиск файла.

Если вам необходимо определить время, когда скрипт был запущен, используйте $_SERVER[’REQUEST_TIME’] вместо time().

Старайтесь использовать strncasecmp, strpbrk и stripos вместо регулярных выражений.


str_replace быстрее, чем preg_replace, но strtr быстрее, чем str_replace.

Если функция, как и функции замены строк, может принимать в аргументы как массивы, так и одиночные символы, и если ваш список аргументов не слишком длинный, подумайте над тем, чтобы записать несколько одинаковых выражений замены, проходя один символ за раз, вместо одной строки кода, которая принимает массив как аргумент поиска и замены

Лучше выбирать утверждения при помощи конструкции else if, чем использовать несколько конструкций if.

Подавление ошибок при использовании @ работает очень медленно.

Используйте модуль Apache mod_deflate.

Закрывайте свои соединения с БД, когда закончите работать с ними.

$row['id'] в семь раз быстрее, чем $row[id].

Сообщения об ошибках дорого стоят

Не используйте функции внутри условия цикла for, например как здесь: for ($x=0; $x < count($array); $x). В данном случае функция count() будет вызываться с каждым проходом цикла.

Инкремент локальной переменной в методе - самый быстрый. Почти также работает инкремент локальной переменной в функции.

Инкремент глобальной переменной в два раза медленее, чем локальной.

Инкремент свойства объекта (т.е. $this->prop++) в три раза медленнее, чем локальной переменной.

Инкремент неопределённой переменной в 9-10 раз медленнее, чем заранее инициализированной.

Объявление глобальной переменной, без использования её в функции, также замедляет работу (примерно на ту же величину, что и инкремент локальной переменной). Вероятно, PHP осуществляет проверку на существование переменной.

Скорость вызов метода, судя по всему, не зависит от количества методов, определённых в классе. Я добавил 10 методов в тестовый класс (до и после тестового метода), без изменения производительности.

Методы в производных классах работают быстрее, чем они же, определённые в базовом классе.

Вызов функции с одним параметром и пустым телом функции в среднем равняется 7-8 инкрементам локальной переменной ($localvar++). Вызов похожего метода, разумеется, около 15 инкрементов.

Ваши строки, определённые при помощи ', а не ", будут интерпретироваться чуть быстрее, т.к. PHP ищет переменные внутри "..", но не '...'. Конечно, вы можете использовать это только тогда, когда в вашей строке нет переменных.

Строки, разделённые запятыми, выводятся быстрее, чем строки, разделённые точкой. Примечание: это работает только с функцией echo, которая может принимать несколько строк в качестве аргументов.

PHP-скрипты будут обрабатываться, как минимум, в 2-10 раз медленнее, чем статические HTML-страницы. Попробуйте использовать больше статических HTML-страниц и меньше скриптов.

Ваши PHP-скрипты перекомпилируются каждый раз, если скрипты не кэшируются. Кэширование скриптов обычно увеличивает производительность на 25-100% за счёт удаления времени на компиляцию.

Кэшируйте, насколько это возможно. Используйте memcached — это высокопроизводительная система кэширования объектов в памяти, которая повышает скорость динамических веб-приложений за счёт облегчения загрузки БД. Кэшированный микрокод полезен тем, что позволяет вашему скрипту не компилироваться снова для каждого запроса.

При работе со строками, когда вам понадобится убедиться в том, что строка определённой длины, вы, разумеется, захотите использовать функцию strlen(). Эта функция работает очень быстро, ведь она не выполняет каких-либо вычислений, а лишь возвращает уже известную длину строки, доступную в zval-структуре (внутренняя структура C, используемая при работе с переменными в PHP). Однако потому, что strlen() — функция, она будет работать медленно за счёт вызова некоторых операций, таких как приведение строки в нижний регистр и поиска в хэш-таблице, только после которых будут выполнены основные действия функции. В некоторых случаях вы сможете ускорить свой код за счёт использования хитрости с isset().
Было: if (strlen($foo) < 5) { echo "Foo is too short"; }
Стало: if (!isset($foo{5})) { echo "Foo is too short"; }
Вызов isset() быстрее, чем strlen() потому, что, в отличие от strlen(), isset() - не функция, а языковая конструкция. За счёт этого isset() не имеет практически никаких накладных расходов на определение длины строки.

Инкремент или декремент переменной при помощи $i++ происходит немного медленнее, чем ++$i. Это особая специфика PHP, и не нужно таким образом модифицировать свой C и Java-код думая, что он будет работать быстрее, этого не произойдёт. ++$i будет быстрее в PHP потому, что вместо четырёх команд, как в случае с $i++, вам понадобится только три. Пост-инкремент обычно используется при создании временных переменных, которые затем увеличиваются. В то время, как пре-инкремент увеличивает значение оригинальной переменной. Это один из способов оптимизации PHP-кода в байт-код утилитой Zend Optimizer. Тем не менее, это хорошая идея, поскольку не все байткод-оптимизаторы оптимизируют это, также остаётся немало скриптов, работающих без оптимизации в байткод.

Не всё должно быть ООП, часто это излишне, поскольку каждый метод и объект занимает много памяти.

Не определяйте каждую структуру данных как класс, массивы бывают очень полезны

Не слишком разбивайте методы. Думайте, что вы действительно будете повторно использовать.

Вы всегда можете разбить код на методы позже, по необходимости.

Используйте бесчисленное количество предопределённых функций.

Если в вашем коде есть функции, выполняющиеся очень долго, обдумайте их написание на C в виде расширения

Профилируйте свой код. Профилирование покажет вам, как много времени выполняются части вашего кода.

mod_gzip — модуль Apache, который позволяет сжимать ваши данные на лету и может уменьшить объем передаваемых данных до 80%.

советы

Код

<?php

$lang = $_GET['lang'];
if (!$lang) {
    $lang = $_REQUEST['lang'];
}
if (!$lang) {
    $lang = 'en';
}
setcookie('lang', $lang);

?>



Это сообщение отредактировал(а) overmet - 19.8.2010, 00:01
PM MAIL WWW IM ICQ Skype GTalk Jabber AOL YIM MSN   Вверх
SneG0K
Дата 5.2.2011, 14:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Max Mara
***


Профиль
Группа: Завсегдатай
Сообщений: 1887
Регистрация: 1.12.2007
Где: Wis Dells

Репутация: нет
Всего: 54



nerezus, у тебя хоть отступы есть  smile 
PM WWW Skype   Вверх
Muerto
Дата 11.2.2011, 12:43 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Завсегдатай
Сообщений: 1207
Регистрация: 23.9.2006

Репутация: нет
Всего: 4



Цитата(nerezus @ 25.9.2009,  23:24)
Отсюда: http://forum.vingrad.ru/forum/topic-274389.html

Код

$ishod=explode ("-", $stroka);
    $size_kupon=sizeof ($ishod);

    for ($i=0; $i<$size_kupon; $i++) {
        $size_ishod [$i]=strlen ($ishod[$i]);
    }

    for ($z0=0; $z0<$size_ishod [0]; $z0++) {
        $ish[0] = substr($ishod[0], $z0, 1);
        for ($z1=0; $z1<$size_ishod [1]; $z1++) {
            $ish[1] = substr($ishod[1], $z1, 1);
            for ($z2=0; $z2<$size_ishod [2]; $z2++) {
                $ish[2] = substr($ishod[2], $z2, 1);
                for ($z3=0; $z3<$size_ishod [3]; $z3++) {
                    $ish[3] = substr($ishod[3], $z3, 1);
                    for ($z4=0; $z4<$size_ishod [4]; $z4++) {
                        $ish[4] = substr($ishod[4], $z4, 1);
                        for ($z5=0; $z5<$size_ishod [5]; $z5++) {
                            $ish[5] = substr($ishod[5], $z5, 1);
                            for ($z6=0; $z6<$size_ishod [6]; $z6++) {
                                $ish[6] = substr($ishod[6], $z6, 1);
                                for ($z7=0; $z7<$size_ishod [7]; $z7++) {
                                    $ish[7] = substr($ishod[7], $z7, 1);
                                    for ($z8=0; $z8<$size_ishod [8]; $z8++) {
                                        $ish[8] = substr($ishod[8], $z8, 1);
                                        for ($z9=0; $z9<$size_ishod [9]; $z9++) {
                                            $ish[9] = substr($ishod[9], $z9, 1);
                                            for ($z10=0; $z10<$size_ishod [10]; $z10++) {
                                                $ish[10] = substr($ishod[10], $z10, 1);
                                                for ($z11=0; $z11<$size_ishod [11]; $z11++) {
                                                    $ish[11] = substr($ishod[11], $z11, 1);
                                                    for ($z12=0; $z12<$size_ishod [12]; $z12++) {
                                                        $ish[12] = substr($ishod[12], $z12, 1);
                                                        for ($z13=0; $z13<$size_ishod [13]; $z13++) {
                                                            $ish[13] = substr($ishod[13], $z13, 1);
                                                            for ($z14=0; $z14<$size_ishod [14]; $z14++) {
                                                                $ish[14] = substr($ishod[14], $z14, 1);

                                                                                                                    
                                                                $new_stroka="";
                                                                for ($i=0; $i<15; $i++) {
                                                                    $new_stroka.=$ish[$i];
                                                                }
                                                            }
                                                        }
                                                    }
                                                }
                                            }
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
    }

Нам похожее в универе задавали...
на скок помню когда писал подобное на Java циклов понадобилось не более двух (кажется вообще один)


--------------------
user posted image
PM MAIL   Вверх
smartov
Дата 11.2.2011, 13:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



Muerto, а что вообще эта конструкция делает? (а то лень разбираться)
PM MAIL   Вверх
N_Ghost
Дата 28.3.2011, 20:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Код

<?
// Вывод ближайших праздников на неделю вперед, праздник, страна
// По ходу считаем дни :)
    $arr = array();
    for($i=0; $i<7; $i++){
        $tmp            = array();
        $Date            = time() + ($i * 86400);
        $tmp['Date']    = $Date;
        $tmp['Day']        = date("d", $Date);
        $tmp['Month']    = date("m", $Date);
        $tmp['Year']    = date("Y", $Date);                
        $arr[$i]        = $tmp;
    }

// Выбираем день и месяц
    foreach( $arr as $key ){
        $New = mysql_query("SELECT * FROM `party` WHERE `day`='{$key['Day']}' && `month`='{$key['Month']}'");
        if(mysql_num_rows($New) > 0)
        {
            while ($row = mysql_fetch_array($New))
            {
                echo "<div class='party'>   <h1>".$key['Day'].'.'.$key['Month'].'.'.$key['Year']."</h1>  ";
            
                $P_Cont = $row['cid'];
                // Выбираем флаг страны
                $Cont_Q = mysql_query("SELECT * FROM flags WHERE `id`='$P_Cont'");
                $rowCont = mysql_fetch_array($Cont_Q);
                $P_Pic = $rowCont['pic'];
                $FlagName = $rowCont[$lang];
            }
            
        }
    }    
    
?>


Подкинули мне интересный проектик, малость поправить и дополнить. То что дизайнер его верстал похоже сразу в фотошопе, я особо не удивился. Но когда полез в код, и нашел там такой веселый кусок, пол часа ржали всем отделом smile
PM MAIL   Вверх
KLeonid
Дата 30.3.2011, 20:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Entropy
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 5.7.2007
Где: Shpongleland

Репутация: нет
Всего: 1



А тема то хорошая! Вот только действительно, комментировать нужно код, иначе новички могут не понять над чем смеяться smile.
Никогда не считал себя хорошим кодером, я скорее инженер, но даже на php4 таких глупостей как в теме себе не позволял. А глупостей я насмотрелся, когда переписывал оскоммерс smile.

N_Ghost, да код забавный... автор видимо не умеет пользоваться LEFT JOIN, или в упор не знает, что можно делать выборку из нескольких таблиц одним запросом smile.
А уж как переменные плодить любит! smile 
Вообще, логика этого кода малопонятна smile. Можно было сделать так:

Код

  for($i=0; $i<7; $i++){
    $Date = time() + ($i * 86400);
    $pq = mysql_query("SELECT * FROM party p LEFT JOIN flags f ON  p.cid = f.id WHERE p.day = '". date("d", $Date) ."' AND p.month = '". date("m", $Date) ."'");
     if($pq && mysql_num_rows($pq) > 0)
     {
        while ($row = mysql_fetch_array($pq))
        {
           echo "<div class='party'><h1>$row['day'].$row['month'].date('Y', $Date)</h1>";
/*А тут что-то сделать с 
           $P_Pic = $row['pic'];
           $FlagName = $row[$lang];
не зря же их тянули :)
*/
         }
      }
  }


Но от этого код становится лишь немного лучше... а логика все так же дубова smile

Это сообщение отредактировал(а) KLeonid - 30.3.2011, 20:30
PM MAIL   Вверх
N_Ghost
Дата 6.4.2011, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Забыл добавить что сама дата храниться в базе в трех int полях, как, день, месяц, год. Там видимо программисту не то что LEFT JOIN, а даже стандартные типы данных не известны smile
Еще убила таблица пользователей, UserID, по которому выбираються пользователи, это var_char, содержащий md5 микротайма. А вот пароль храниться в открытом виде, в текстовом поле. 
Такой логики, как не пытался, понять не смог.
PM MAIL   Вверх
KLeonid
Дата 6.4.2011, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Entropy
*


Профиль
Группа: Участник
Сообщений: 51
Регистрация: 5.7.2007
Где: Shpongleland

Репутация: нет
Всего: 1



А ее там и нет smile. Просто многие считают себя программистами по недоразумению. Если бы они обладали достаточным воображением и могли провести аналогию своей работы, например, с постройкой автомобиля, поняв, что сами ездить на нем они ну совсем не захотели бы (ибо стремно, своя шкура все таки), скорее всего бросили бы это дело или начали совершенствоваться. Впрочем, большинству ###кодеров на это совершенно наплевать. Это их хлеб и у них есть своя потребительская аудитория... впрочем сочувствовать ей я не собираюсь, т.к. достаточно знаком с ней, и в большинстве случаев эти заказчики в последствии платятся за свою жадность smile .
PM MAIL   Вверх
N_Ghost
Дата 25.5.2011, 17:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Есть много способов проверить что переменная существует, или содержит нужное значение.
Но такого извращенного способа еще не встречал smile
Код

function edit($id){

$id = $id+0;

//..... все равно идем в базу за нужным номером :)

}

PM MAIL   Вверх
smartov
Дата 25.5.2011, 17:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


свой собственный
****


Профиль
Группа: Экс. модератор
Сообщений: 4225
Регистрация: 2.2.2006
Где: NJ

Репутация: 2
Всего: 259



А чего. Отсроумно smile
PM MAIL   Вверх
srt
Дата 9.6.2011, 12:34 (ссылка)    | (голосов:4) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 65
Регистрация: 13.5.2008

Репутация: нет
Всего: 1



самый быстрый способ избавиться от sql injection
никаких регулярок и прочей лобуды
PM MAIL   Вверх
N_Ghost
Дата 2.7.2011, 13:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 24
Регистрация: 18.6.2008

Репутация: нет
Всего: нет



Продолжу тему веселых запросов. Нужно узнать, есть ли транспорт из страны, и в страну. Всего 94 страны, 189 запросов в базу, только для того что бы показать есть ли что то из этой страны, и в эту страну.

Код

$qCountry = mysql_query("SELECT * FROM `country`");
   while($rowCountry = mysql_fetch_array($qCountry)){

      $qFrom = mysql_query("SELECT * FROM `transport` WHILE `From_Country`=$rowCountry['id']");
         if (mysql_num_rows($qFrom) > 0){
            $country[$rowCountry['id']]['from'] = 'yes';
         }else{
            $country[$rowCountry['id']]['from'] = 'no';
         }

      $qTo = mysql_query("SELECT * FROM `transport` WHILE `To_Country`=$rowCountry['id']");
         if (mysql_num_rows($qTo) > 0){
            $country[$rowCountry['id']]['to'] = 'yes';
         }else{
            $country[$rowCountry['id']]['to'] = 'no';
         }

   }


Это сообщение отредактировал(а) N_Ghost - 2.7.2011, 13:07
PM MAIL   Вверх
MoLeX
Дата 4.7.2011, 05:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Местный пингвин
****


Профиль
Группа: Модератор
Сообщений: 4076
Регистрация: 17.5.2007

Репутация: нет
Всего: 140



мда. очень интересно использовать цикл в запросе.


--------------------
Amazing  smile 
PM MAIL WWW ICQ   Вверх
FlameTH
Дата 21.2.2014, 16:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 29
Регистрация: 13.7.2007

Репутация: нет
Всего: нет



как вам такое?
Код

$serial = str_replace('-','',substr(date('Y-m-d'),-5));

PM MAIL ICQ   Вверх
jexerrus
Дата 17.3.2014, 13:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 17.3.2014

Репутация: нет
Всего: нет



жесть какая,  вообще все куски кода как на подбор =)))))  smile 
PM MAIL WWW   Вверх
Страницы: (12) [Все] 1 2 3 ... Последняя »
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Избранное | Следующая тема »


 




[ Время генерации скрипта: 1.0427 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.