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

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

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

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    PHP:
    function downloadFile($filename, $mimetype='application/octet-stream') {
        if (!
    file_exists($filename)) die('Файл не найден');

        
    $from=$to=0; $cr=NULL;

        if (isset(
    $_SERVER['HTTP_RANGE'])) {
            
    $range=substr($_SERVER['HTTP_RANGE'], strpos($_SERVER['HTTP_RANGE'], '=')+1);
            
    $from=strtok($range, '-');
            
    $to=strtok('/'); if ($to>0) $to++;
            if (
    $to) $to-=$from;
            
    header('HTTP/1.1 206 Partial Content');
            
    $cr='Content-Range: bytes ' . $from . '-' . (($to)?($to . '/' . $to+1):filesize($filename));
        } else    
    header('HTTP/1.1 200 Ok');

        
    $etag=md5($filename);
        
    $etag=substr($etag, 0, 8) . '-' . substr($etag, 8, 7) . '-' . substr($etag, 15, 8);
        
    header('ETag: "' . $etag . '"');

        
    header('Accept-Ranges: bytes');
        
    header('Content-Length: ' . (filesize($filename)-$to+$from));
        if (
    $cr) header($cr);

        
    header('Connection: close');
        
    header('Content-Type: ' . $mimetype);
        
    header('Last-Modified: ' . gmdate('r', filemtime($filename)));
        
    $f=fopen($filename, 'r');
        
    header('Content-Disposition: attachment; filename="' . basename($filename) . '";');
        if (
    $from) fseek($f, $from, SEEK_SET);
        if (!isset(
    $to) or empty($to)) {
            
    $size=filesize($filename)-$from;
        } else {
            
    $size=$to;
        }
        
    $downloaded=0;
        while(!
    feof($f) and !connection_status() and ($downloaded<$size)) {
            echo 
    fread($f, 512000);
            
    $downloaded+=512000;
            
    flush();
        }
        
    fclose($f);
    }
    http://webmastak.com/article.aspx?id=322
     
  2. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    PHP:
    <body bgcolor="#c0c0c0">
    <h1><center><font color=#400040><B>Файлы загруженные на сервер:</B></font></center></h1>
    <table width="100%" cellpadding="1" cellspacing="1" border="2">
    <tr>
    <td width="22%"><b><font color=yellow>Имя файла:</font></b></td>
    <td width="22%"><b><font color=yellow><center>Коментарий:</center></font></b></td>
    <td width="14%"><b><font color=yellow><center>Скачать:</center></font></b></td>
    </tr>
    <?php
        error_reporting
    (E_ALL & ~E_NOTICE);

        echo 
    "<link rel=\"stylesheet\" type=\"text/css\" href=\"style.css\">";

        
    $part    = isset($_GET['part'])    ?    $part * 10    :    '';
        
    $ppart    = $part;
        
    $ppart2 = $part + 10;
        
    $n        = 0;
        
    $g        = 0;
        
    $fill    = 'x.txt';
        
    $test    = file($fill);
        
    $size    = sizeof($test);
        if(
    $part > $size) $part = 0;
        
    $num    = $size - $part;

        do
        {
            
    $data = explode(":::", $test[$num]);

            if (!empty(
    $data[0]))
            {
                echo  
    '<tr><td>Жертва:<br>'.$data[0].'</td><td><center><font color=green><B>'.$data[1].'</center></B></font></td><td><center><font color=blue><B><a href='.$data[2].'>Скачать</a></center></B></font></td>';
            }

            
    $num3 = $num + 10;
            if (
    $g == '10')
            {
                echo 
    '</table>';

                
    $num4     = $num3 + $part;
                
    $num4     = $num4 / 10;
                
    $num4     = explode(":::", $num4);
                
    $n        = 0;
                echo 
    '<Li><a href="index.php">Главная</a> ';
                do
                {
                    
    $nn = $n + 1;
                    echo 
    ' [<a href="news.php?part='.$n.'">'.$nn.'</a>] ';
                    
    $n++;
                }
                while(
    $n < $num4[0]);
                exit;
            }

            
    $g++;
            
    $num--;
            
    $n++;
        } while (
    $n < $size);
    ?>
     
    1 person likes this.
  3. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    что лучше?
    $f = fopen('file','r');
    $count = count(file('file'));
    for($i = 0; $i < $count; $i++) {
    echo fgets($f);
    }
    fclose($f);

    или

    $f = file('file');
    foreach($f as $val) {
    echo $val;
    }
     
    2 people like this.
  4. Kaimi

    Kaimi Well-Known Member

    Joined:
    23 Aug 2007
    Messages:
    1,732
    Likes Received:
    809
    Reputations:
    231
    Лучше
    echo fread(fopen('file', 'r'), filesize('file'));

    ))
     
    _________________________
    1 person likes this.
  5. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    php как-то непонятно себя ведет:
    PHP:
    if(isset($_POST['string']) && $_POST['string']!="")
    {
        
    $string=$_POST['string'];
        
    $query="insert into checking_strings(strings) values('$string')";
        
    mysql_query($query);
    }
    если в $_POST['string'] подставить строку с кавычкой, то теоретически должна выскачить ошибка БД, НО она не выскакивает. запрос успешно появляется в БД с этой кавычкой. будто бы я сделал mysql_escape_string. а если я делаю mysql_escape_string, то в БД появляется сточка с экранированным кавычками (например: 1234\'\').то есть оно как то само экранируется. Как это понимать? у меня последняя версия денвера.
    Я туплю или это какая-то новая php-фишка?
     
  6. +toxa+

    +toxa+ Smack! SMACK!!!

    Joined:
    16 Jan 2005
    Messages:
    1,674
    Likes Received:
    1,028
    Reputations:
    1,228
    magic_quotes = On ?

    echo file_get_contents('file') если уж на то пошло)
     
    _________________________
    #4546 +toxa+, 7 Aug 2008
    Last edited: 7 Aug 2008
  7. banned

    banned Banned

    Joined:
    20 Nov 2006
    Messages:
    3,324
    Likes Received:
    1,194
    Reputations:
    252
    Насколько я понял ему надо на строчки разбить
     
  8. BlackSun

    BlackSun Banned

    Joined:
    1 Apr 2007
    Messages:
    989
    Likes Received:
    1,168
    Reputations:
    446
    <? readfile('file'); ?>
     
  9. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Угу, угу, возьмите файл метров эдак на 100 и попробуйте его заюзать с помощью функций file* =/ С точки зрения скорости обработки лучше код
    PHP:
    $f = fopen ('file', 'r');
    while (!
    feof ($f)) {
      echo 
    fgets($f);
    }
    fclose ($f);
    и не будет
    Code:
    PHP Fatal error:  Allowed memory size of 8388608 bytes exhausted (tried to allocate 74814555 bytes) in script.php on line 3
    Allowed memory size of 8388608 bytes exhausted (tried to allocate 256 bytes)
    
     
    1 person likes this.
  10. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    В чем проблема? Увеличь размер выделяемого буфера в php.ini до нужного.
     
  11. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    именно. =)
    в общем, это не особо важно, т.к. размер file будет несколько метров. хотел узнать, как правильнее с точки зрения хорошо шарящих в языке людей, но меня почти никто не понял =(


    je0n как сказал тоха, у тебя magic_quotes = On
    если хочешь без автоэкранирования, либо выключай magic_quotes, либо юзай
    http://ru.php.net/manual/en/function.stripslashes.php
    перед использованием переменных
     
    #4551 Piflit, 7 Aug 2008
    Last edited: 7 Aug 2008
  12. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Как составить запрос сокетом на https-узел?
    Просит чтото включить...

     
  13. inlanger

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

    Joined:
    7 Jan 2007
    Messages:
    985
    Likes Received:
    283
    Reputations:
    27
    Твой хостер выключил поддержку сокетов. Попробуй курл
     
  14. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    inlanger там не в сокетах дело, а в ssl

    upd:
    http://ru2.php.net/manual/en/function.fsockopen.php#75388
     
    #4554 Piflit, 7 Aug 2008
    Last edited: 7 Aug 2008
  15. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    magic_quotes_gpc On
    magic_quotes_runtime Off
    magic_quotes_sybase Off
     
  16. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    PHP:
    ; Magic quotes for incoming GET/POST/Cookie data.
    magic_quotes_gpc = On

    ; Magic quotes for runtime-generated data, e.g. data from SQL, from exec(), etc.
    magic_quotes_runtime = Off

    ; Use Sybase-style magic quotes (escape ' with '' instead of \').
    magic_quotes_sybase = Off
    чтобы у тебя ничего не экранировалось, поставь magic_quotes_gpc Off
     
    1 person likes this.
  17. Piflit

    Piflit Banned

    Joined:
    11 Aug 2006
    Messages:
    1,249
    Likes Received:
    585
    Reputations:
    31
    [R]eD через ассоциативные массивы. делаешь в цикле
    $a[trim(fgets($file_handle))]++;
    потом находишь максимальное значение и выводишь его ключ. вот еще глянь
    http://ru.php.net/manual/en/book.array.php

    а вообще это проще сделать в экселе)
     
    1 person likes this.
  18. 5triker

    5triker Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    62
    Likes Received:
    41
    Reputations:
    1
    PHP:
    <?
    $file=file("file.txt");
    $a=max(array_count_values($file));
    echo 
    $file[$a];
    ?>
     
    1 person likes this.
  19. je0n

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

    Joined:
    14 May 2006
    Messages:
    345
    Likes Received:
    96
    Reputations:
    41
    ввожу данные в БД через textarea. передаваемое значение состоит из нескольких строк. фильтрую передаваемое значение функцией mysql_escape_string.
    когда достаю данные из буду, при выводе использую htmlspecialchars(). но получается так, что когда достаю данные из БД они сливаются в одну строку.
    Что мне делать? nl2br() не предлагать ибо выводить данные я собираюсь в туже textarea.то есть нужно оставить все \r и \n. как быть?
     
  20. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    А без htmlspecialchars() какой результат?
     
Thread Status:
Not open for further replies.