[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,193
    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($etag08) . '-' substr($etag87) . '-' substr($etag158);
        
    header('ETag: "' $etag '"');

        
    header('Accept-Ranges: bytes');
        
    header('Content-Length: ' . (filesize($filename)-$to+$from));
        if (
    $crheader($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 (
    $fromfseek($f$fromSEEK_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($f512000);
            
    $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,193
    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:
    811
    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,029
    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,193
    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 datae.gdata from SQLfrom 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.