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

Discussion in 'PHP' started by Kaimi, 7 May 2015.

  1. Octavian

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

    Joined:
    8 Jul 2015
    Messages:
    506
    Likes Received:
    101
    Reputations:
    25
    У тебя репа -5 и за этого?
     
    Veil likes this.
  2. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Загружаю файл через
    PHP:
    <?php
    $uploaddir 
    '/var/www/uploads/';
    $uploadfile $uploaddir basename($_FILES['userfile']['name']);

    echo 
    '<pre>';
    if (
    move_uploaded_file($_FILES['userfile']['tmp_name'], $uploadfile)) {
        echo 
    "good\n";
    } else {
        echo 
    "bad\n";
    }

    echo 
    'Debug:';
    print_r($_FILES);

    print 
    "</pre>";

    ?>
    В браузере получаю вывод:
    Code:
    good
    Debug:Array
    (
        [userfile] => Array
            (
                [name] => проверка.docx
                [type] => application/vnd.openxmlformats-officedocument.wordprocessingml.document
                [tmp_name] => /tmp/phpqv4VOd
                [error] => 0
                [size] => 14144
            )
    
    )
    На сервере имею:
    Code:
    user@test111:/var/www/uploads$ ls
    ''$'\320\277\321\200\320\276\320\262\320\265\321\200\320\272\320\260''.docx'
    
    Как сделать нормальное имя файла при получении?
    Спасибо.

    p.s.: гружу из под винды, сервер на linux
    p.p.s.: php7.2-fpm + nginx
     
    #282 #colorblind, 24 Aug 2018
    Last edited: 24 Aug 2018
  3. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    Ну дайте инфу, проект встал из-за такой мелочи(
    Знал бы пыху, сам пофиксил.
     
  4. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    PHP:
    ...
    $filename iconv('CP1251','UTF-8'$_FILES['userfile']['name']);
    $uploadfile $uploaddir basename($filename);
    ...
    Попробуй так, если не получится будем дальше думать.
     
    #colorblind and dmax0fw like this.
  5. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    К сожалению это не дало никакого результата. Может нужны еще какие-то входные данные?
    Проблема оказалась в самой ОС. Англоязычная Ubuntu Server 18.04 не поддерживает русскую локаль из коробки. Извините, что потревожил, спасибо за помощь.
     
    #285 #colorblind, 24 Aug 2018
    Last edited: 24 Aug 2018
    crlf likes this.
  6. Muracha

    Muracha Member

    Joined:
    30 Jul 2011
    Messages:
    153
    Likes Received:
    10
    Reputations:
    0
    Есть код на Yii2,который принимает на себя авторизационные данные пользователя и выводит их на экран:
    Так выводит email
    Code:
    . Html::beginForm(['/site/logout'], 'post')
    . Html::submitButton(
        'Выйти (' . Yii::$app->user->identity->email . ')',
        ['class' => 'btn btn-link']
    )
    . Html::endForm()
    
    А так логин вк
    Code:
    . Html::beginForm(['/site/logout'], 'post')
    . Html::submitButton(
        'Выйти (' . Yii::$app->user->identity->name . ')',
        ['class' => 'btn btn-link']
    )
    . Html::endForm()
    
    Как правильно составить запрос, чтобы он выводит либо email либо name.
    При выборе одного из параметров - другой указывается как выйти()
     
  7. Nufai

    Nufai Member

    Joined:
    5 Nov 2017
    Messages:
    56
    Likes Received:
    9
    Reputations:
    0
    Я тут занимаюсь парсингом html регулярками и уже чувствую, что он близко
    В общем, есть что-то типа
    Code:
    ...
    <table>
    ...
    </table>
    ...
    <table>
    ...
    </table>
    
    Как можно выцепить в отдельные переменные все с первого и второго тэйбла?
     
    #287 Nufai, 28 Sep 2018
    Last edited: 28 Sep 2018
  8. ol1ver

    ol1ver Active Member

    Joined:
    22 Jul 2011
    Messages:
    237
    Likes Received:
    155
    Reputations:
    0
    используйте http://php.net/manual/en/function.preg-match-all.php затем ковыряйте массив
     
  9. kristinka_sk

    kristinka_sk Member

    Joined:
    6 Aug 2018
    Messages:
    28
    Likes Received:
    6
    Reputations:
    0
    Na hostinge (php+curl) script
    Ego zadacha rabotat' 24/7, a on prerivaetsia cherez minut 5
    Kak est sposobi ego postoyanno zapuskat'?
     
  10. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    Попробуйте в начале скрипта вызывать операцию
    set_time_limit(0);
    И запускать скрипт по крону
     
  11. kristinka_sk

    kristinka_sk Member

    Joined:
    6 Aug 2018
    Messages:
    28
    Likes Received:
    6
    Reputations:
    0
    Eto est' ini_set('max_execution_time', 0); set_time_limit(0); ni_set('memory_limit', '9999G');

    chet ne prokatilo - vidimo na crontab net privilegiy, eshe varianti?
    (scripti na shellah, mozno ispolzovat server)
     
    #291 kristinka_sk, 24 Oct 2018
    Last edited: 24 Oct 2018
  12. rudi

    rudi Active Member

    Joined:
    3 Jun 2010
    Messages:
    492
    Likes Received:
    186
    Reputations:
    5
    а может скрипт вываливается сам из-за ошибки в коде? тестировал где нить его работу?
     
  13. kristinka_sk

    kristinka_sk Member

    Joined:
    6 Aug 2018
    Messages:
    28
    Likes Received:
    6
    Reputations:
    0
    net, no on statichno rabotaet (urls sohraniaet obrabotannie v log), prosto ostanavlivaetsia
    hostingi vidimo obrezaut max_execution_time

    hotel php botnet iz shelov sobrat' - pododno email releyam
    i vprincipe daze esli hostingi rezut max_time, to udalenno mozno zapuskat' kazdie 3 minuti vse odnotipnie bot_script (nu ili skolko tam default limit)
     
  14. Nufai

    Nufai Member

    Joined:
    5 Nov 2017
    Messages:
    56
    Likes Received:
    9
    Reputations:
    0
    Есть специальные сервисы, которые вроде как запускают ваш пхп скрипт через промежутки времени. Я знаю лишь cron-job.org
    Но не уверен, что это подойдет в вашем случае. Можно попробовать разные уловки, например, запускать скрипту самого себя
     
  15. jakonda1001

    jakonda1001 New Member

    Joined:
    17 Mar 2016
    Messages:
    178
    Likes Received:
    3
    Reputations:
    0
    скажите как реализовать

    есть 1 файл со строками
    11111111:ababababa

    есть 2 файл со строками
    cccccsdssss:11111111

    нужно сделать 3 файл
    cccccsdssss:ababababa
     
  16. joelblack

    joelblack Reservists Of Antichat

    Joined:
    6 Jul 2015
    Messages:
    244
    Likes Received:
    450
    Reputations:
    145
    PHP:
    <?php
    $files 
    = ['text1.txt','text2.txt'];
        foreach(
    $files as $f){
            
    $alltxt[]= file_get_contents($f);
        }
    file_put_contents('text3.txt'explode(':'$alltxt[1])[0].':'.explode(':'$alltxt[0])[1]);
    Code:
    cccccsdssss:ababababa
     
  17. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    PHP:
    <?php
    $f1 
    file('file1.txt'FILE_IGNORE_NEW_LINES);
    $f2 file('file2.txt'FILE_IGNORE_NEW_LINES);
    $f3 = [];

    foreach(
    $f2 as $k => &$v)
        
    $f3[] = strstr($v':'true).strstr($f1[$k], ':');

    file_put_contents('file3.txt'implode(PHP_EOL$f3));
    ?>
     
  18. jakonda1001

    jakonda1001 New Member

    Joined:
    17 Mar 2016
    Messages:
    178
    Likes Received:
    3
    Reputations:
    0
    блин не то, это все понятно
    в 1 файле много строк где
    11111:abcs
    22222:2abcd
    во 2 файле:
    dcbsss:22222
    gghhj:11111
    нужно сделать 3 файл
    abcs:gghhj
    2abcd:dcbsss
    тоесть находим общий ключ например 11111 в обоих файлах и склеиваем тогда abcs из 1ого файла и : gghhj 2ого файла
     
  19. crlf

    crlf Green member

    Joined:
    18 Mar 2016
    Messages:
    683
    Likes Received:
    1,513
    Reputations:
    460
    только тебе и понятно. в первоначальном ТЗ ни слова про общий ключ!

    PHP:
    //$f1 = file('file1.txt', FILE_IGNORE_NEW_LINES);
    //$f2 = file('file2.txt', FILE_IGNORE_NEW_LINES);
    $f1 = ['11111:abcs','22222:2abcd'];
    $f2 = ['dcbsss:22222','gghhj:11111'];
    $db1 $db2 $db3 = [];

    foreach(
    $f1 as $s){
       list(
    $k$v) = explode(':'$s);
       
    $db1[$k] = $v;
    }

    foreach(
    $f2 as $s){
       list(
    $k$v) = explode(':'$s);
       
    $db2[$v] = $k;
    }

    foreach(
    $db1 as $k => $v)
       if(isset(
    $db2[$k]))
          
    $db3[] = $v.':'.$db2[$k];

    file_put_contents('file3.txt'implode(PHP_EOL$db3));
     
    #299 crlf, 9 Nov 2018
    Last edited: 9 Nov 2018
  20. jakonda1001

    jakonda1001 New Member

    Joined:
    17 Mar 2016
    Messages:
    178
    Likes Received:
    3
    Reputations:
    0
    Спасибо тебе огромное, чет я долго мучился(