forum.boolean.name

forum.boolean.name (http://forum.boolean.name/index.php)
-   PHP / MySQL (http://forum.boolean.name/forumdisplay.php?f=135)
-   -   Функция fopen с аргументом "r+" - с чем кушать??? (http://forum.boolean.name/showthread.php?t=12517)

Reizel 17.05.2010 23:46

Функция fopen с аргументом "r+" - с чем кушать???
 
Собственно, вскрываю файл с r+, а он мне его перезаписывает...Странно, в справке написано что устанавливает позицию в начало файла, а он мне его так жестоко...
<?
$message=$_POST['Msg'];

$f=fopen("texts/news.txt","r+");
fwrite($f,htmlspecialchars($message).chr(13).chr(1 0));
fclose($f);
$f=file("texts/news.txt");
$count=count($f);
echo("<script language='JavaScript'>alert('$count');</script>");
if ($count>10)
{
echo("<script language='JavaScript'>alert('$count больше 10');</script>");
$fs=fopen("texts/news.txt",w);
for($k=0;$k<9;$k++)
{
fwrite($fs,chr(13).chr(10).$f[$k]);
}
fclose($fs);
}
echo("<meta http-equiv=refresh content=0;url=index.php>") ;
?>


можт я где туплю?

devolonter 18.05.2010 19:24

Ответ: Функция fopen с аргументом "r+" - с чем кушать???
 
Все правильно. r+ устанавливает позицию в начало файла и соответственно перезаписывает его. Если тебе нужно дописать файл, то используй опцию а+ (устанавливает позицию в конец файла)

Доп. информация: http://ru2.php.net/manual/en/function.fopen.php

P.S Уточняю, происходит запись поверх старых данных, т.е. если новых данных окажется меньше то в режиме r+ у тебя будут новые данные и остаток от старых. как-то так)

P.P.S. Вместо echo("<meta http-equiv=refresh content=0;url=index.php>") ; лучше использовать header('location: /index.php'), правда нужно помнить что заголовки устанавливаются до первого вывода чего-либо на экран, т.е. до первого вызова echo или print


Часовой пояс GMT +4, время: 06:23.

vBulletin® Version 3.6.5.
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Перевод: zCarot