Подскажите почему не работает код

1. Удаленный (09.03.2014 / 08:58)
<?PHP
echo '<head><meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/></head><body>';


switch ($m) {

default:

echo "Редактирование файла<br/>";
$file = "r.txt";
$edit = fopen("$file","r+");
$dat = fread($edit,filesize($file));
echo '<form action="r.php?m=ok" method="POST">
<textarea cols="40" rows="10" name="edit" maxlength="1000000000">'.$dat.'</textarea><br/>';
echo '<input type="submit" name="submit" class="buttom" value="Coxpaнить">
</form>';

break;

case 'ok':

echo "Редактирование файла<br/>";
$edit = $_POST['edit'];
$file = "r.txt";
$write = fopen($file,"w+");
fwrite($write,$edit);
fclose($write);
echo "Дaнныe coxpaнeны<br/>";

break;

}


echo "</body></html>";
?>

Добавлено через 01:08 сек.
Хочу сделать редактирование файла, а он не редактируется и еще показывает ошибку http://ru-coin.ofsoo.ru/r.php

2. YouMobe (09.03.2014 / 09:49)
у тебя что за система windows или linux?, если windows попробуй указать в режиме мода "rb"
$edit = fopen("$file","rb");

3. Удаленный (09.03.2014 / 09:59)
2. YouMobe, поставил, ничего не изменилось. Помоему тут еще есть проблема с switch-case, только как ее исправить, понять не могу

4. sanya-rus (09.03.2014 / 10:12)
ты не через POST a через GET попробуй у меня так было

Добавлено через 01:32 сек.
$text = htmlspecialchars(trim($_GET['text']));


ДОбавь

5. Удаленный (09.03.2014 / 10:17)
4. sanya-rus, не помогло. Я не пойму, почему я меня не перекидывает сюда http://ru-coin.ofsoo.ru/r.php?m=ok , когда жму "сохранить"

Добавлено через 03:41 сек.
Там должно вылезти "данные сохранены", а выходит исходная страница с формой

6. YouMobe (09.03.2014 / 10:28)
Warning: fread(): Length parameter must be greater than 0 in /home/u161672528/public_html/r.php on line 12 - Он говорит что в файле r.txt 0 параметров, напиши туда что нибудь для интереса, видимо там хоть один байт должен быть..

7. Удаленный (09.03.2014 / 10:30)
6. YouMobe, да, а надо сделать чтобы небыло ошибки, даже если он пустой

8. YouMobe (09.03.2014 / 10:56)
наверно условие надо создать, щас попробую

9. Удаленный (09.03.2014 / 11:03)
8. YouMobe, ага, ну или на крайняк проверку, если форма пустая то предупреждение

10. YouMobe (09.03.2014 / 11:13)
попробуй так
        $filesize = filesize($file);
        $file = $filesize > 0 ? $filesize : 1;
        $dat = fread($edit,$file);

Добавлено через 06:05 сек.
В мануалах читал что в функции fread() во втором параметре не должен быть 0
Поэтому пришлось писать условие которое в любом случаи будет считывать файл r.txt, если он пустой то передаст 1 для того что придерживаться регламента функции fread()

11. Леха (09.03.2014 / 11:29)
перед свитчем напиши $m = @$_GET['m']);

12. Удаленный (09.03.2014 / 11:29)
помогло, спасибо

Добавлено через 07:10 сек.
10. YouMobe, вот так правильно будет?


<?PHP
echo '<html><head><meta http-equiv="content-type" content="application/xhtml+xml; charset=utf-8"/></head><body>';

$m = ($_GET['m']);

switch ($m) {

default:

echo "Редактирование файла<br/>";
$file = "r.txt";
$edit = fopen("$file","rb");
$filesize = filesize($file);
$file = $filesize > 0 ? $filesize : 1;
$dat = fread($edit,$file);
echo '<form action="r.php?m=ok" method="POST">
<textarea cols="40" rows="10" name="edit" maxlength="1000000000">'.$dat.'</textarea><br/>';
echo '<input type="submit" name="submit" class="buttom" value="Coxpaнить">
</form>';

break;

case 'ok':

echo "Редактирование файла<br/>";
$edit = htmlspecialchars($_POST['edit']);
$file = "r.txt";
$write = fopen($file,"w+");
fwrite($write,$edit);
fclose($write);
echo "Дaнныe coxpaнeны<br/>";

break;

}


echo "</body></html>";
?>

13. YouMobe (09.03.2014 / 12:03)
ну да. 'rb' - ставиться только если систем у тебя Windows, если Unix оставь 'r+'

14. Удаленный (09.03.2014 / 12:18)
13. YouMobe, а уязвимостей не будет в этом коде?

15. Андрей (09.03.2014 / 13:26)
$m = ($_GET['m']); нельзя так оставлять

16. Удаленный (09.03.2014 / 13:36)
15. Xwxwww, вот так пойдет?
$m = htmlspecialchars(($_GET['m']));

URL: https://visavi.net/topics/40298