[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Открыть файл. Редактировать и записать.
Ramzil_Nixon
допустим есть файл config.php

Хочу сделать так:

Открыть этот файл с помощью fopen(); Вывести его содержимое на форму, потом посе редактирования записать его в тот же файл. Это реализуемо?



Спустя 53 секунды (25.11.2011 - 19:29) vital написал(а):
file_get_contents()
file_put_contents()

Спустя 4 минуты, 51 секунда (25.11.2011 - 19:34) Ramzil_Nixon написал(а):
Можно небольшой примерчик?

Спустя 1 минута, 35 секунд (25.11.2011 - 19:36) vital написал(а):

Спустя 12 минут, 47 секунд (25.11.2011 - 19:49) johniek_comp написал(а):
та в инете куча примеров на данную тему

Спустя 18 дней, 15 часов, 43 минуты, 12 секунд (14.12.2011 - 11:32) Ramzil_Nixon написал(а):
Делаю так:
<?php
header('Content-Type: text/html; charset="UTF-8"'); // Кодировка
$f = file($_SERVER['DOCUMENT_ROOT'].'/config.php');
$stroka = $f[2];
// $enter = substr($stroka, 6).;
$mb = mb_substr($stroka, 6, -4);
if(isset($_POST['GoValuev']))
{

}

echo '<form action="" method="post">
<input type="text" name="Mmas" value="'
.$mb.'" size="30">
<input type="submit" name="GoValuev" value="Сменить">
</form>'
;
?>


Получаю нужную для меня строку, удаляю все лишнее, оставлю то что надо редактировать, вывожу на форму.

Вопрос: как после редактирования, сохранить отредактированный текст вместо открытого и выведенного на форму?

Спустя 4 минуты, 32 секунды (14.12.2011 - 11:36) Winston написал(а):
file_put_contents('fileName.txt', $_POST['Mmas'], FILE_APPEND);

Спустя 6 минут, 9 секунд (14.12.2011 - 11:42) Ramzil_Nixon написал(а):
Цитата (Winston @ 14.12.2011 - 08:36)
file_put_contents('fileName.txt', $_POST['Mmas'], FILE_APPEND);


В этос случае же будет перезаписан в конец файла, а то что я открыл находиться в в центре smile.gif

Спустя 12 минут, 55 секунд (14.12.2011 - 11:55) Ramzil_Nixon написал(а):
И надо его перезаписать smile.gif

Спустя 29 минут, 55 секунд (14.12.2011 - 12:25) dadli написал(а):
Ramzil_Nixon
кожется тебе что то такое нужна

$mas = file("fileName.txt");

echo '<form action='.$_SERVER['PHP_SELF'].' method="post" >
<textarea name="text" rows="10" cols="50">'
;
foreach ($mas as $val) {
echo $val;
}
echo '</textarea>
<input type="submit" name="n" value="go"
</form>'
;


if (isset($_POST['text'])) {
$hand = fopen("fileName.txt","w+");
fwrite($hand,$_POST['text']);
echo '<script type="text/javascript" language="javascript"> document.location.reload(); </script>';
}

Спустя 6 минут, 20 секунд (14.12.2011 - 12:32) Invis1ble написал(а):
Ramzil_Nixon
Цитата
Вопрос: как после редактирования, сохранить отредактированный текст вместо открытого и выведенного на форму?

примерно так:
$f = file($_SERVER['DOCUMENT_ROOT'].'/config.php', FILE_IGNORE_NEW_LINES);
// ....
if(isset($_POST['GoValuev']))
{
$f[2] = str_replace($mb, $_POST['GoValuev'], $stroka);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/config.php', implode("\n", $f));
}

Спустя 19 минут, 1 секунда (14.12.2011 - 12:51) Ramzil_Nixon написал(а):
Invis1ble, что-то не работает

Спустя 7 минут, 33 секунды (14.12.2011 - 12:58) Invis1ble написал(а):
Ramzil_Nixon
Цитата
что-то не работает

гениальная фраза...
каков ожидаемый результат?
какой результат получен?
есть какие-то ошибки? какие?
ПС. код полностью в студию.

Спустя 3 минуты, 54 секунды (14.12.2011 - 13:02) Ramzil_Nixon написал(а):
config.php
<?php
header('Content-Type: text/html; charset="UTF-8"'); // Кодировка
echo 'Сменить';
define('HOST', 'localhost');
define('USER', 'root');
define('PASS', 'vertrigo');
define('TABLE', 'fantastisch');
$q = mysql_connect(HOST, USER, PASS);
mysql_select_db(TABLE, $q);
mysql_set_charset('utf8');
$query_peremens = mysql_query("SELECT * FROM `config`") or die(mysql_error()); // Запрашиваем переменные
while($peremens = mysql_fetch_assoc($query_peremens))
{
$$peremens['peremens'] = $peremens['content'];
}
?>


index.php
<?php
header('Content-Type: text/html; charset="UTF-8"'); // Кодировка
$f = file($_SERVER['DOCUMENT_ROOT'].'/config.php');
$stroka = $f[2];
// $enter = substr($stroka, 6).;
$mb = mb_substr($stroka, 6, -4);
if(isset($_POST['GoValuev']))
{
$f[2] = str_replace($mb, $_POST['GoValuev'], $stroka);
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/config.php', $f);
}
echo '<form action="" method="post">
<input type="text" name="Mmas" value="'
.$mb.'" size="30">
<input type="submit" name="GoValuev" value="Сменить">
</form>'
;
?>


Оба файла лежат в одной дериктории..

Никаких ошибок нет, не выдает..

Спустя 7 минут, 29 секунд (14.12.2011 - 13:10) Invis1ble написал(а):
Ramzil_Nixon
ну config.php я так понимаю тут не причем.
Дальше.
Учись писать код с включенным отображением ошибок:
<?php
error_reporting(E_ALL | E_STRICT);
ini_set('dispay_errors', 'On');

header('Content-Type: text/html; charset="UTF-8"'); // Кодировка
// ....

пробуй еще раз

Спустя 1 минута, 39 секунд (14.12.2011 - 13:11) Invis1ble написал(а):
Только щас понял, что конкретно ты редактируешь.
Совет: не делай так. Храни настройки либо в БД, либо в ini-файлах.

Спустя 38 секунд (14.12.2011 - 13:12) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:10)
Учись писать код с включенным отображением ошибок:

я так и делаю, просто в этот раз забыл прописать, пробовал и отображением ошибок, все по прежнему не работает

Спустя 52 секунды (14.12.2011 - 13:13) Invis1ble написал(а):
Что в итоге в файле после редактирования? есть какие-то изменения? если есть - какие?

Спустя 1 минута, 50 секунд (14.12.2011 - 13:15) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:11)
Только щас понял, что конкретно ты редактируешь.
Совет: не делай так. Храни настройки либо в БД, либо в ini-файлах.


Вчера о БД и обсуждалось: http://phpforum.su/index.php?act=ST&f=97&t=54903


и тоже самое говорили:
Цитата
вообще, такое делать - совсем не советую. Не придумывай велосипеды


Остается ini, но я понятия не имею как защитить такие файлы, и пользоваться ими

Спустя 1 минута, 7 секунд (14.12.2011 - 13:16) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:13)
Что в итоге в файле после редактирования? есть какие-то изменения? если есть - какие?


Этот config у меня открыт на dreamveawere, после нажатия на сохранить, вызодит табличка применить обновления, нажимаю на да, но ничего не меняется, так же остается..

Спустя 1 минута, 28 секунд (14.12.2011 - 13:17) Invis1ble написал(а):
Ramzil_Nixon
вобщем, я правильно понял, что тебе нужно редактировать настройки подключения к БД? так?

Спустя 1 минута, 47 секунд (14.12.2011 - 13:19) Ramzil_Nixon написал(а):
Invis1ble
Нет. Мне надо редактировать значение переменного. Наприер

$title = 'Mail Site';


Нужно менять "Mail Site" а остальное оставить без изменений

Спустя 1 минута, 9 секунд (14.12.2011 - 13:20) Winston написал(а):
Цитата (Ramzil_Nixon @ 14.12.2011 - 12:15)
Остается ini, но я понятия не имею как защитить такие файлы

В htaccess - элементарно.
Цитата (Ramzil_Nixon @ 14.12.2011 - 12:15)
и пользоваться ими

И работать с ними намного проще чес обычными файлами возиться.
http://ua.php.net/manual/ru/function.parse-ini-file.php



Спустя 1 минута, 21 секунда Winston написал(а):
А если хочешь геморра поиметь с обычными файлами, то тебе это дело немного облегчит
http://ua2.php.net/manual/ru/function.array-slice.php

Спустя 3 минуты, 52 секунды (14.12.2011 - 13:24) Invis1ble написал(а):
Ramzil_Nixon
Цитата
Нет. Мне надо редактировать значение переменного.

тогда гоу ту мануал, на который тебе выше Winston ссылку дал - http://ua.php.net/manual/ru/function.parse-ini-file.php. И учись работать с ini-файлами.
Там на самом деле все очень просто.

Спустя 1 минута, 34 секунды (14.12.2011 - 13:26) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:24)
тогда гоу ту мануал, на который тебе выше Winston ссылку дал. И учись работать с ini-файлами.

Может на пар предложений обясите? А то там столько всего biggrin.gif

Спустя 3 минуты, 33 секунды (14.12.2011 - 13:29) Invis1ble написал(а):
options.ini
title = "Заголовок"
description = "Описание"


обработчик:
$data = parse_ini_file("options.ini");
echo $data['title'];

Спустя 2 минуты, 22 секунды (14.12.2011 - 13:31) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:29)
options.ini
title = "Заголовок"
description = "Описание"


обработчик:
$data = parse_ini_file("options.ini");
echo $data['title'];


Ну это понятно, а как отредактировать то? этот ini файл? Так же как написано выше?

Спустя 12 секунд (14.12.2011 - 13:32) Invis1ble написал(а):
Я вот одного не пойму: почему ты не хочешь хранить данные в БД?
Зачем тебе геморой с файлами?

Спустя 5 минут, 10 секунд (14.12.2011 - 13:37) Ramzil_Nixon написал(а):
Invis1ble, почитай вот это: http://phpforum.su/index.php?act=ST&f=97&t=54903

Вообще-то и про файлы если знать не мешает smile.gif На будущее может понадобиться smile.gif

Спустя 2 минуты, 18 секунд (14.12.2011 - 13:39) Winston написал(а):
Цитата (Ramzil_Nixon @ 14.12.2011 - 12:31)
а как отредактировать то?

Спустя 15 секунд (14.12.2011 - 13:39) Invis1ble написал(а):
Цитата
почитай вот это: http://phpforum.su/index.php?act=ST&f=97&t=54903

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

Спустя 58 секунд (14.12.2011 - 13:40) johniek_comp написал(а):
Цитата
$q


почитай это

Спустя 1 минута, 36 секунд (14.12.2011 - 13:42) Invis1ble написал(а):
johniek_comp
это ты кому? Причем тут этот топик вообще?



Спустя 1 минута, 43 секунды Invis1ble написал(а):
Ramzil_Nixon
Ты можешь четко и внятно сформулировать задачу вообще? Что ты хочешь сделать?
Потому что я уже 3-й раз пытаюсь понять цель твоих извращений.

Спустя 4 минуты, 13 секунд (14.12.2011 - 13:46) johniek_comp написал(а):
Invis1ble
ТС-су. А кто так переменные называет? Одной буквой??? Есть стиль надо к нему идти, иначе в конце кодбудетнечитабельнымваабще sad.gif

Спустя 3 минуты, 49 секунд (14.12.2011 - 13:50) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:39)
уже читал, просто не понял, чем дело закончилось.
В чем проблема? зачем тебе пихать данные из БД в конфиг?

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

возьмем тот же:
$title = 'Title';

$title в отдельной столбце зраниться в БД а Title храниться в другой столбце.

И надо вывести в конфиге вывожу следующим образом:

$title = 'Title';


Вот зачем я их вывожу в конфиг

Спустя 3 минуты, 54 секунды (14.12.2011 - 13:54) Winston написал(а):
А что мешает написать ф-ю, передавать ей id страницы и вытаскивать нужный title ?
Например
function getTitle($id)
{
$query = mysql_query('Select `title`.....WHERE...' . (int)$id . ' Limit 1');
return mysql_result($query, 0);
}

А потом на странице делать
<title><?php echo getTitle($_GET['page']); ?></title>

Спустя 1 минута, 15 секунд (14.12.2011 - 13:55) Invis1ble написал(а):
johniek_comp
Цитата
ТС-су. А кто так переменные называет? Одной буквой??? Есть стиль надо к нему идти, иначе в конце кодбудетнечитабельнымваабще

а, ты про это... ну да, согласен.

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

возьмем тот же:
$title = 'Title';

$title в отдельной столбце зраниться в БД а Title храниться в другой столбце.

жесть....
посмотри как Winston предлагает поступить - вот так примерно нужно делать.

Спустя 48 секунд (14.12.2011 - 13:56) Ramzil_Nixon написал(а):
Цитата (Winston @ 14.12.2011 - 10:39)
http://ua2.php.net/manual/ru/function.pars...-file.php#94414



Я в английском не силен smile.gif

Спустя 1 минута, 1 секунда (14.12.2011 - 13:57) Invis1ble написал(а):
Ramzil_Nixon
Цитата
Я в английском не силен

забей пока что на ini. Это не тот случай.

Спустя 1 минута, 6 секунд (14.12.2011 - 13:58) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 10:57)
забей пока что на ini. Это не тот случай.

Ну с чем тогда мне решить эту проблему?

Спустя 1 минута, 35 секунд (14.12.2011 - 14:00) Invis1ble написал(а):
Цитата
Ну с чем тогда мне решить эту проблему?

Спустя 1 минута, 18 секунд (14.12.2011 - 14:01) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 11:00)
http://phpforum.su/index.php?showtopic=0&v...dpost&p=1616184

Ааа.. это не заметил, ссори

Спустя 1 минута, 49 секунд (14.12.2011 - 14:03) Ramzil_Nixon написал(а):
Цитата (Winston @ 14.12.2011 - 10:54)
А что мешает написать ф-ю, передавать ей id страницы и вытаскивать нужный title ?
Например
function getTitle($id)
{
    $query = mysql_query('Select `title`.....WHERE...' . (int)$id . ' Limit 1');
    return mysql_result($query, 0);
}

А потом на странице делать
<title><?php echo getTitle($_GET['page']); ?></title>


Ну с БД я понял уже как работать smile.gif Но хотелось бы и в файле научиться редактировать, только нужно мне место smile.gif

Спустя 21 секунда (14.12.2011 - 14:03) Winston написал(а):
Цитата (Ramzil_Nixon @ 14.12.2011 - 13:01)
Ааа.. это не заметил, ссори

Ты тему черз один-два поста читаешь ? blink.gif

Спустя 2 минуты, 44 секунды (14.12.2011 - 14:06) Ramzil_Nixon написал(а):
Цитата (Winston @ 14.12.2011 - 11:03)
Ты тему черз один-два поста читаешь ?

ПРосто не обратил внимаения

Спустя 8 минут, 14 секунд (14.12.2011 - 14:14) Invis1ble написал(а):
Цитата
Ну с БД я понял уже как работать  Но хотелось бы и в файле научиться редактировать, только нужно мне место

ладно, вернемся к нашим баранам.
data.dat
я первая строка
а я вторая строка
третья и последняя. хватит.

handler.php
<?php
error_reporting(E_ALL | E_STRICT);
header('Content-Type: text/html; charset=utf-8');

$filename = 'data.dat';
$data = file($filename, FILE_IGNORE_NEW_LINES);
$string = mb_substr($data[1], 4, 6, 'utf-8');

if (isset($_POST['string']))
{
$data[1] = str_replace($string, $_POST['string'], $data[1]);
file_put_contents($filename, implode("\n", $data));
}

?>
<!DOCTYPE html>
<html>
<head>
<title>
test</title>
<meta
charset="utf-8" />
</head>
<body>
<form
action="" method="post">
<textarea
name="string" cols="20" rows="5"><?php echo isset($_POST['string']) ? $_POST['string'] : $string ?></textarea>
<input
type="submit" value="update" />
</form>
</body>
</html>

Спустя 1 час, 6 минут, 40 секунд (14.12.2011 - 15:21) Ramzil_Nixon написал(а):
Invis1ble
А как выбрать кодировку файла .dat?

Спустя 3 минуты, 37 секунд (14.12.2011 - 15:24) m4a1fox написал(а):

<?php
echo '<J>EditFile ::</J><br />';
function showCode(){
if(isset($_GET['get'])){
$content = '<form action="" method="post">';
$content .= '<textarea cols="50" rows="20" name="file">';
$content .= file_get_contents($_GET['get'].".php");
$content .= '</textarea>';
$content .= '<input type="submit" name="save" value="save">';
$content .= '</form>';
return $content ;
}else{
return NULL;
}
}


if(isset($_POST['save']))
{
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$_GET['get'].'.php', $_POST['file']);
}

<a href="<?php echo $_SERVER['REQUEST_URI']?>&get=test">test.php</a>
<?php
echo '<pre>';
print_r(showCode());
echo '</pre>';
?>

В общем на быструю руку набросал!

Спустя 7 минут, 21 секунда (14.12.2011 - 15:32) Invis1ble написал(а):
Цитата
А как выбрать кодировку файла .dat?

в смысле "выбрать"?

Спустя 3 минуты, 30 секунд (14.12.2011 - 15:35) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 12:32)
в смысле "выбрать"?


Ну в прямом, открыть его можно только с помощью обычного блокнота.
dreamveawer его не открывает

Спустя 1 минута, 3 секунды (14.12.2011 - 15:36) m4a1fox написал(а):
Notepad++ в помощь!

Спустя 2 минуты, 41 секунда (14.12.2011 - 15:39) Invis1ble написал(а):
Ramzil_Nixon
Цитата
Ну в прямом, открыть его можно только с помощью обычного блокнота.

а при чем тут кодировка? Расширение dat в принципе можно поменять на какое угодно, хоть на data.hrenpoymichto
Цитата
dreamveawer его не открывает

значит выкинь свой dreamveawer smile.gif

Спустя 3 минуты, 6 секунд (14.12.2011 - 15:42) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 12:39)
значит выкинь свой dreamveawer

У меня и так 30 дневная лицензия осталось smile.gif Буду по ней скучать smile.gif

Цитата (Invis1ble @ 14.12.2011 - 12:39)
а при чем тут кодировка? Расширение dat в принципе можно поменять на какое угодно, хоть на data.hrenpoymichto

Понял

Спустя 30 секунд (14.12.2011 - 15:42) Ramzil_Nixon написал(а):
m4a1fox
Цитата (m4a1fox @ 14.12.2011 - 12:24)
<?php
echo '<J>EditFile ::</J><br />';
function showCode(){
  if(isset($_GET['get'])){
$content = '<form action="" method="post">';
$content .= '<textarea cols="50" rows="20" name="file">';
$content .= file_get_contents($_GET['get'].".php");
$content .= '</textarea>';
$content .= '<input type="submit" name="save" value="save">';
$content .= '</form>';
return $content ;
  }else{
  return NULL;
  }
}

if(isset($_POST['save']))
{
file_put_contents($_SERVER['DOCUMENT_ROOT'].'/'.$_GET['get'].'.php', $_POST['file']);
}

<a href="<?php echo $_SERVER['REQUEST_URI']?>&get=test">test.php</a>
<?php
echo '<pre>';
print_r(showCode());
echo '</pre>';
?>



А что она делает?
Я чет не понял

Спустя 53 секунды (14.12.2011 - 15:43) Invis1ble написал(а):
Ramzil_Nixon
Цитата
У меня и так 30 дневная лицензия осталось  Буду по ней скучать

это чудо еще и платное что-ли? oO

Спустя 4 минуты, 8 секунд (14.12.2011 - 15:48) Ramzil_Nixon написал(а):
Цитата (Invis1ble @ 14.12.2011 - 12:43)
это чудо еще и платное что-ли? oO

Неее, вмесе с Zverem скачал, (У себя семерка стоит). Какой троян 3 дня назад, переустановил, и как то не так DV поставил, и всего 30 дней работать будет теперь smile.gif

Спустя 3 минуты, 10 секунд (14.12.2011 - 15:51) m4a1fox написал(а):
Цитата
А что она делает?
Я чет не понял

Просто открывает файл в textare и можно редактировать, после нажимаешь сохранить, и файл перезаписывается. Все! Я думал тебе это нужно было. Ошибся видимо!

Спустя 53 минуты, 13 секунд (14.12.2011 - 16:44) Ramzil_Nixon написал(а):
Цитата (m4a1fox @ 14.12.2011 - 12:51)
Просто открывает файл в textare и можно редактировать, после нажимаешь сохранить, и файл перезаписывается. Все! Я думал тебе это нужно было. Ошибся видимо!


Да нет не ошибся, пока еще с кодом не разобрался, спасибо!

Спустя 58 минут, 25 секунд (14.12.2011 - 17:42) Ramzil_Nixon написал(а):
m4a1fox
Цитата
Warning:  file_get_contents(test.php) [function.file-get-contents]: failed to open stream: No such file or directory in C:\Program Files (x86)\VertrigoServ\www\cms.php on line 9


smile.gif

Спустя 1 час, 12 минут, 41 секунда (14.12.2011 - 18:55) m4a1fox написал(а):
Ramzil_Nixon
А как ты хотел smile.gif Сам бы написал и не было бы вопросов!


_____________
Миллионы приходят, уходят, не в них счастье. Самым важным на свете всегда будут люди в этой комнате, вот здесь, сейчас...

user posted image
Быстрый ответ:

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