Проблема с записью в файл
Пользователи, просматривающие топик: none
|
Зашли как: Guest
|
Имя |
Сообщение |
<< Старые топики Новые топики >> |
|
|
Проблема с записью в файл - 2009-05-29 00:07:35.730000
|
|
|
anty611
Сообщений: 25
Оценки: 0
Присоединился: 2007-07-02 04:06:41.186666
|
<form action='test.php' method='POST'> <tr><td align="right">Логин: </td><td><input type='text' name='login' size=20></td></tr> <tr><td align="right">Пароль: </td><td><input type='text' name='pass' size=20></td></tr> <tr><td></td><td><input type='submit' value='Сохранить'></td></tr> <?php if($_POST['login']) { include("config.php"); $get=file_get_contents("config.php"); $save[0]=str_replace($login, $_POST['login'], $get); $save[1]=str_replace($pass, $_POST['pass'], $get); for ($x=0; $x<=2; $x++) { $f=fopen("config.php", "w"); fwrite($f, $save[$x]); fclose($f); } } ?> Скрипт пишет в конфиг два значения. Он их заменяет, чтобы создавать видимость редактирования конфа, а не тупо дописывает в конце. Если писать один параметр, то все норм, но если два и более, то он тупо чистит файл, в который пишет. Если пытаться просто дописывать сверху, то все норм, но если ставить "w", то начинается нечто. Я не могу понять почему… Спасибо :(
|
|
|
RE: Проблема с записью в файл - 2009-05-29 00:43:37.883333
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
На баше появилось новое ответвление - killmeplease. Вот оно здесь очень уместно. $f=fopen("config.php", "w"); - открыть файл для записи, то есть записать следующую информацию вместо предыдущего содержимого. ПХП не знаю, но предполагаю, что тебе нужно "a" вместо "w". Это во-первых. Во-вторых, нафиг тебе в цикле открывать-закрывать файл?
$f = fopen("config.php", "w"); // я так понимаю, весь файл конфига тебе нужно как раз перезаписывать, поэтому здесь остаётся "w"
for ($x = 0; $x <= 2; $x++) {
fwrite($f, $save[$x]);
}
fclose($f);
Ну и в конце концов, для пароля используй input type="pawssword", а то какой с него толк, если все вводимые символы видны.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 01:01:33.456666
|
|
|
anty611
Сообщений: 25
Оценки: 0
Присоединился: 2007-07-02 04:06:41.186666
|
ХП не знаю, но предполагаю, что тебе нужно "a" вместо "w". "w" перезаписывает файл, а "a" - добавляет сверху. Мне нужна перезапись, поэтому там w. нафиг тебе в цикле открывать-закрывать файл Хм, у меня скрипт должен интуитивно сам догадываться, какой файл нужно открыть? Спасибо за попытку разобраться в ситуации, но ничего из этого не относится к делу. Я сейчас думаю о работе скрипта, а не о том, что у меня пароль слабый и что надо поле ставить другое. Этим я позже займусь Судя по посту "нафиг открывать закрывать файл", ты в кодинге вообще проходом… Имхо. Такое сказануть. Глянь по внимательне конструкцию скрипта и поймешь, зачем там открывать его.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 01:17:01.076666
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
Обожаю, когда объясняешь нубу, что он неправ, а нуб ещё и огрызается  quote:
"w" перезаписывает файл, а "a" = добавляет сверху. Мне нужна перезапись, поэтому там w. Тебе нужна перезапись всего файла или каждой переменной? Ты посмотри, что ты делаешь в своём скрипте: 1ое повторение в цикле: 1) открыть файл, затерев всё, что было до этого 2) записать в файл переменную номер 0 3) закрыть файл 2ое повторение в цикле 4) снова открыть файл для перезаписи, тем самым стерев записанную на первом повторении переменную 5) записать переменную номер 1 6) закрыть файл 3е повторение 7) открыть файл для перезаписи, стерев записанную на втором повторении переменную номер 1 8) записать переменную номер 2 9) закрыть файл То есть, ты тупо затираешь на каждом цикле то, что у тебя было записано на предыдущем, а потом удивляешься, почему у тебя только последний символ записан. Ну продолжай удивляться. Я тебе рассказал, что для того, чтобы не затиралось старое содержимое, а просто дописывалось новое, нужно использовать "a" вместо "w". А лучше открыть файл для перезаписи, записать туда скопом всё, что тебе нужно и закрыть файл. Если ты не в курсе, когда открываешь файл, можно в него много раз записать, а не только один. В том числе, можно писать в файл в цикле, то есть открыть его перед циклом, в цикле записать всё, что нужно, а после цикла спокойно закрыть файл. И будет тебе счастье. Это я тебе уже рассказал, но ты в силу своей "крутости" и превосходства передо мной несчастным пропустил в фразе про "нафиг открывать-закрывать файл в цикле" словосочетание "в цикле". Ну давай, крутой, научи нас всех кодить. Главное, нет быть забить то, что я написал, в код и проверить, работает ли, так нет, нужно сначала огрызнуться. Нуну.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 01:23:55.136666
|
|
|
anty611
Сообщений: 25
Оценки: 0
Присоединился: 2007-07-02 04:06:41.186666
|
Лог файла config.php после ввода логина и паса (с правами "a"): <?php $login="admin"; $pass="pass"; ?> <?php $login="df"; $pass="pass"; ?> <?php $login="admin"; $sfd="sfd"; ?> Как видишь, он смотрит первое <?php $login="admin"; $pass="pass"; ?> после чего идет запись с измененным логином ($login). Потом скрипт берет предыдущую запись с уже ИЗМЕНЕННЫМ полем логина, и пишет туда новый пас и перезаписывает (должен так делать по хорошему). В итоге на выходе получается готовый измененный конф. В данном случае мы этого не увидим, т.к. пишется много данных, если бы было тупо логин с пасом, а не сверху куча всего ещё, то все бы норм писалось, а тут ессесно перезапись тупо. Теперь заткни свой рот и не отписывайся больше в теме, пожалуйста. Я не достоин внимания такого мегахцкера как ты, поэтому давай закроем тему, т.к. судя по всему ты ничего дельного не скажешь все равно. Ты бы хоть скрипт попробывал в деле, а потом уже понты кидал.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 01:27:56.520000
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
А палата на этом форуме ещё есть? Обязательно должна быть для таких случаев.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 01:29:41.436666
|
|
|
anty611
Сообщений: 25
Оценки: 0
Присоединился: 2007-07-02 04:06:41.186666
|
Он каждый раз открывает файл в цикле, поэтому будут писаться данные исходя из уже записанных в скрипте. Если бы все проходило на одном дыхании, то да, была бы шняга. В любом случае, вопрос был не в том, что у меня пишется последнее значение, а в том, почему у меня ваще запись не работает. Читай внимательнее. И вообще: отредактируй скрипт и кинь сюда. Если все будет пахать, то я хоть петухом себя признаю, мне плевать. А кидать словами не стоит, лучше покинь тему. В теоретических знаниях ты очень грамотный я смотрю, а вот практикой ты что-то не балуешь, только слова.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 01:46:16.880000
|
|
|
kreol
Сообщений: 823
Оценки: 0
Присоединился: 2007-03-08 03:13:06.876666
|
<form action='test.php' method='POST'>
<tr><td align="right">Логин: </td><td><inputtype='text' name='login' size=20></td></tr>
<tr><td align="right">Пароль:</td><td><input type='text' name='pass'size=20></td></tr>
<tr><td></td><td><input type='submit' value='Сохранить'></td></tr>
<?php
if($_POST['login']) {
include("config.php");
$get=file_get_contents("config.php");
$save[0]=str_replace($login, $_POST['login'], $get);
$save[1]=str_replace($pass, $_POST['pass'], $get);
$f=fopen("config.php", "w");
for ($x=0; $x<=2; $x++) {
fwrite($f, $save[$x]);
}
fclose($f);
}
?> Это если весь остальной твой код написан правильно, за что я не ручаюсь. Как я и сказал, ПХП не знаю, и времени разбираться нету. Вот код, который будет записывать в файл 2 переменные, каждый раз заменяя старые значения:
<?php
$save[0] = "value 1";
$save[1] = "value 2";
$f=fopen("somefile.txt", "w");
for ($x = 0; $x < 2; $x++) {
fwrite($f, $save[$x]);
}
fclose($f);
}
?> У тебя, кстати, ещё и границы цикла не соблюдены. Ну тут уж извини, гоняться за всеми твоими багами я не собираюсь, пиши по строчке и проверяй, делает ли твой скрипт, то, что ты от него ожидаешь, или уже есть ошибка. В конце концов напишешь таки рабочий скрипт.
|
|
|
RE: Проблема с записью в файл - 2009-05-29 02:58:12.386666
|
|
|
anty611
Сообщений: 25
Оценки: 0
Присоединился: 2007-07-02 04:06:41.186666
|
Thx )) Блин, башня уже не варит. Сразу бы так )
|
|
|
RE: Проблема с записью в файл - 2009-05-29 10:39:00.740000
|
|
|
oRb
Сообщений: 4044
Оценки: 597
Присоединился: 2007-03-28 18:45:06.630000
|
quote:
А палата на этом форуме ещё есть? есть, переношу :)
|
|
|
|
|