Способы сохранения текста из формы

Тема в разделе "PHP программирование", создана пользователем -, 17 сен 2009.

  1. Гость

    Есть скрипт, который сохраняет текст из textarea в файлы, форматы которых выбираются выпадающим списком. Нумерация файлов начинается со значения, которое записано в файле "index".

    Нужно сделать так, чтобы была возможность выбора (например, выпадающим списком) сохранять в новый файл(w+) или дописывать в последний созданный(a+). Есть какие идеи? Подскажите, пожалуйста.


    Код (Text):
    <?php
    $source = $_POST['source'];//имя textarea, из которого берется текст
    $triad = $_POST['triad'];//расширение, с которым будет сохранен файл (в выпадающем списке)
    $fh = fopen("./SMI/index",'r');//в этом файле находится число, с которого начинается нумерация
    $i = fgets($fh);
    fclose($fh);
    $fh = fopen("./SMI/index",'w');
    $i++;
    fputs($fh, $i);
    fclose($fh);
    $file = $i.".".$triad;
    $Saved_file = fopen("./SMI/".$file, 'w+');//директория для записи
    fwrite($Saved_file, $source);
    fclose($Saved_file);
    header("Location: index.php");
    ?>
     
  2. nws

    nws Гость

    if ($some_flag) {
    //запись в новый файл
    } else {
    //запись в существующий файл
    }

    при записи не забывай экранировать тэги
     
  3. Гость

    Примерно так:

    Код (Text):
    <?php
    // Принимаем и обрабатываем сообщение из TEXTAREA
    if(isset($_POST[source])&& !empty($_POST[source])){
    $source = trim($_POST[source]);
    // Удаляем ненужные переводы строк
    $source = preg_replace("/[\r\n]{2,}/i", "\n", $source);
    // Ограничение количества вводимых символов
    $source = substr($source,0,1024);

    if(isset($_POST[add])){
    // Нажата кнопка добавления записи к последнему сохранённому файлу
    // Считываем имя последнего сохранённого файла из last.txt
    if(file_exists('last.txt')){
    // Открываем файл для чтения и записи в режиме r+t
    // некоторые версии FreeBSD имеют проблемы с режимом а+
    // и не могут установить указатель на начало файла при помощи fseek
    $f1=fopen('last.txt', 'r+t') or die("Невозможно открыть файл");
    // Блокируем файл (блокировка с запретом "подвисания")
    while(!flock($f1, LOCK_EX+LOCK_NB))
    {
    sleep(1);   // ждём одну секунду
    }
    // Файл заблокирован, можно производить чтение и запись
    // считываем имя последнего сохранённого файла
    $file=explode("\n",fread($f1,filesize('last.txt')));
    if(file_exists($file[0])){
    $f2=fopen($file[0], 'r+t') or die("Невозможно открыть файл");
    // Блокируем файл (блокировка с запретом "подвисания")
    while(!flock($f2, LOCK_EX+LOCK_NB))
    {
    sleep(1);   // ждём одну секунду
    }
    $position = filesize($file[0]);
    fseek($f2, $position-1);
    fwrite ($f2,$source."\n");
    fclose($f1);
    fclose($f2);
    }
    }else{
    echo "Отсутствует файл содержащий информацию о последнем сохранённом файле.";
    }
    }
    if(isset($_POST[save])){
    // Нажата кнопка добавления записи в новый файл
    switch ($_POST[triad]) {
    case 0: $triad='txt'; break;
    case 1: $triad='xml'; break;
    case 2: $triad='smi'; break;
    case 3: $triad='doc'; break;
    default: $triad='txt';
    }
    // Считываем счётчик нумерации из count.txt
    if(file_exists('count.txt')){
    $f1=fopen('count.txt', 'r+t') or die("Невозможно открыть файл");
    // Блокируем файл (блокировка с запретом "подвисания")
    while(!flock($f1, LOCK_EX+LOCK_NB))
    {
    sleep(1);   // ждём одну секунду
    }
    // Файл заблокирован, можно производить чтение и запись
    // считываем счётчик
    $n=explode("\n",fread($f1,filesize('last.txt')));
    $new=$n[0]+1;
    $file=($new).".$triad";
    ftruncate($f1, 0); // очищаем файл
    fseek($f1, 0, SEEK_SET); // переходим в начало файла
    fwrite ($f1, $new); // записываем строку из массива   
    if(!file_exists($file)){
    fclose(fopen($file, "a+t"));
    $f2=fopen($file, 'r+t') or die("Невозможно открыть файл");
    fputs ($f2,$source."\n");
    fclose($f2);
    fclose($f1);
    if(file_exists('last.txt')){
    $f3=fopen('last.txt', 'r+t') or die("Невозможно открыть файл");
    // Блокируем файл (блокировка с запретом "подвисания")
    while(!flock($f3, LOCK_EX+LOCK_NB))
    {
    sleep(1);   // ждём одну секунду
    }
    ftruncate($f3, 0); // очищаем файл
    fseek($f3, 0, SEEK_SET); // переходим в начало файла
    fwrite ($f3, $file); // записываем строку из массива
    fclose($f3);
    }else{
    echo "Отсутствует файл содержащий информацию о последнем сохранённом файле.";
    }  
    }else{
    echo "Фйл с таким именем уже существует";
    exit;
    }
    }else{
    echo "Отсутствует файл счётчика.";
    }  
    }
    }else{
    echo "Отсутствует текстовое сообщение";
    }
    ?>
     
  4. Гость

    Примерно так:
     
Загрузка...

Поделиться этой страницей