Подскажите почему не работает код
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