[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Хорошо со SQL-inj разобрались... а как защититься от заливки шеллов?

    Так вышледит скрипт заливающий файлы у меня...
    PHP:
       $uploaddir '../images/works/minipic/';
        
    $uploadfile $uploaddir.basename($_FILES['minipic']['name']);
        if (
    copy($_FILES['minipic']['tmp_name'], $uploadfile)){
                    
        }else { echo 
    "<h3>Ошибка! Не удалось загрузить файл на сервер!</h3>"; exit; }
    Как видите никак не экранируется...
     
  2. D Mak

    D Mak Elder - Старейшина

    Joined:
    23 Jun 2007
    Messages:
    136
    Likes Received:
    27
    Reputations:
    0
    кто то мешает экранировать?
     
  3. LASS0

    LASS0 Member

    Joined:
    3 Jan 2009
    Messages:
    0
    Likes Received:
    17
    Reputations:
    1
    Подскажите как сделать, чтобы перед записью ip адреса в БД, сначало была проверка: если такой ip в столбце уже есть, то запись не делалась.

    PHP:
    <?

    $ip $_SERVER['REMOTE_ADDR'];
      
    include(
    "connect.php");

    $link mysqli_connect(SERVERUSERNAMEPASSWORDDBNAME);


    $result=mysqli_query($link,
                         
    "INSERT INTO user (ip) VALUES ('$ip')");

    mysqli_close($link);

    ?>
     
  4. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    m0Hze, ты о счетчиаках?
     
  5. erihtoney

    erihtoney Member

    Joined:
    3 Mar 2009
    Messages:
    91
    Likes Received:
    73
    Reputations:
    20
    2m0Hze

    Добавьте численное поле[Queries],при каждом запросе проверяйте,есть ли данный запрос, если есть прибавляйте к этому значению 1[Queries]
    По поводу кодировки:
    Пользователь вводит запрос в произвольной кодировке, в зависимости от браузера,сервер преобразовывает и передает mysql=> такая же, как и у сервера,и интерпретатора(chcp1251)
     
  6. Chaak

    Chaak Elder - Старейшина

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Придай полю ip св-во unique, и просто добавляй в таблицу, ненужное будет отсеиваться
     
  7. erihtoney

    erihtoney Member

    Joined:
    3 Mar 2009
    Messages:
    91
    Likes Received:
    73
    Reputations:
    20
    2m0Hze
    desc
     
    1 person likes this.
  8. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze Во-первых, есть соседняя тема с вопросами про MySQL. Во-вторых - не надо создавать лишнюю таблицу. В-третьих, запрос будет такой:

    Code:
    SELECT `zapros`, count(*) AS `cnt` FROM `table` GROUP BY `ipaddress` ORDER BY `cnt` DESC LIMIT 10;
    Итого - zapros - имя столбца, через запятую можно еще добавить.
    count(*) as `cnt` - количество строк
    table - имя таблицы
    GROUP BY `ipaddress` - по какому столбцу объединять
    LIMIT 10 - 10 строк в выводе будет
     
    _________________________
    1 person likes this.
  9. erihtoney

    erihtoney Member

    Joined:
    3 Mar 2009
    Messages:
    91
    Likes Received:
    73
    Reputations:
    20
    PHP:
    SELECT column,...
    [
    FROM table WHERE definition]
    [
    ORDER BY col_name [ASC DESC], ...]
    [
    LIMIT [offset], rows]
    Пример:
    PHP:
    SELECT FROM  ORDER BY `QueriesDESC LIMIT 0 5
     
  10. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    А какже защита от всяких нулл байтов?
     
  11. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze пффф, я-то думал хоть какой то лог у вас есть (типа кто, когда, что), а вы просто количество запросов увеличиваете :-\ Тогда так

    PHP:
    SELECT  id,name,num FROM table ORDER BY num DESC LIMIT 5
     
    _________________________
    #9771 Gifts, 25 Apr 2009
    Last edited: 25 Apr 2009
    1 person likes this.
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze Учите пхп, и что делает функция ,mysql_fetch_array
     
    _________________________
  13. Grema

    Grema Elder - Старейшина

    Joined:
    29 Nov 2005
    Messages:
    109
    Likes Received:
    16
    Reputations:
    -4
    Ребят помогите с регулярным выражением..
    надо проверить на совпадение.
    будет приходить ГЕТ с такими данными:
    1-2,3-2,1-1 или 2-2,1-1
    то есть кол-во меняться будет постоянно.
    ^\d{1}-\d{1}
    вот я не знаю как в цикл с , можно было бы запустить? О.о
     
  14. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    m0Hze Потому что гладиолус.
    Returns an array that corresponds to the fetched row and moves the internal data pointer ahead.

    PHP:
    while ($row mysql_fetch_array($query)) print_r($row);
    Grema
    PHP:
    preg_match_all('~(\d)\-(\d)~',$_GET['c'],$result);
    var_dump($result);
     
    _________________________
    #9774 Gifts, 25 Apr 2009
    Last edited: 25 Apr 2009
  15. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Есть функция которая выводит дату...
    $date = date("d.m.Y", time());
    Как из этот даты получить обратно секунды как в функции time()
    Точность как видите до 1 дня...
     
  16. mr.The

    mr.The Elder - Старейшина

    Joined:
    30 Apr 2007
    Messages:
    1,080
    Likes Received:
    456
    Reputations:
    38
    _ttp://ru2.php.net/manual/ru/function.strtotime.php
     
  17. DTW

    DTW Banned

    Joined:
    11 May 2008
    Messages:
    221
    Likes Received:
    52
    Reputations:
    11
    Как сделать чтоб было так не было хтмл тегов

    PHP:
    function treecat($parent=0,$lv=0)  
      {
         
        
    connection();
         
    $sql mysql_query('SELECT id,parent,name FROM category where parent = '.intval($parent));
             
        while(
    $cat mysql_fetch_array($sql))
        {
            if (
    $lv == ) break; 
          if (
    $cat['parent'] !=0) {
          
             
             echo 
    "<tbody><tr><td><a href=theme.php?cat=".$cat['id'].">".$cat['name']."</a></td></tr></tbody>";
              
          }  
          else
          {
              
             echo 
    "<thead><tr><th class=\"title\">"$cat['name']."</th></tr></thead>";
          }
             
            
    treecat($cat['id'],$lv+1) ;
             
        }
             
      }


    Например если сделать так в выводит массив



    PHP:
    function treecat($parent=0,$lv=0)  
      {
         
        
    $arr= array();
      
          
        
    connection();
         
    $msql mysql_query('SELECT id,parent,name FROM category where parent = '.intval($parent));
           if(
    mysql_num_rows($msql)> 0) {
            
        while(
    $cat mysql_fetch_array($msql))
        {
             if (
    $lv == ) break; 
                 
              
    $arr[] = $cat;
               
             
    //echo "<tbody><tr><td><a href=theme.php?cat=".$cat['id'].">".$cat['name']."</a></td></tr></tbody>";
              
              
            
             
             //echo "<thead><tr><th class=\"title\">". $cat['name']."</th></tr></thead>";
            
             
          
    $arr[] =  treecat($cat['id'],$lv+1) ;
              
        }   
           return  
    $arr  ;
           } 
      }
      
        
       
    $forum treecat();
       echo 
    "<pre>";
       
    print_r($forum);
       
       
      
    ?> 

    как его потом вывести в хтмл вида

    и правельно ли я вернул массив

    как его потом вывести в хтмл вида ..
    HTML:
    <table border="1" width="70%" cellpadding="2" cellspacing="0 class="bord" >
     <thead><tr><th class="title"></th></tr></thead>
       <tbody>
       <tr><td><a href=theme.php?cat=""> </a></td></tr>
       </tbody>
    </table>
    <br/>
    Суб категория 
    <table border="1" width="70%" cellpadding="2" cellspacing="0 class="bord" >
     <thead><tr><th class="title"></th></tr></thead>
       <tbody>
       <tr><td><a href=theme.php?cat=""> </a></td></tr>
       </tbody>
    </table>
    

    Как лучше это сделать?
     
  18. [R]eD

    [R]eD Elder - Старейшина

    Joined:
    1 Aug 2006
    Messages:
    72
    Likes Received:
    1
    Reputations:
    0
    Знает кто-нибудь хостинг (платный/бесплатный), где можно открывать постоянное соединение с mysql-сервером и постепенно передавать ему запросы, лимитов на время быть не должно.
    Спасибо.
     
  19. Byrger

    Byrger Elder - Старейшина

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    как рандомно достать запись из БД?
    И возвожно это по средствам запроса сделать?
     
  20. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Как полностью остановить работу скрипта, после чего сразу же возобновить. Цикл foreach. sleep(), flush(), не предлагать, т.к. они приостанавливают, но скрипт работает.
     
Thread Status:
Not open for further replies.