За последние 24 часа нас посетил 16861 программист и 1641 робот. Сейчас ищут 885 программистов ...

Вопросец про кривоту скрипта

Тема в разделе "Прочие вопросы по PHP", создана пользователем bim, 7 сен 2008.

  1. bim

    bim Активный пользователь

    С нами с:
    20 авг 2008
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Вот такой вопрос. Есть один знакомый, очень начинающий программист. Он немножко знаком с Си, и вот теперь принялся за PHP. Но его скрипты, ИМХО, очень кривоваты. Хотелось бы узнать мнение народа о кривоте скрипта, так сказать, какие общие правила написания скрипта существуют. Именно народа, а не отдельного человека, написавшего отдельную книгу.
    Вот пример, как я считаю, кривого скрипта (послал мне его тот самый знакомый):
    PHP:
    1. if(условие){
    2.                echo'';
    3.                echo'';
    4.                }
    5. else{
    6.                echo'';
    7.                echo'';
    8.                }
    Напиши свои рамки, за которыми скрипт становится кривым. Заранее спасибо.
     
  2. Kreker

    Kreker Старожил

    С нами с:
    8 апр 2007
    Сообщения:
    5.433
    Симпатии:
    0
    Закрывающая скобка не должна быть на уровне кода блока, а должна быть на уровне объявления условия. Иначе, если код в блоке большой, то будет тяжело найти его конец.
    Echo по сто раз выводить не нужно, ведь это - функция. Зачем вызывать подряд функцию много раз?
    Ведь можно делать так:
    PHP:
    1. <?php
    2. echo '123
    3. 123';
    4. //Или так
    5. echo '123', $var, '123';
    6.  
    7. ?>
     
  3. Anonymous

    Anonymous Guest

    bim, смените аватар. Разрешены только личные фото.
     
  4. Victor Bazinov

    Victor Bazinov Активный пользователь

    С нами с:
    30 окт 2007
    Сообщения:
    69
    Симпатии:
    0
  5. bim

    bim Активный пользователь

    С нами с:
    20 авг 2008
    Сообщения:
    7
    Симпатии:
    0
    Адрес:
    Екатеринбург
    Обязательно. Но вот интересно твоё личное мнение.
     
  6. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    Вот так должен выглядеть модуль аплоадинга для phpmymanager =)))
    PHP:
    1. <?
    2. if(!defined('INDEX')) die("ERROR, EXIT!");
    3. $file = $_FILES["file"]["tmp_name"];
    4. $dir=$_POST['dir'];
    5. if(isset($file) && !empty($file) && isset($dir) && !empty($dir)) {
    6.     if (is_dir($dir))  {
    7.     if (is_writable($dir)){
    8.         $dir=str_replace("\\","/",$dir);
    9.         $file_name=$_FILES["file"]["name"];
    10.         if ($data['latinupload']) {
    11.           preg_match("#\.(.+)$#i",$file_name,$ass);
    12.           $file_name=preg_replace("#\.(.+)$#i","",$file_name);
    13.           $file_name =latin_convert($file_name);
    14.           $file_name=$file_name.'.'.strtolower($ass[1]);
    15.          }
    16.        if (!file_exists($dir.'/'.$file_name)) {
    17.         $msg='';
    18.         if (@move_uploaded_file($file, "$dir/$file_name")) {
    19.               chmod("$dir/$file_name",0755);
    20.               if ($data['autoadddload']  && !thisimg($file_name)) {
    21.                   $files_var=get_serial('files');
    22.                   if (is_array($files_var) && count($files_var)) {
    23.                       $keys=array();
    24.                       foreach($files_var as $key=>$val) {
    25.                              $keys[$key]=$key;
    26.                       }
    27.                       $i=max($keys)+1;
    28.                  } else {
    29.                       $i=1;
    30.                  }
    31.                   $files_var[$i]['dir']=$dir.'/'.$file_name;
    32.                   $files_var[$i]['name']=$file_name;
    33.                   set_serial('files',$files_var);
    34.                   $msg.="Файл: $file_name успешно загружен и добавлен в download список<br>";
    35.               }else if ($data['autotumb'] && thisimg($file_name)) {
    36.                      if (assus($dir.'/'.$file_name)) {
    37.                         $info=GetImageSize($dir.'/'.$file_name);
    38.                         if ($info[0]>$data['twidth']) {
    39.                         $twidth=$data['twidth'];
    40.                         $theight=($info[1]/100)*(round($twidth/$info[0]*100,7));
    41.                         $tqual=80;
    42.                         $file_name1=time().'_'.$file_name;
    43.                        if (img_resize($dir.'/'.$file_name,$cnf['path'].'/'.$data['tumbdir'].'/'.$file_name1,$twidth,$theight,$tqual)) {
    44.                              $tumb_var=get_serial('tumb');
    45.                              $tumb_var[md5($dir.'/'.$file_name)]['link']=str_replace($_SERVER['DOCUMENT_ROOT'],'',str_replace('\\','/',$cnf['path']).'/'.$data['tumbdir'].'/'.$file_name1);
    46.                              $tumb_var[md5($dir.'/'.$file_name)]['name']=$file_name1;
    47.                              set_serial('tumb',$tumb_var);
    48.                              $msg.="Файл: $file_name успешно загружен, для этой картинки создана уменьшенная копия: $file_name1 ".$twidth."x".round($theight)." и сохранена в папку ".$data['tumbdir']."<br>";
    49.                        }else {
    50.                              $msg.="Файл: $file_name успешно загружен, но при создании уменьшенной копии произошла ошибка<br>";
    51.                        }
    52.                      } else {
    53.                          $msg.="Файл: $file_name успешно загружен, но уменьшенная копия не создана, потому что ширина картинки меньше ширины уменьшенной копии<br>";
    54.                      }
    55.                    }else {
    56.                       $msg.="Файл: $file_name успешно загружен, но уменьшенная копия не создана, формат картинки не поддерживается<br>";
    57.                   }
    58.               } else {
    59.                   $msg.="Файл: $file_name успешно загружен<br>";
    60.               }
    61.               if ($data['autozip']) {
    62.                 include "sis/inc/pclzip.lib.php";
    63.                 $buffer=get_serial('zipbuffer');
    64.                 $namezip=preg_replace("#\.(.+)$#i",".zip",$file_name);
    65.                 $isthiszip=file_exists($dir.'/'.$namezip);
    66.                 $isinbuf=isinzipbuffer($dir.'/'.$namezip);
    67.                 if (!$isinbuf && !$isthiszip) {
    68.                    $zip = new PclZip($dir.'/'.$namezip);
    69.                    $pdir=preg_replace("#^(.+)\:#i","",$dir);
    70.                    if ($zip->create($dir.'/'.$file_name,PCLZIP_OPT_REMOVE_PATH,$pdir)) {
    71.                        $msg.="Файл: $file_name добавлен в zip архив - $namezip<br>";
    72.                         if ($data['autodelnozip']) {
    73.                            unlink($dir.'/'.$file_name);
    74.                            $msg.="Файл: $file_name автоматически удалён<br>";
    75.                         }
    76.                        $buffer[]=$dir.'/'.$namezip;
    77.                        set_serial('zipbuffer',$buffer);
    78.                    } else {
    79.                        $msg.="Ошибка: Не могу добавить Файл - $file_name в zip архив - $namezip<br>";
    80.                    }
    81.                 } else if ($isinbuf || $isthiszip) {
    82.                       $zip = new PclZip($dir.'/'.$namezip);
    83.                       $pdir=preg_replace("#^(.+)\:#i","",$dir);
    84.                    if ($zip->add($dir.'/'.$file_name,PCLZIP_OPT_REMOVE_PATH,$pdir)) {
    85.                        $msg.="Файл: $file_name добавлен в zip архив - $namezip<br>";
    86.                        if ($isthiszip && !$isinbuf && !in_array($dir.'/'.$namezip,$buffer)) {
    87.                           $buffer[]=$dir.'/'.$namezip;
    88.                           set_serial('zipbuffer',$buffer);
    89.                        }
    90.                         if ($data['autodelnozip']) {
    91.                           unlink($dir.'/'.$file_name);
    92.                           $msg.="Файл: $file_name автоматически удалён<br>";
    93.                         }
    94.                    } else {
    95.                        $msg.="Ошибка: Не могу добавить Файл - $file_name в zip архив - $namezip<br>";
    96.                    }
    97.                  }
    98.                }
    99.                $tpl->assign("error",$msg."<center><a href='index.php?act=fullupload'>[ Назад ]</a></center>");
    100.                $result['error'].=$tpl->fetch('error.tpl');
    101.              }else {
    102.                 $tpl->assign("error","Ошибка: Не могу загрузить $file_name<br><center><a href='index.php?act=fullupload'>[ Назад ]</a></center>");
    103.                 $result['error'].=$tpl->fetch('error.tpl');
    104.                 }
    105.           }else {
    106.              $tpl->assign("error","Ошибка: Файл - $file_name уже существует в $dir<br><center><a href='index.php?act=fullupload'>[ Назад ]</a></center>");
    107.              $result['error'].=$tpl->fetch('error.tpl');
    108.           }
    109.        }else {
    110.           $tpl->assign("error","Ошибка: Отсутствуют права доступа к директории<br><center><a href='index.php?act=fullupload'>[ Назад ]</a></center>");
    111.           $result['error'].=$tpl->fetch('error.tpl');
    112.         }
    113.      } else {
    114.          $tpl->assign("error","Ошибка: Директория не существует<br><center><a href='index.php?act=fullupload'>[ Назад ]</a></center>");
    115.          $result['error'].=$tpl->fetch('error.tpl');
    116.      }
    117. } else if (isset($file) && empty($file) || isset($dir) && empty($dir)) {
    118.     $tpl->assign("error","Ошибка: Все поля нужно заполнить<br><center><a href='index.php?act=fullupload'>[ Назад ]</a></center>");
    119.     $result['error'].=$tpl->fetch('error.tpl');
    120. } else if(!isset($file)) {
    121.      $tpl->assign('nowdir',empty($data['dirupload'])?$cnf['path']:$data['dirupload']);
    122.      $result['content'].="<form method='POST' enctype=\"multipart/form-data\">".$tpl->fetch('fullupload.tpl')."</form>";
    123. }
    124. ?>
     
  7. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    кошмар внесения изменений

    где комменты и разделение на логичесике блоки? ;)
     
  8. Mr.M.I.T.

    Mr.M.I.T. Старожил

    С нами с:
    28 янв 2008
    Сообщения:
    4.586
    Симпатии:
    1
    Адрес:
    у тебя канфетка?
    по идее там сначало должно было быть 3 строчки кода, а потом всё пошло и пошло 0о
    Зы. Модуль работы с zip архивами ещё веселее :lol:
     
  9. Sergey89

    Sergey89 Активный пользователь

    С нами с:
    4 янв 2007
    Сообщения:
    4.796
    Симпатии:
    0
    код должен быть самодокументируемым)
     
  10. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    если бы всегда все было так просто......
     
  11. admyx

    admyx Активный пользователь

    С нами с:
    14 мар 2008
    Сообщения:
    2.159
    Симпатии:
    1
    p.s. код становится кривым, когда ты сам перестаешь в нем разбираться....))))))
    так, шутка юмора