ANTICHAT.XYZ    VIDEO.ANTICHAT.XYZ    НОВЫЕ СООБЩЕНИЯ    ФОРУМ  
Баннер 1   Баннер 2
Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей. Здесь обсуждаются безопасность, программирование, технологии и многое другое. Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
Вернуться   Форум АНТИЧАТ > Программирование > PHP, PERL, MySQL, JavaScript
   
Ответ
 
Опции темы Поиск в этой теме Опции просмотра

ограничение на запись в файл php
  #1  
Старый 04.12.2007, 15:34
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
Question ограничение на запись в файл php

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

  #2  
Старый 04.12.2007, 15:44
Аватар для LolFEm
LolFEm
Участник форума
Регистрация: 08.09.2006
Сообщений: 194
Провел на форуме:
1627025

Репутация: 163
По умолчанию

Код скрипта где идёт передача через _post
 
Ответить с цитированием

  #3  
Старый 04.12.2007, 15:48
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Ограничение бесплатного хостинга
 
Ответить с цитированием

  #4  
Старый 04.12.2007, 16:26
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

вот блин. у себя на денвере запустил - попробовал запостить страницу гугла. в итоге он добавил ПОСЛЕДНИЕ 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  
Старый 04.12.2007, 16:32
Аватар для .:EnoT:.
.:EnoT:.
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме:
4832771

Репутация: 1916


По умолчанию

Цитата:
и последнее - это мой замучанный класс для записи в файл:
Вот:
Цитата:
$this->buffer = fread($t, "4096");
У тебя ограничение стоит до 4 байтов

http://ru2.php.net/manual/ru/function.fread.php
 
Ответить с цитированием

  #6  
Старый 04.12.2007, 16:36
Аватар для groundhog
groundhog
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме:
2238549

Репутация: 1318


Отправить сообщение для groundhog с помощью ICQ
По умолчанию

Хз... Попробуй fwrite на fputs поменять...
 
Ответить с цитированием

  #7  
Старый 04.12.2007, 16:55
Аватар для Дикс
Дикс
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме:
2209675

Репутация: 537


Отправить сообщение для Дикс с помощью ICQ
По умолчанию

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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Books PHP FRAGNATIC PHP, PERL, MySQL, JavaScript 186 21.02.2010 02:41
Безопасность в Php, Часть Iii k00p3r Чужие Статьи 0 11.07.2005 19:02
Защищаем Php. Шаг за шагом. k00p3r Чужие Статьи 0 13.06.2005 11:31



Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
 


Быстрый переход




ANTICHAT.XYZ