Форум АНТИЧАТ

Форум АНТИЧАТ (https://forum.antichat.xyz/index.php)
-   PHP, PERL, MySQL, JavaScript (https://forum.antichat.xyz/forumdisplay.php?f=37)
-   -   ограничение на запись в файл php (https://forum.antichat.xyz/showthread.php?t=55008)

Дикс 04.12.2007 15:34

ограничение на запись в файл php
 
Почему скрипт на холме записывает тока 4 килобайта, а остальное обрезает? =\
данные передаются через Post, а потом пишутся в файл, безо всяких ограничений. В итоге получаю файл ровно 4.096 кб

LolFEm 04.12.2007 15:44

Код скрипта где идёт передача через _post

groundhog 04.12.2007 15:48

Ограничение бесплатного хостинга

Дикс 04.12.2007 16:26

вот блин. у себя на денвере запустил - попробовал запостить страницу гугла. в итоге он добавил ПОСЛЕДНИЕ 4.84 кб =\

вот код формы:
PHP код:

<form method="POST" name="addpostform">
<
input type="text" name="title" class="textinput" />&nbsp;
<
select name="cat" style="border: 1px solid black;">
    <
option value="0">other</option>
    <
option value="1">проги</option>
</
select>
<
textarea name="preview" id="pr"></textarea>
<
textarea name="body" id="post" ></textarea></p>
<
input type="submit" value="добавить пост" />
</
form

вот add.php:
PHP код:

<?php
if($_SERVER['REQUEST_METHOD'] == 'POST'){

if(
trim($_POST['title'])!= "" && trim($_POST['body']) != ""){
if((isset(
$_SESSION['body']) && $_SESSION['body'] != trim($_POST['body'])) || !isset($_SESSION['body'])){
$_SESSION['body'] = trim($_POST['body']);
$txt = new txtDB();
$filename date("H-i.d-m-y"time());

# add preview
if(isset($_POST['preview']) && (trim($_POST['preview']) != "")){
$preview nl2br(trim($_POST['preview']));
$txt->dir("post_preview");
$txt->writeToFile($filename$preview"w");
$txt->dir("posts");
}
# end

$txt->dir("posts");

$txt->createFile($filename);
$data nl2br(trim($_POST['body']));
$txt->writeToFile($filename$data"w");
$title chunk_split(substr(trim($_POST['title']), 060), 30"<br />");
// $form = substr("abcdef", 1, 3); // вернет "bcd"
if($_SESSION['admin'] == "deex")
$author 0;
else
$author 1;

$record date("H-i.d-m-y"time())."||".$title."||".$_POST['cat']."||".$author."\n";
$txt->writeToFile("posts.info"$record"a");
$status '<div style="float: left; padding-left: 20px; color: green; font-weight: bold;">Added</div>';
}else
$status '<div style="float: left; padding-left: 20px; color: #CC0000; font-weight: bold;">Post duplicated</div>';
}else
$status '<div style="float: left; padding-left: 20px; color: #CC0000; font-weight: bold;">All fields required</div>';
}
include(
"tpl/add_post.tpl.php");
?>

и последнее - это мой замучанный класс для записи в файл:
PHP код:

<?php
class txtDB {
var 
$path$buffer$rs$tmp$arr = Array();

// messages
function error($text){
echo 
"<p style='color: white; font-weight: bold;  background-color: #FF9D9D; padding: 3px;'>".$text."</p>";
}

function 
done($text){
echo 
"<p style='color: green; background-color: #DBFFCA; padding: 3px;'>".$text."</p>";
}

// init work dir
function dir($dirname){
    if(
file_exists($dirname))
        
$this->path $dirname."/";
        else
            if(
mkdir($dirname))
                
$this->path $dirname."/";
            else
                
error("Can`t create directory ".$dirname);
}

function 
createFile($file_name$mode="soft"){
if(
file_exists($this->path.$file_name)){
    if(
$mode != "rewrite"){
        
$this->error("file exists");
        return 
0;
        }
    elseif(
$mode == "rewrite"){
        
unlink($this->path.$file_name);
        
touch($this->path.$file_name);
        return 
1;
        }
}else{
        
touch($this->path.$file_name);
        return 
1;
        }
return 
0;
}

function 
writeToFile($file_name$data$mode="a"){
$data stripslashes($data);
if(
file_exists($this->path.$file_name)){
    if(
$mode == "w"){
    if(
$t fopen($this->path.$file_name"w")){
        
fwrite($t$data);
        
fclose($t);   }
    }else{
    if(
$t fopen($this->path.$file_name"a"))
        
fwrite($t$data);
        
fclose($t);
        }
}else{
    if(
$t fopen($this->path.$file_name"w")){
        
fwrite($t$data);
        
fclose($t);}
}
}

function 
readFromFile($file_name){
if(
file_exists($this->path.$file_name)){
$t fopen($this->path.$file_name"r");
while(!
feof($t))
$this->buffer fread($t"4096");
return 
$this->buffer;
}else
$this->error($this->path.$file_name." is not exists");
return 
0;
}

function 
dirList($dir=""$arr= array()){
if(
$dir != "")
$this->rs opendir($this->path.$dir."/");
else
$this->rs opendir($this->path);

while(
$this->tmp readdir($this->rs))
    if(
$this->tmp != "." && $this->tmp != "..")
        
$arr[] = $this->tmp;
    
closedir($this->rs);
    return  
$arr;
}
// end of class

function dateFormat($comm){
$comm explode("."$comm);
$time_m explode("-"$comm[0]);
$time $time_m[0].":".$time_m[1];

return  
$time."&nbsp;".$comm[1];
}
}
?>


.:EnoT:. 04.12.2007 16:32

Цитата:

и последнее - это мой замучанный класс для записи в файл:
Вот:
Цитата:

$this->buffer = fread($t, "4096");
У тебя ограничение стоит до 4 байтов

http://ru2.php.net/manual/ru/function.fread.php

groundhog 04.12.2007 16:36

Хз... Попробуй fwrite на fputs поменять...

Дикс 04.12.2007 16:55

увеличил лимит чтения.
всё работает.
на всякий случай заменил fwrite на fputs.
непонятно тока, почему на локалхосте он сохранял всё, но читал последний кусок файла, а на хосте сохранял лишь его первый кусок.


Время: 23:21