ограничение на запись в файл php

Discussion in 'PHP' started by Дикс, 4 Dec 2007.

  1. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    Почему скрипт на холме записывает тока 4 килобайта, а остальное обрезает? =\
    данные передаются через Post, а потом пишутся в файл, безо всяких ограничений. В итоге получаю файл ровно 4.096 кб
     
  2. LolFEm

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

    Joined:
    8 Sep 2006
    Messages:
    160
    Likes Received:
    52
    Reputations:
    5
    Код скрипта где идёт передача через _post
     
  3. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Ограничение бесплатного хостинга
     
  4. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    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];
    }
    }
    ?>
     
  5. .:EnoT:.

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

    Joined:
    29 May 2007
    Messages:
    803
    Likes Received:
    559
    Reputations:
    50
    Вот:
    У тебя ограничение стоит до 4 байтов

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

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Хз... Попробуй fwrite на fputs поменять...
     
  7. Дикс

    Дикс Elder - Старейшина

    Joined:
    16 Apr 2006
    Messages:
    1,194
    Likes Received:
    227
    Reputations:
    26
    увеличил лимит чтения.
    всё работает.
    на всякий случай заменил fwrite на fputs.
    непонятно тока, почему на локалхосте он сохранял всё, но читал последний кусок файла, а на хосте сохранял лишь его первый кусок.