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

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

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

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

    Joined:
    30 Aug 2007
    Messages:
    837
    Likes Received:
    267
    Reputations:
    59
    strpos('Opera/9.50 (Windows NT 5.1; U; en)', 'Opera') == 0
     
  2. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    из мпака 0.91
    PHP:
    function detect_browser($HTTP_USER_AGENT) {
    // Браузер и его версия
    if (eregi("(opera) ([0-9]{1,2}.[0-9]{1,3}){0,1}"$HTTP_USER_AGENT$match) || eregi("(opera/)([0-9]{1,2}.[0-9]{1,3}){0,1}"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Opera";
    $browser[version] = $match[2];
    }
    elseif (
    eregi("(konqueror)/([0-9]{1,2}.[0-9]{1,3})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Konqueror";
    $browser[version] = $match[2];
    }
    elseif (
    eregi("(lynx)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Lynx";
    $browser[version] = $match[2];
    }
    elseif (
    eregi("(links) \(([0-9]{1,2}.[0-9]{1,3})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Links";
    $browser[version] = $match[2];
    }
    elseif (
    eregi("(msie) ([0-9]{1,2}.[0-9]{1,3})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "MSIE";
    $browser[version] = $match[2];
    }
    elseif (
    eregi("(netscape6)/(6.[0-9]{1,3})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Netscape";
    $browser[version] = $match[2];
    }
    elseif (
    eregi("(mozilla)/([0-9]{1,2}.[0-9]{1,3})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Netscape(mozilla)";
    $browser[version] = $match[2];
    if (
    eregi("(firefox)/([0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2}.[0-9]{1,2})"$HTTP_USER_AGENT$match)) {
    $browser[name] = "Firefox";
    $browser[version] = $match[2];}


    }
    else {
    $browser[name] = "Unknown";
    $browser[version] = "Unknown";
    }

    // OS
    if (eregi("linux"$HTTP_USER_AGENT)) $browser[os] = "Linux";
    elseif (
    eregi("win32"$HTTP_USER_AGENT)) $browser[os] = "Windows";
    elseif ((
    eregi("(win)([0-9]{2})"$HTTP_USER_AGENT$match)) || (eregi("(windows) ([0-9]{2})"$HTTP_USER_AGENT$match))) $browser[os] = "Windows ".$match[2];
    elseif (
    eregi("(winnt)([0-9]{1,2}.[0-9]{1,2}){0,1}"$HTTP_USER_AGENT$match)) $browser[os] = "Windows NT ".$match[2];
    elseif (
    eregi("(windows nt)( ){0,1}([0-9]{1,2}.[0-9]{1,2}){0,1}"$HTTP_USER_AGENT$match)) $browser[os] = "Windows NT ".$match[3];
    elseif (
    eregi("mac"$HTTP_USER_AGENT)) $browser[os] = "Macintosh";
    elseif (
    eregi("freebsd"$HTTP_USER_AGENT)) $browser[os] = "FreeBSD";
    else 
    $browser[os] = "Unknown";
    if (
    eregi("(sv1)"$HTTP_USER_AGENT)) $browser[os] = "Windows NT 5.1 SP2";

    return 
    $browser;
    }
     
  3. anakreon

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

    Joined:
    19 Mar 2006
    Messages:
    30
    Likes Received:
    3
    Reputations:
    0
    Здравствуйте.
    Есть web-сервер
    Есть сервер базы данных oracle на соседней машине
    Как можно организовать подключение к базе?
     
  4. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Как заархивировать файл, используя системный вызов, так как параметр max_execution_time = 30 не позволяет отработать скрипту до конца. (его поменять нельзя)
    PHP:
    $handle_in fopen("file.txt""r");
    $handle_out gzopen("file.gz""w")
    while (!
    feof($handle_in)) // пока не достигнут конец файла архивируем файл
      
    {
      
    $buffer fgets($handle_in);
     
    gzwrite($handle_out,$buffer);
      }
    fclose($handle_in); // закрываем  файл (источник)
    gzclose ($handle_out);  // закрываем архивный файл (приёмник)
    - если файл источник большой - то скрипт не успевает отработать до конца файла.

    PS Linux 2.6.9-55.0.12
     
    #2364 -=lebed=-, 20 Mar 2008
    Last edited: 20 Mar 2008
  5. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    А почему fwrite, а не gzwrite, gzputs?
     
  6. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Угу, согласен - ошибка, конечно gzwrite, исправил, но в 30 сек неукладывается...
     
    #2366 -=lebed=-, 20 Mar 2008
    Last edited: 20 Mar 2008
  7. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Code:
    $ wc -lc file.txt
     13713242 154744102 file.txt
    $ cat php gzopen.php
    
    <?php
      $handle_in = fopen("file.txt", "r");
      $handle_out = gzopen("file.gz", "w");
      while (!feof($handle_in)) // пока не достигнут конец файла архивируем файл
      {
        $buffer = fgets($handle_in);
        gzwrite($handle_out,$buffer);
      }
      fclose($handle_in); // закрываем  файл (источник)
      gzclose ($handle_out);  // закрываем архивный файл (приёмник)
    ?>
    
    $ time php gzopen.php
    real    1m27.121s
    user    1m22.449s
    sys     0m1.588s
    $ cat gzopen2.php
    
    <?php
      $max_size = memory_get_usage () * 0.8;
      $handle_in = fopen("file.txt", "r");
      $handle_out = gzopen("file.gz", "w");
      while (!feof($handle_in)) // пока не достигнут конец файла архивируем файл
      {
        $buffer = fread ($handle_in, $max_size);
        gzwrite($handle_out,$buffer);
      }
      fclose($handle_in); // закрываем  файл (источник)
      gzclose ($handle_out);  // закрываем архивный файл (приёмник)
    ?>
    
    $ time php gzopen2.php
    real    0m36.477s
    user    0m34.346s
    sys     0m1.016s
    $ 
    
     
    1 person likes this.
  8. -=lebed=-

    -=lebed=- хэшкрякер

    Joined:
    21 Jun 2006
    Messages:
    3,804
    Likes Received:
    1,960
    Reputations:
    594
    Поясни плиз, почему коэффицент именно 0.8 ?
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Я разные подставлял, этот был последним)
     
  10. !{ra!{e/\/

    !{ra!{e/\/ Banned

    Joined:
    27 Aug 2007
    Messages:
    98
    Likes Received:
    50
    Reputations:
    3
    Хочу накрутить голосование
    Code:
    POST http://ххххх.ru/ххх/хх/ххх/vote.php HTTP/1.0
    Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*
    Accept-Language: ru
    Content-Type: application/x-www-form-urlencoded
    Host: хххххххх.ru
    Content-Length: 16
    Pragma: no-cache
    Connection: Keep-Alive
    
    form%5Bgirl%5D=1
    это запрос отправляемый моим браузером при голосовании....
    как мне написать php код.....

    так?
    Code:
    <?
    if ( ( $io = fsockopen( "www.ххххх.ru", 80, $errno, $errstr, 5 ) ) !== false )
    {
    	$send  = "POST http://ххххх.ru/хххх/ххх/ххх/vote.php HTTP/1.0\r\n";
    	$send .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
    	$send .= "Accept-Language: ru\r\n";
    	$send .= "Content-Type: application/x-www-form-urlencoded\r\n";
    	$send .= "Host: ххххх.ru\r\n";
    	$send .= "Content-Length: 16\r\n";
    	$send .= "Pragma: no-cache\r\n";
    	$send .= "Connection: Keep-Alive\r\n\r\n";
    	$send .= "form%5Bgirl%5D=1";
    
    	fputs ( $io, $send );
    }
    else echo "НЕ могу подключится";
    
    ?>
    вроди бы все правильно(((
    пишет ошибку
    Code:
    Warning: fsockopen() [function.fsockopen]: unable to connect to www.ххххх.ru:80 (Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера. ) in Z:\home\localhost\www\vike_flood.php on line 2
    НЕ могу подключится
    Из за чего может быть моя ошибка?
     
  11. NOmeR1

    NOmeR1 Everybody lies

    Joined:
    2 Jun 2006
    Messages:
    1,068
    Likes Received:
    783
    Reputations:
    213
    2!{ra!{e/\/
    Там же написано: Попытка установить соединение была безуспешной, т.к. от другого компьютера за требуемое время не получен нужный отклик, или было разорвано уже установленное соединение из-за неверного отклика уже подключенного компьютера.
     
    1 person likes this.
  12. .:EnoT:.

    .:EnoT:. Сексуальное чудовище

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    5вообще маловато будет =\
    Вообще я бы сделал типо того:
    PHP:
    <?php
    $io 
    fsockopen("ххххх.ru"80$errno$errstr30);
    if (
    $io)
    {
        
    $send  "POST http://ххххх.ru/хххх/ххх/ххх/vote.php HTTP/1.0\r\n";
        
    $send .= "Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, application/x-shockwave-flash, application/vnd.ms-excel, application/vnd.ms-powerpoint, application/msword, */*\r\n";
        
    $send .= "Accept-Language: ru\r\n";
        
    $send .= "Content-Type: application/x-www-form-urlencoded\r\n";
        
    $send .= "Host: ххххх.ru\r\n";
        
    $send .= "Content-Length: 16\r\n";
        
    $send .= "Pragma: no-cache\r\n";
        
    $send .= "Connection: Keep-Alive\r\n\r\n";
        
    $send .= "form%5Bgirl%5D=1";

        
    fwrite($io$send);
        while (!
    feof($io))
        {
           
    $line fgets($io1024);
           echo 
    $line.'<br/>';
        }
        
    fclose($io);
        
    }
    else 
    {
        echo 
    "НЕ могу подключится";
    }    

    ?>
    но для накрутки имхо лучше с проксями. Или Номерадин щас скажет что я опять не в теме?))))
     
    2 people like this.
  13. AlexV

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

    Joined:
    29 Feb 2008
    Messages:
    173
    Likes Received:
    550
    Reputations:
    81
    Приветствую Всех! Извините, я пока ламер в вопросах веб-програмирования - и хотел бы поинтересоваться:
    1_Хочу создать свой форум на phpbb 3 - движок уже есть, хост есть, там фтп-ка, как туда залить!? File-zilla подойдет!? Как там настроить права админа - т.е. сначала надо в движке все редактировать или же после того как залью - можно будет с ним работать!? как правильно устанавливать скрипты!? Опять же через фтп заливку или там будет доступно!?
    2_А если я хочу создать сайт на другом хостинге, там тоже фтп-заливка - что для этого нужно!? Какой движок использовать!?
    Хм... вроде пока все.
     
  14. ToniKapuchon

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

    Joined:
    26 Feb 2006
    Messages:
    153
    Likes Received:
    45
    Reputations:
    -1
    1. Настраиваешь ftp клиент.. пишешь, там логин и пароль... заливаешь всю папку со скриптами... потом идёшь.... на что-то типа instal.php!! указываешь там данные базы, полученные от хостера, всё admin.php! Напиши хостинг, что-ли... narod.ru?
    2. Движок для сайта - тут где то есть обзор на форуме платных и бесплатных кмс... выбирай любую!!
     
  15. ~X3RiX~

    ~X3RiX~ Banned

    Joined:
    14 Mar 2008
    Messages:
    22
    Likes Received:
    7
    Reputations:
    -5
    и не забудь удалить install.php
     
    3 people like this.
  16. Phm.phx

    Phm.phx Banned

    Joined:
    12 Jan 2008
    Messages:
    73
    Likes Received:
    232
    Reputations:
    1
    насчет хостинга скорее всего будет locallhost если БД на том же хосте находится.

    по поводу FTP лучше все-таки использовать cuteFTP

    и последний,чисто коммерческий совет: размещать форум где нибудь на yourdomain.ru/forum или forum.yourdomain.ru
    т.е. в графе "путь_к_форуму" обозначать не главную страницу, а не просто yourdomain.ru

    и самое главное на файл config.php установить права доступа (chmod) 444 или 676
     
    #2376 Phm.phx, 21 Mar 2008
    Last edited: 21 Mar 2008
  17. Painkiller

    Painkiller New Member

    Joined:
    4 May 2007
    Messages:
    4
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    Хотелось бы увидеть мнения по навигации для заметок из базы желательно простой как три рубля. (и с комментами по ходу кода)
    Заметок из базы выводится на страницу по 3 штуки .
    вид примерно хотелось бы видеть такой:
    пред 1 2 3 последняя
     
  18. Dimi4

    Dimi4 Чайный пакетик

    Joined:
    19 Mar 2007
    Messages:
    750
    Likes Received:
    1,046
    Reputations:
    291
    Постраничная навигация на файлах

    Автор: IT-студия SoftTime (softtime.ru)

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

    Постраничная навигация
    Code:
    <?php
    
      // Имя файла
    
      $filename = "text.txt";
    
      // Число позиций на странице
    
      $pnumber = 3;
    
      // Открываем файл для чтения
    
      $bufer = file_get_contents($filename);
    
    
    
      // Находим все строки при помощи регулярного выражения
    
      preg_match_all("#([\d]+) ([^\n]+)(\n|$)#U",
    
                     $bufer, 
    
                     $out,
    
                     PREG_PATTERN_ORDER);
    
      // Формируем промежуточный массив
    
      for($i = 0; $i < count($out[1]); $i++)
    
      {
    
        $temp[] = trim($out[2][$i]);
    
      }
    
    
    
      // Проверяем передан ли номер текущей страницы
    
      if(isset($_GET['page'])) $page = $_GET['page'];
    
      else $page = 1;
    
      // Число страниц
    
      $total = count($temp);
    
      $number = (int)($total/$pnumber);
    
      if((float)($total/$pnumber) - $number != 0) $number++;
    
    
    
      $start = (($page - 1)*$pnumber + 1);
    
      $end = $page*$pnumber + 1;
    
      if($end > $total) $end = $total;
    
    
    
      // Выводим содержимое страниц
    
      for($i = $start; $i < $end; $i++)
    
      {
    
        echo $temp[$i]."<br>";
    
      }
    
    
    
      // Постраничная навигация
    
      for($i = 1; $i <= $number; $i++)
    
      {
    
        // Если это произвольная страница
    
        if($i != $number)
    
        {
    
          if($page == $i)
    
          {
    
            echo "[".(($i - 1)*$pnumber + 1)."-".$i*$pnumber."]&nbsp;";
    
          }
    
          else
    
          {
    
            echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
    
                 (($i - 1)*$pnumber + 1)."-".$i*$pnumber."]</a>&nbsp;";
    
          }
    
        }
    
        // Если это последняя страница заменяем последнюю цифру 
    
        // максимальным числом позиций в массиве $temp
    
        else
    
        {
    
          if($page == $i)
    
          {
    
            echo "[".(($i - 1)*$pnumber + 1)."-".($total - 1)."]&nbsp;";
    
          }
    
          else
    
          {
    
            echo "<a href=$_SERVER[PHP_SELF]?page=".$i.">[".
    
                 (($i - 1)*$pnumber + 1)."-".($total - 1)."]</a>&nbsp;";
    
          }
    
        }
    
      }
    
    ?>
    
    _http://php.su/articles/?cat=examples&page=057
     
  19. RedBull@12

    RedBull@12 Elder - Старейшина

    Joined:
    5 Nov 2006
    Messages:
    121
    Likes Received:
    21
    Reputations:
    5
    всем привет.
    возникла немного не понятная проблема.
    скрипт выполняет некоторые действия и посылает запросы POST/GET.
    POST работает на УРА!
    а вот GET творит что-то не понятное, при запуске выполняет все действия, но думает минимум 10-20 секунд. вот функция POST запроса
    PHP:
    function post($address,$request,$cookies,$referer) {
        global 
    $host,$port,$user_agent,$login,$pass;
        
    $hash "";
        
    $fsite fsockopen($host,$port,$error_number,$error_description,10);
        
    $ffile fopen("hash","w+");
        if (
    $fsite) {
            
    stream_set_blocking($fsite,FALSE);
            
    fputs($fsite,"POST $address HTTP/1.1\r\n");
            
    fputs($fsite,"Accept-Language: ru\r\n"); 
            
    fputs($fsite,"Content-Type: application/x-www-form-urlencoded\r\n");
            
    fputs($fsite,"Host: $host\r\n"); 
            
    fputs($fsite,"Referer: $referer\r\n"); 
            
    fputs($fsite,"Cookie: $cookies\r\n");
            
    fputs($fsite,"User-Agent: $user_agent\r\n"); 
            
    fputs($fsite,"Proxy-Connection: Keep-Alive\r\n"); 
            
    fputs($fsite,"Content-Length: ".strlen($request)."\r\n");
            
    fputs($fsite,"\r\n");
            
    fputs($fsite,"$request\r\n");
            
    fputs($fsite,"\r\n");
            
    $i 0;
            while (!
    feof($fsite)) {
                
    $hash_test fgets($fsite1024);
                
    fputs($ffile,$hash_test);
                
    $i++;
            }
            
    fclose($fsite);
            return 
    1;
        }
    }
    а вот GET функция
    PHP:
    function get($address,$cookies,$referer) {
        global 
    $host,$port,$user_agent,$login,$pass;
        
    $hash "";
        
    $fsite fsockopen($host,$port,$error_number,$error_description,10);
        
    $ffile fopen("hash","w+");
        if (
    $fsite) {
            
    stream_set_blocking($fsite,FALSE);
            
    fputs($fsite,"GET $address HTTP/1.1\r\n");
            
    fputs($fsite,"Accept-Language: ru\r\n"); 
            
    fputs($fsite,"Content-Type: application/x-www-form-urlencoded\r\n");
            
    fputs($fsite,"Host: $host\r\n"); 
            
    fputs($fsite,"Referer: $referer\r\n"); 
            
    fputs($fsite,"Cookie: $cookies\r\n");
            
    fputs($fsite,"User-Agent: $user_agent\r\n"); 
            
    fputs($fsite,"Proxy-Connection: Keep-Alive\r\n"); 
            
    fputs($fsite,"\r\n");
            
    $i 0;
            while (!
    feof($fsite)) {
                
    $hash_test fgets($fsite1024);
                
    fputs($ffile,$hash_test);
                
    $i++;
            }
            
    fclose($fsite);
            return 
    1;
        }
    }
    причем когда смотрю по времени создания hash файла я понимаю что скрипт уже все сделал...но при этом висит..и в ответ либо выдает нужный мне ерзультат но с большим опозданием, либо вообще ничего. как будет-то скрипт прирывается по функции exit(); хотя данной функции вообще ни в одном скрипте нету.
     
  20. echobyte

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

    Joined:
    7 Mar 2008
    Messages:
    463
    Likes Received:
    190
    Reputations:
    50
    GET есть ограниченый метод, забей на него
     
Thread Status:
Not open for further replies.