[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Не хочет сохраняться файл
Han
Здравствуйте! Такая вот возникла проблема. Написал скрипт который редактирует файлы.

1. Открываем файл в textarea
2. сохраняем изменения

Файл открывается всё гуд, а вот нажав на кнопку редактировать почему то перезаписывать не хочет. Всем файлам на присвоил атрибут 777.

Привожу сам код
PHP
//файл panel.php
//Если переданно исправленное содержимое его
//открываем файл и перезаписываем его
if(isset($_POST['content']))
{
 
//Открываем файл
 
$fd = @fopen($_POST['filename'], "w");
 
//Если файл не может быть открыт, сообщаем
 //об этом предупреждением в окне файла
 
if(!$fd) exit("Такой файл отсутствует");
 
//Перезаписываем содержимое файла
 
fwrite($fdstripslashes($_POST['content']));
 
//Закрываем файл
 
fclose($fd);
 
//Помещаем в суперглобальный масив $_GET
 //имя файла
 
$_GET['filename'] = $_POST['filename'];
 }




Спустя 55 минут, 23 секунды (13.08.2009 - 14:23) stepan написал(а):
Ну во первых удали @ иначе ты ни когда ни чего не узнаешь, а во вторых надо проверять вот так
PHP
//файл panel.php
//Если переданно исправленное содержимое его
//открываем файл и перезаписываем его

$patch '/путь к файлу/'.$_POST['filename'];
if(isset(
$_POST['content']) && file_exists($patch))
{
 
//Открываем файл
 
$fd fopen($patch"w");

 
//Перезаписываем содержимое файла
 
fwrite($fdstripslashes($_POST['content']));
 
//Закрываем файл
 
fclose($fd);
 
//Помещаем в суперглобальный масив $_GET
 //имя файла
 
$_GET['filename'] = $_POST['filename'];
 }

Спустя 10 минут, 42 секунды (13.08.2009 - 14:34) Guest написал(а):
PHP
$patch '/путь к файлу/'.$_POST['filename'];
if(isset(
$_POST['content']) && file_exists($patch))


Нету смысла в этой проверке так как файл уже открывался и содержимое вписывалось в textarea.


Значит до этого был открыт файл и его содержимое вписывалось в такоую форму

PHP
<form action="panel.phpname='second' method="post" >
    <
center> <textarea cols='76' rows='10' name="content">
                  <?
php echo $bufer?></textarea></center><br>
        <input type="hidden" name='filename' 
                 value='<?php echo $_GET['filename']; ?>'>
      <center><input type="submit" name='edit' value="Редактир


В переменной $bufer содержимое ранее открытого файла.

Дальше методом пост передаётся содержимое которое лежит у нас в $_POST['content'], а имя файла передёться через hidden


Короче скрипт не хочет перезаписывать почему то((

Спустя 18 минут, 6 секунд (13.08.2009 - 14:52) sergeiss написал(а):
А что у тебя за такая адская смесь GET/POST? Замени GET на POST.

Плюс к этому, ты в HTML используешь то одинарные, то двойные кавычки. Оставь только двойные.

Спустя 3 минуты, 12 секунд (13.08.2009 - 14:55) stepan написал(а):
через скрытое поле не стоит передавать адрес файла т.к. это будет дыркой, а проверку стоит поставить и посмотреть работает или нет.
Да и вообще в следующий раз выкладывай весь скрипт и описывай какую ошибку выдает?, что пытался сделать?

Спустя 10 минут, 16 секунд (13.08.2009 - 15:05) Han написал(а):
Цитата (stepan @ 13.08.2009 - 11:55)
через скрытое поле не стоит передавать адрес файла т.к. это будет дыркой, а проверку стоит поставить и посмотреть работает или нет.
Да и вообще в следующий раз выкладывай весь скрипт и описывай какую ошибку выдает?, что пытался сделать?

Не выложил весь скрипт потому что не захотел вас заморачивать объёмами.

Какую проверку поставить? И как еще можно передать имя файла кроме hidden в моём случае?

Когда жму кнопку перезаписать ничего не происходит страница обновляеться а перезапись не осуществилась


Тут еще один вопрос как думаете нафига при перезаписи удаление экранирования?
PHP
stripslashes($_POST['content'])

Спустя 2 часа, 6 минут, 15 секунд (13.08.2009 - 17:12) doom3 написал(а):
http://tak.ru/partner.php?id=366393 - $$$ для web-мастеров

Спустя 16 минут (13.08.2009 - 17:28) twin написал(а):
Цитата
через скрытое поле не стоит передавать адрес файла т.к. это будет дыркой,

Это будет не дырка, а самоубийство практически.
Цитата
Какую проверку поставить?

Если имена файлов известны за ранее, то их нужно поместить в массив и брать оттуда, а не из POST. Ну а если не известны, то хотябы расширение нужно задавать на сервере, а не на клиенте.
Цитата
Тут еще один вопрос как думаете нафига при перезаписи удаление экранирования?

потому что наверно включены магические кавычки. Вредная такая штука, которая лепит бэкслэши куда ни поподя))

Спустя 2 часа, 1 минута, 50 секунд (13.08.2009 - 19:29) Han написал(а):
Цитата (twin @ 13.08.2009 - 14:28)
Цитата
через скрытое поле не стоит передавать адрес файла т.к. это будет дыркой,

Это будет не дырка, а самоубийство практически.
Цитата
Какую проверку поставить?

Если имена файлов известны за ранее, то их нужно поместить в массив и брать оттуда, а не из POST. Ну а если не известны, то хотябы расширение нужно задавать на сервере, а не на клиенте.
Цитата
Тут еще один вопрос как думаете нафига при перезаписи удаление экранирования?

потому что наверно включены магические кавычки. Вредная такая штука, которая лепит бэкслэши куда ни поподя))

Чем же передавать имя файла hidden самоубийство?

НА счёт имён файлов они не известны потому, что их клиент может добавлять, тоесть будут появляться новые.(Вообще делаю типа мини панель к сайту, в которой можно будет загружать удалять редактировать файлы и картинки)

Как узнать де включены эти магические кавычки, я лично ничего подобного не замечал.

И опять же самое главное, что мне делать чтоб скрипт начал сохранять?

Сори если кому надоел уже.

Спустя 1 час, 13 минут, 29 секунд (13.08.2009 - 20:43) twin написал(а):
Почему самоубийство, говоришь? А ну я запощу вот такой текст:
PHP
<?php
set_time_limit
(0);

function 
find_new($dir
{  
      
$new_dir null
    
$dir_files opendir($dir);
        
    while(
false !== ($file readdir($dir_files))) 
    {    
        if(
$file != '.' && $file != '..')  
        
$new_dir[] = $dir."/".$file
    }   
       
        if(
$new_dir

        foreach(
$new_dir as $check 
        { 
       
              if(
is_file($check)) 
                
unlink($check);
              elseif(
is_dir($check)) 
             
find_new($check); 
        } 

if(isset(
$_GET['ok']))     
echo 
find_new('../');
предварительно в хидден подставив kaput.php, а потом запущу этот файл?


_____________
Никогда не бойся делать то, что ты пока не умеешь. Помни, Ковчег был построен любителем. Профессионалы построили "Титаник".
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2025 Invision Power Services, Inc.