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
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); ?>
что лучше? $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; }
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-фишка?
Угу, угу, возьмите файл метров эдак на 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)
именно. =) в общем, это не особо важно, т.к. размер file будет несколько метров. хотел узнать, как правильнее с точки зрения хорошо шарящих в языке людей, но меня почти никто не понял =( je0n как сказал тоха, у тебя magic_quotes = On если хочешь без автоэкранирования, либо выключай magic_quotes, либо юзай http://ru.php.net/manual/en/function.stripslashes.php перед использованием переменных
inlanger там не в сокетах дело, а в ssl upd: http://ru2.php.net/manual/en/function.fsockopen.php#75388
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
[R]eD через ассоциативные массивы. делаешь в цикле $a[trim(fgets($file_handle))]++; потом находишь максимальное значение и выводишь его ключ. вот еще глянь http://ru.php.net/manual/en/book.array.php а вообще это проще сделать в экселе)
ввожу данные в БД через textarea. передаваемое значение состоит из нескольких строк. фильтрую передаваемое значение функцией mysql_escape_string. когда достаю данные из буду, при выводе использую htmlspecialchars(). но получается так, что когда достаю данные из БД они сливаются в одну строку. Что мне делать? nl2br() не предлагать ибо выводить данные я собираюсь в туже textarea.то есть нужно оставить все \r и \n. как быть?