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

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

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

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

    Joined:
    15 Jun 2007
    Messages:
    574
    Likes Received:
    86
    Reputations:
    11
    спасибо всем уже решил задачу )
     
  2. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    PHP

    Народ,как сделать вывод текста из бд по рейтингу..
    Да вообще --- как сделать этот рейтинг?

    Вот я сделал страницу,на ней всё есть(рега\вход\выход\куки)
    при регистрации создаётся файл с новым именем(именем юзера), а вообще --- пишется файл,типа :
    all.dat
    в нём:
    Имя|0
    Имя|1
    Имя|2
    Ну вот,а надо сделать что-то типа:
    Имя|0|Рейтинг:80%
    Имя|1|Рейтинг:10%
    Имя|2|Рейтинг:10%
    А если регнется новый,то:
    Имя|0|Рейтинг:70%
    Имя|1|Рейтинг:10%
    Имя|2|Рейтинг:10%
    Имя|3|Рейтинг:10%
    А если кто-то повысит рейтинг,то,например,так:
    Имя|0|Рейтинг:50%
    Имя|1|Рейтинг:20%
    Имя|2|Рейтинг:20%
    Имя|3|Рейтинг:10%

    И самое главное:
    Вывод инфы:
    Допустим файл содержит:
    Имя|4|Рейтинг:50%
    Имя|1|Рейтинг:20%
    Имя|2|Рейтинг:20%
    Имя|3|Рейтинг:10%
    Тогда вывод:
    Имя|4|Рейтинг:50%
    Имя|1|Рейтинг:20%
    Имя|2|Рейтинг:20%
    Имя|3|Рейтинг:10% --- не активен,модератор удали его!
    Вопрос: как это организовать?
    Если надо --- выложу скрипт...
     
  3. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    сохраняй, например, так
    Code:
    Имя|0|80
    а при чтении, если юзеров не много, загоняй все массив и сортируй (http://php.net/manual/en/array.sorting.php) по рейтингу.
     
  4. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Вот например у тебя
    npimer.txt,а в нём:
    7111222
    111222
    Надо найти 111222 или проверить - есть ли она вообще?
    Вот код:
    PHP:
     $ischem="111222";
    $TBoi_fail "npimer.txt";
            
    $massiv = @file($TBoi_fail);
            
    $lines count($massiv);
            for ( 
    $i 0$i <= $lines$i++ ){
            list(
    $chislo,$chislo2)=explode(' '$massiv[$i]);
            if(
    $ischem==$chislo){  Exit("Найдено совпадение!<BR>Искали:$ischem<BR>Найдено:$chislo  }
            if(
    $i==$lines){ die("Совпадений нет!");   }
            }
        
    В данном случае появится:
    Найдено совпадение!
    Искали:111222
    Найдено:111222
     
  5. Fuckel

    Fuckel Banned

    Joined:
    16 Jan 2008
    Messages:
    274
    Likes Received:
    59
    Reputations:
    6
    сортировка, например, такая:
    PHP:
    <?php
    $f 
    file("users.dat");
    $users = Array();
    for (
    $i=0$i<count($f); $i++)
    {
        
    $users[] = explode('|'$f[$i]);
        
    settype($users[$i][2], int);
    }
    function 
    cmp($a$b)
    {
        if (
    $a[2] == $b[2]) {
            return 
    0;
        }
        return (
    $a[2] < $b[2]) ? -1;
    }
    usort($users"cmp");
    print_r($users);
    ?> 
    файл users.dat
    Code:
    a|0|1
    aa|12|100
    bvn|42|3
    рейтинг - третий элемент, то есть это будут 1, 100 и 3
     
    #13705 Fuckel, 28 Jan 2010
    Last edited: 28 Jan 2010
  6. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8
    SELECT `NAME`,`ID`,`RATING` FROM `users` WHERE `BANNED`!=1 ORDER BY `RATING` DESC;
     
  7. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Да нет же,я на файлах люблю делать
     
  8. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    Извращенец.
     
  9. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Переделал скрипт,но не пойму принцип работы,хотя написал сам...
    PHP:
    <?php
    $f 
    ="clans/all.dat";
    $general = @file($f);
    $lines count($general);
    for ( 
    $i 0$i <= $lines$i++ ){
        list(
    $nenado,$nenado2,$nado)=explode('|'$general[$i]);
        if(
    $nado '100'){  break;  }
        if(
    $nado > ($lines 100 $nado)){ echo "<table width=100% cellpadding=2 cellspacing=1 class=forumline>
    <tr>
    <th width=62% colspan=2 class=thCornerL height=25 nowrap=nowrap>\"
    $nado\"</th>
    <th width=28% class=thCornerR nowrap=nowrap>s</th>
    </tr>"
    ; }
        if(
    $i==$lines){ $dont_registr 'yes';   }
       }
    ?>
    Вот он и выводит
    "80 " s
    "20 " s
    А куда 3й делася?
    Я брал 3 строки,появилось 2 :(
     
    #13709 N2kroot, 29 Jan 2010
    Last edited: 29 Jan 2010
  10. imajo.ati

    imajo.ati Banned

    Joined:
    21 Feb 2008
    Messages:
    232
    Likes Received:
    62
    Reputations:
    8

    попробуй добавить обработчики исключений рядом с break

    как-нибудь так:
    PHP:
    <?php
    $f 
    "clans/all.dat";
    $general = @file($f);
    $lines count($general);
    for ( 
    $i=0$i<$lines$i++ ) {
        list(
    $nenado,$nenado2,$nado)=explode('|'$general[$i]);
        if( (int)
    $nado 100 ){
            echo 
    'Остановилось, потому что $nado меньше 100<br>';
            break;
        }
        else if( 
    $nado > ($lines 100 $nado) ) {
            echo 
    "<table width=100% cellpadding=2 cellspacing=1 class=forumline>
            <tr>
            <th width=62% colspan=2 class=thCornerL height=25 nowrap=nowrap>\"
    $nado\"</th>
            <th width=28% class=thCornerR nowrap=nowrap>s</th>
            </tr>"
    ;
        }
        else {
            echo 
    '$nado не вывелось потому что $nado больше чем ($lines/100*$nado)<br>';
        }
        if(
    $i==$lines) { $dont_registr 'yes';   }
    }

     
  11. N2kroot

    N2kroot New Member

    Joined:
    25 Oct 2009
    Messages:
    75
    Likes Received:
    3
    Reputations:
    0
    Мне не надо остановку,мне надо просто вывести список по рейтингу..
    Весь,а вот если рейтинг равен 10(у новых записей так стандартно),то выводится токо первая запись(
     
  12. Banderos_Russia

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

    Joined:
    11 Jun 2007
    Messages:
    60
    Likes Received:
    18
    Reputations:
    0
    Подскажите скрипт, который не позволяет нажать на ссылку пока не нажмешь по другой ссылке. Пример: ссылка на скачивание "Скачать", когда на неё нажимаешь, появляется окно в котором нужно обязательно нажать на ссылку, тогда ссылка "Скачать" начинает перенаправлять куда нужно. Вот как то так)
     
  13. TDKronuS

    TDKronuS Member

    Joined:
    9 Nov 2009
    Messages:
    64
    Likes Received:
    13
    Reputations:
    3
    Banderos_Russia, а почему бы не сделать, что бы в этом новом окне и была ссылка на реальное "Скачать"?
     
  14. Vlad&slav

    Vlad&slav Member

    Joined:
    1 Jan 2009
    Messages:
    207
    Likes Received:
    41
    Reputations:
    9
    мб тупой вопрос, но если есть допустим слово q1w2e3r4 и нужно перевести его в масссив так чтобы каждая буква стала элементом масссива попорядку?
     
  15. #Wolf#

    #Wolf# Elder - Старейшина

    Joined:
    26 Mar 2008
    Messages:
    375
    Likes Received:
    166
    Reputations:
    16
    строка это уже и есть как бы массив:
    echo $str[0];

    или же можно так.
    PHP:
    echo '<pre>';
    $str='q1w2e3r4';
    $str=str_split($str);
    print_r($str);
    echo 
    '</pre>';
     
    #13715 #Wolf#, 30 Jan 2010
    Last edited: 30 Jan 2010
    1 person likes this.
  16. Jazz

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

    Joined:
    27 Sep 2008
    Messages:
    80
    Likes Received:
    2
    Reputations:
    -1
    нужна функция крторая вытащит из переменной строку по шаблону(например чтоб ватаскивал строку которая начинаяться с 123).
     
  17. GlooK

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

    Joined:
    20 Apr 2007
    Messages:
    172
    Likes Received:
    53
    Reputations:
    10
    регулярные выражения?
    PHP:
    if (preg_match('/^123(.*)/i'$mystring$match)) {echo 'Строка начинающаяся с 123: '.$match[0];}
    как то так.
     
  18. Nosfer

    Nosfer New Member

    Joined:
    10 Jan 2007
    Messages:
    16
    Likes Received:
    1
    Reputations:
    0
    Нужна помощь с рандомным перебором проксей, вот исхордный код

    PHP:


    $match
    ='#https?://([^/\s]+)\S+#i';
    preg_match_all($match$_POST['urls'], $matches);
    $matches array_values(array_combine($matches[1],$matches[0]));

    $mh curl_multi_init(); //Create multithread
    $handles = array();
    $useragent="Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1"// set user agent 


    //File with proxies to array
    $proxyarr file('http://localhost/checkproxy/proxies.txt'FILE_IGNORE_NEW_LINES);

    //echo $proxyarr[array_rand($proxyarr, 1)]."<br>";
     

    for ($i=0$i<sizeof($matches);$i++) {
    //Create URL
    $request 'someurl';
    // create a new single curl handle
    $ch curl_init();
    curl_setopt($chCURLOPT_URL$request);
    curl_setopt($chCURLOPT_HEADER0);
    curl_setopt($chCURLOPT_RETURNTRANSFERtrue);
    curl_setopt($chCURLOPT_TIMEOUT600);
    curl_setopt($chCURLOPT_USERAGENT$useragent); 
    // add this handle to the multi handle
    curl_multi_add_handle($mh,$ch);
    // put the handles in an array to loop this later on
    $handles[] = $ch;
    }
    // execute the multi handle
    $running=null;
    do {
    curl_multi_exec($mh,$running);
    // added a usleep for 0.25 seconds to reduce load
    usleep (25000);
    } while (
    $running 0);
    // get the content of the urls (if there is any)
    for($i=0;$i<count($handles);$i++)  {
    $output unserialize(curl_multi_getcontent($handles[$i]));

    //ban check
    if (!isset($output[ResultSet][totalResultsAvailable])) {
    echo 
    "<b>BAN</b><br>";
    echo 
    "$request";
    exit(
    0);
    }

    $result[$matches[$i]]=$output[ResultSet][totalResultsAvailable];
    curl_multi_remove_handle($mh,$handles[$i]);
    }


    Скрипт ходит по http и дергает URL, который отдает ему массив.
    Но сам ресурс имеет свойство периодически банить по IP, для этого и нужны прокси.
    Я бы с удовольствием воткнул в цикл
    Code:
    for($i=0;$i<count($handles);$i++) 
    нечто вроде
    Code:
    curl_setopt($ch, CURLOPT_PROXY, $proxyarr[array_rand($proxyarr, 1)]);
    и у меня даеже есть проверка на бан
    Code:
    if (!isset($output[ResultSet][totalResultsAvailable]))
    но как сделать так, чтобы в случае бана он сделал для этого же урл новую итерацию забора контента, но уже с новой рандомной проксей из того же массива $proxyarr? Стоит также учесть тот момент, что на следующей прокси результата тоже может не быть и прокси надо перебирать до победного.

    Я сам вижу лишь вариант в добавлением неуспешных элементов(урлов) в спец массив и повторным прогоном их с рандомными проксям, но решение кривовато.
     
    #13718 Nosfer, 30 Jan 2010
    Last edited: 30 Jan 2010
  19. mailbrush

    mailbrush Well-Known Member

    Joined:
    24 Jun 2008
    Messages:
    1,997
    Likes Received:
    996
    Reputations:
    155
    Это JS. Делаешь кнопку disabled, а в событии onClick ссылки делаешь кнопку enabled :)
     
  20. qW1zer

    qW1zer Member

    Joined:
    24 Aug 2009
    Messages:
    129
    Likes Received:
    15
    Reputations:
    5
    Banderos_Russia
    Вот пример с кнопкой,если надо примерно так же и с ссылкой будет:
    Code:
    <input type="checkbox" name="test" onclick="document.form.submit.disabled=false;" value="0">
    <input type="submit" name="submit" disabled value="Example" />
    
    -=-
    Мне тоже нужна помощь,в общем делаю авторизацию/регистрацию
    С регистрацией,все на ура,но вот с авторизацией проблема в частности с тем,что не получается проверить валидность пароля
    Вот такой у меня код:
    PHP:
    <?php
    include("uconfig.php");
      if(!isset(
    $_POST['usubmit']))
       {
        
    $ustatus='<font color="red">Форма входа пользователей</font>';
       }
      else
      {
      
    $login=$_POST['ulogin'];
       
    $password=md5($_POST['upassword']);
        
    $result mysql_query("SELECT * FROM user WHERE login = $login");
         
    $users mysql_num_rows($result);
          while(
    $row mysql_fetch_array($result)) {
          
    $mpassword=$row['password'];
           echo 
    $mpassword;
    }
    }
    ?>
    В uconfig.php подключение к mysql и еще мелкие опции
     
Thread Status:
Not open for further replies.