Antichat снова доступен.
Форум Antichat (Античат) возвращается и снова открыт для пользователей.
Здесь обсуждаются безопасность, программирование, технологии и многое другое.
Сообщество снова собирается вместе.
Новый адрес: forum.antichat.xyz
 |
ограничение на запись в файл php |

04.12.2007, 15:34
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
ограничение на запись в файл php
Почему скрипт на холме записывает тока 4 килобайта, а остальное обрезает? =\
данные передаются через Post, а потом пишутся в файл, безо всяких ограничений. В итоге получаю файл ровно 4.096 кб
|
|
|

04.12.2007, 15:44
|
|
Участник форума
Регистрация: 08.09.2006
Сообщений: 194
Провел на форуме: 1627025
Репутация:
163
|
|
Код скрипта где идёт передача через _post
|
|
|

04.12.2007, 15:48
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Ограничение бесплатного хостинга
|
|
|

04.12.2007, 16:26
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
вот блин. у себя на денвере запустил - попробовал запостить страницу гугла. в итоге он добавил ПОСЛЕДНИЕ 4.84 кб =\
вот код формы:
PHP код:
<form method="POST" name="addpostform">
<input type="text" name="title" class="textinput" />
<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']), 0, 60), 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." ".$comm[1];
}
}
?>
|
|
|

04.12.2007, 16:32
|
|
Постоянный
Регистрация: 29.05.2007
Сообщений: 852
Провел на форуме: 4832771
Репутация:
1916
|
|
и последнее - это мой замучанный класс для записи в файл:
Вот:
$this->buffer = fread($t, "4096");
У тебя ограничение стоит до 4 байтов
http://ru2.php.net/manual/ru/function.fread.php
|
|
|

04.12.2007, 16:36
|
|
Познавший АНТИЧАТ
Регистрация: 12.05.2007
Сообщений: 1,235
Провел на форуме: 2238549
Репутация:
1318
|
|
Хз... Попробуй fwrite на fputs поменять...
|
|
|

04.12.2007, 16:55
|
|
Познавший АНТИЧАТ
Регистрация: 16.04.2006
Сообщений: 1,488
Провел на форуме: 2209675
Репутация:
537
|
|
увеличил лимит чтения.
всё работает.
на всякий случай заменил fwrite на fputs.
непонятно тока, почему на локалхосте он сохранял всё, но читал последний кусок файла, а на хосте сохранял лишь его первый кусок.
|
|
|
|
 |
|
Здесь присутствуют: 1 (пользователей: 0 , гостей: 1)
|
|
|
|