Модераторы: skyboy, MoLeX, Aliance, ksnk

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> как работать с файлами, требуется срочных хелп 
:(
    Опции темы
Bangladesh
Дата 20.12.2004, 02:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



мне нужно написать гостевуху, где ведется лог ipом, клиентов юзверя и также место нахождения на сайте. я написал вот такой скрипт для index странице гостевой.

Код

<? $ip=$REMOTE_ADDR.",";
       $part="Guest book,";
       $agent=$HTTP_USER_AGENT;
       $space="--------------------";
       $file=fopen("ips/ip".$ip.".txt");
       fputs($file,$ip."\n");
       fputs($file,$part."\n");
       fputs($file,$agent."\n");
       fputs($file,$space."\n");
       fclose($file);  ?>


он должен создавать файл ТХТ, но он этого не делает. в чем проблема я не пойму...

smile


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Mal Hack
Дата 20.12.2004, 02:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Для создания файла:
http://php.net/touch
ЗЫ: Указывай режим открытия файла w+.
PM ICQ   Вверх
Osrus
Дата 20.12.2004, 02:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Поидее с "a"тоже должен создавать


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Bangladesh
Дата 20.12.2004, 02:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



а как ваще все это создавать? ну я имею ввиду где указать w+ в моем коде


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Opik
Дата 20.12.2004, 05:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Код

$handle = fopen("/home/rasmus/file.txt", "r");

PM MAIL Skype   Вверх
Mal Hack
Дата 20.12.2004, 16:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Osrus
Надежнее использовать touch.
PM ICQ   Вверх
Bangladesh
Дата 21.12.2004, 01:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



Цитата(Mal @ 20.12.2004, 15:40)
Osrus
Надежнее использовать touch.

так всех благодарю... файлы создаются


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Alone
Дата 21.12.2004, 11:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Цитата(Mal @ 20.12.2004, 16:40)
Osrus
Надежнее использовать touch.

Что значить надежнее? Использовать функцию не по назначению???

Цитата
touch - устанавливает время доступа и модификации файла.
Описание

int touch (string filename [, int time [, int atime]])

пытается установить время доступа и модификации файла filename в значение, заданное по времени. Если опции time нет, используется текущее время. Это эквивалентно тому, что делает utime (иногда называемая utimes). Если имеется третья опция atime, время доступа данного файла также модифицируется.

Если файл не существует, он создаётся.


Правильно будет использовать fopen("fileName", "a+");

цитата из мана:
Цитата
fopen - открывает файл или URL.
int fopen (string filename, string mode [, int use_include_path])
[пропущено]
'a+' - Открыть для чтения и записи; поместить указатель в конец файла. Если файл не существует, делается попытка создать его.



--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 21.12.2004, 19:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Alone тут фишка в чем, fopen пытается создать файл. touch ешл слздает в любом случае, ну поятно, если пермишшоны есть... (обрати внимание на последнюю строчку из мана).
К тому же touch для этого используется как команда shell'a.
PM ICQ   Вверх
Alone
Дата 21.12.2004, 22:41 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Цитата(Mal @ 21.12.2004, 19:48)
Alone тут фишка в чем, fopen пытается создать файл. touch ешл слздает в любом случае, ну поятно, если пермишшоны есть... (обрати внимание на последнюю строчку из мана).
К тому же touch для этого используется как команда shell'a.

Я знаю что touch может создать файл, и даже сам им часто пользуюсь в шелле smile но разговор о том - как создать файл и писать в него. Поэтому таки правильнее будет использовать fopen.
С вышеописанными параметрами - fopen :
-проверит файл на существование, при надобности создаст его.
- откроет файл на запись
- передвинет указатель на конец файла
и всё это в одно действие. А при использовании touch - будут лишние телодвижения, и в конце-концов вызов того же fopen smile


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Mal Hack
Дата 21.12.2004, 22:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Мудрый...
****


Профиль
Группа: Участник Клуба
Сообщений: 9926
Регистрация: 15.2.2004

Репутация: 122
Всего: 261



Alone
Эти телодвижения - надежнее, поскольку при fopen файл может и не создаться...
Вот в чем вся фишка. touch(); создает файл в любом случае (ну кгда пермишенны есть).
PM ICQ   Вверх
IZ@TOP
Дата 22.12.2004, 02:23 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Mal Hack, интересно а что чаще бывает, что файл с помощью fopen создается, или открыты права на юзанье шелла?


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Bangladesh
  Дата 22.12.2004, 03:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



млин smile ну че за фигня опять... вот скрипт:

Код

$data=date(d:m:h);
$file=fopen("message/msg_".$name."_".$data.".txt", "w+");
fputs($file,$name."\n");
fputs($file,$mail."\n");
fputs($file,$city."\n");
fputs($file,$msg"\n");
fclose($file);


он действует smile , уже не при записи ИПов, а когда пользователь посылает сообщение - т.е. создает файл с этим сообщением. ну не хочет скрипт работать! надоело уже...

посмотрите кто-нибудь код плиз... а то ужас... smile


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Alx
Дата 22.12.2004, 07:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



не знаю... должно работать! проверь, определены ли все параметры и правильно ли работает data. а лучше вначале создай строку со всеми параметрами, <br>`ами и что там тебе ещё нужно и пиши fwrite($file,$str) вместо fputs`ов...


--------------------
PM MAIL WWW ICQ   Вверх
Opik
Дата 22.12.2004, 17:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
***


Профиль
Группа: Vingrad developer
Сообщений: 1918
Регистрация: 6.10.2004
Где: Рига

Репутация: 24
Всего: 55



Цитата
$data=date(d:m:h);

Код
$data = date("d:m:h");

PM MAIL Skype   Вверх
Alone
Дата 23.12.2004, 01:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Цитата(Mal @ 21.12.2004, 22:57)
Alone
Эти телодвижения - надежнее, поскольку при fopen файл может и не создаться...
Вот в чем вся фишка. touch(); создает файл в любом случае (ну кгда пермишенны есть).

Кхм... а как такое может быть что touch создаст файл а fopen не сможет? smile
Читайте доки, они рулез...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Alone
Дата 23.12.2004, 01:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



ALEXANDRO У тебя в приведеном тексте 2 ошибки.
на одну указал Opr (забыл кавычки в дате)
а вторая в строке fputs($file,$msg"\n"); пропущена точка перед "\n"

вот для примера работающий код

Код

<?
$name="aaa";
$mail="[email protected]";
$city="muhosransk";
$msg="test...";

$data=date("d:m:h");

$file=fopen("/hosts/vhost9/msg_".$name."_".$data.".txt", "a+");

fputs($file,$name."\n");
fputs($file,$mail."\n");
fputs($file,$city."\n");
fputs($file,$msg."\n");
fclose($file);
?>


а вот результат:

Код

# cat msg_aaa_23:12:12.txt
aaa
[email protected]
muhosransk
test...

Не забудь проверить права записи в каталоги...
Удачи...


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
Bangladesh
Дата 23.12.2004, 01:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



Код

<?

$data=date("d:m:y");
$file=fopen("message/msg_".$name."_".$data.".txt", "a+");
fputs($file,$name."\n");
fputs($file,$mail."\n");
fputs($file,$city."\n");
fputs($file,$msg."\n");
fclose($file);

?>


smile ну не работает он smile


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Osrus
Дата 23.12.2004, 01:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Код

$file=fopen("message/msg_".$name."_".$data.".txt", "w+");
$file_handle = fopen('filename','a');  

А объясните мне теменоте зачем тут handle? Это переменная?
Какова ее функция, в смысле для чего она ?

Это сообщение отредактировал(а) Osrus - 23.12.2004, 01:42


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Bangladesh
Дата 23.12.2004, 01:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


AsBest
***


Профиль
Группа: Завсегдатай
Сообщений: 1089
Регистрация: 4.9.2004
Где: Калининград

Репутация: нет
Всего: 17



не вижу в упор


--------------------
ок
PM MAIL WWW ICQ Skype   Вверх
Osrus
Дата 23.12.2004, 01:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 443
Регистрация: 4.12.2004

Репутация: нет
Всего: 3



Я тоже но может кто-нибудь прояснит ситуацию... зачем вообще этот handle?


--------------------
Шагнул на скользкий путь красноглазия...
Long live Socialism!
PM MAIL ICQ   Вверх
Alx
Дата 23.12.2004, 07:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ajaxy
****


Профиль
Группа: Комодератор
Сообщений: 2903
Регистрация: 26.11.2003
Где: Cutopia

Репутация: 6
Всего: 78



Цитата(Alone @ 23.12.2004, 01:16)
ALEXANDRO У тебя в приведеном тексте 2 ошибки.
на одну указал Opr (забыл кавычки в дате)
а вторая в строке fputs($file,$msg"\n"); пропущена точка перед "\n"

smile smile smile

а я-то тут причем??? smile smile
Добавлено @ 07:31
Osrus
нет тут никакого handle!


--------------------
PM MAIL WWW ICQ   Вверх
Alone
Дата 23.12.2004, 17:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Ай... сорри smile не в туда ткнул ;)
адресовано I, GyoZ


Цитата
А объясните мне теменоте зачем тут handle? Это переменная?
Какова ее функция, в смысле для чего она ?


Эта переменная содержит ссылку на ресурс. Проще говоря дескриптор открытого файла.


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 23.12.2004, 21:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Ой господи... прости... показываю в последний раз:

Код

<?php
if(isset($_POST['name'])) {
$FilePath = 'messages.db';

if(!file_exists($FilePath)) { // Если файл не существует, пытаемся его создать.
 $fh = fopen($FilePath, 'w') or die("Невозможно создать файл, проверьте права на запись в текущей директории"); // Если файл на создался, прекращаем выполнение скрипта и выводим ошибку.
 fclose($fh);
}

if(!is_writable($FilePath)) { // Если прав на запись нет, пытаемся их присвоить.
 chmod($FilePath, 0666);
 if(!is_writable($FilePath)) die("Не удалось назначить на файл права записи"); // Если не вышло, прекращаем выполнение скрипта и выводим ошибку.
}

$fh = fopen($FilePath, 'a+'); // открываем файл на чтение и запись.
flock($fh, LOCK_EX); // Блокируем файл чтобы не произошло ошибки при совместной записи
fputs($fh,
 $_POST['name']."|".
 $_POST['email']."|".
 str_replace(array("\r\n", "\r", "\n"), "", htmlspecialchars($_POST['message']))."|".
 date("d/m/Y H:i")."\r\n"
);
flock($fh, LOCK_UN); // Разблокируем файл
fclose($fh); // Закрываем
} else {
?>
<form action="?1" method="post">
Имя: <input type="text" name="name"><br>
Адрес электронной почты: <input type="text" name="email"><br>
Сообщение:<br>
<textarea name="message"></textarea><br>
<input type="submit" name="submit" value="Итц окэй">
</form>
<?php
}
?>

Я это не тестировал, но думаю что должно работать.

PS В массиве $_POST содержаться данные из полей формы. Подробнее о глобальных переменных Вы можете прочесть в ФАКе.


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Darked
Дата 23.12.2004, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 536
Регистрация: 26.2.2004
Где: Южный Урал

Репутация: нет
Всего: нет



Цитата(Alone @ 23.12.2004, 01:16)
fputs($file,$name."\n");
fputs($file,$mail."\n");
fputs($file,$city."\n");
fputs($file,$msg."\n");


А зачем в конце ставить точку?
И я смотрю, кто - то пишет fopen($FilePath, 'a+'), а кто - то и fopen($FilePath, "a+") Что ли без разницы тавить ' или " ?



--------------------
Veni, Vidi, Vici !!!
PM MAIL ICQ   Вверх
Alone
Дата 24.12.2004, 00:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 663
Регистрация: 11.5.2003
Где: Dnepropetrovsk, U A

Репутация: 1
Всего: 6



Ты про какую точку?
fputs($file,$msg."\n"); про эту чтоль?
Так это всётаки 3й класс, 2я четверть...

Конкатенация (объединение) строк.
В переменной $msg находится строка для записи в файл. Но к строке нужно добавить грубо говоря "ентер" (перевод строки)
Вот его и присоединяют путем конкатенации $msg и "\n"

Добавлено @ 00:26
IZ@TOP Ну после такого объяснения и мартышка на пхп писать сможет!
Браво! smile


--------------------
web developer/telecommunication specialist.
mailto: [email protected]
ICQ#28442924

PM MAIL WWW ICQ   Вверх
IZ@TOP
Дата 24.12.2004, 10:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Панда-бир!
****


Профиль
Группа: Участник
Сообщений: 4795
Регистрация: 3.2.2003
Где: Бамбуковый лес

Репутация: 44
Всего: 73



Darked, одинарные кавыки непозволяют интерпертировать переменные, а не передавать параметры!


--------------------
Один из розовых плюшевых-всадников апокалипсиса... очень злой...

Семь кругов ада для новых элементов языка
Мои разрозненные мысли
PM MAIL WWW ICQ Skype GTalk   Вверх
Страницы: (2) [Все] 1 2 
Ответ в темуСоздание новой темы Создание опроса
Правила форума "PHP"
Aliance
IZ@TOP
skyboy
SamDark
MoLeX

Новичкам:

  • PHP редакторы собираются и обсуждаются здесь
  • Электронные книги по PHP, документацию можно найти здесь
  • Интерпретатор PHP, полную документацию можно скачать на PHP.NET

Важно:

  • Не брезгуйте пользоваться тегами [code=php]КОД[/code] для повышения читабельности текста/кода.
  • Перед созданием новой темы воспользуйтесь поиском и загляните в FAQ
  • Действия модераторов можно обсудить здесь

Внимание:

  • Темы "ищу скрипт", "подскажите скрипт" и т.п. будут переноситься в форум "Web-технологии"
  • Темы с именами: "Срочно", "помогите", "не знаю как делать" будут УДАЛЯТЬСЯ

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, IZ@TOP, skyboy, SamDark, MoLeX, awers.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | PHP: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0778 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.