Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: проблема с записью fputs в файл

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Описание: Запись в локальный файл не происжодит, файл становиться нулевой длины
t0nich
Отправлено: 07 Ноября, 2013 - 20:08:30
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Помогите решить заморочку, уже второй день бьюсь, форумы прочёсываю.

Понадобилось разморозить один проектик, кот. около года назад ПРЕКРАСНО РАБОТАЛ !
Теперь не работает запись в файл с помощью fputs !!!


в папке www есть 2 файла:
switch.file (в кот. и надо записать)
и файл
index.php:


<html>
<head>
<?php
$f=fopen('switch.file', 'w+');
fputs($f, $p);
fclose($f);
?>

</head>
<body>

<a href='index.php?p=1'>UP</a>
<br>
<a href='index.php?p=3'>LEFT</a>
<a href='index.php?p=4'>RIGHT</a>
<br>
<a href='index.php?p=2'>DOWN</a>
<br><br>
<a href='index.php?p=0'>STOP</a>

</body>
</html>


Запись в 'switch.file' не происжодит, файл становиться нулевой длины.
если 'switch.file' нет, то при клике на ссылку он создастся, но будет нулевой длины.

Ошибок (error_reporting = E_ALL ; & ~E_NOTICE) не выдаёт.

атрибутов hiden/readnoly нету на файлах.
.htaccess файлов нету

Пробовал winXP x86
пробовал win7 x64
пробовал 2010-11-07_Denwer3_Base_PHP5.2_a 2.2.4_p5.2.12_zendoptimizer_m5.1 .40_pma3.2.3
пробовал shttp3.05.93


Подсобите советом, а то уже с ума схожу !!!!

(Отредактировано автором: 07 Ноября, 2013 - 20:18:39)

 
 Top
teddy
Отправлено: 07 Ноября, 2013 - 20:45:23
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




t0nich пишет:
$f=fopen('switch.file', 'w+');
fputs($f, $p);
fclose($f);

в fputs вы передали дескриптор файла в который нужно сделать запись а что записывать не передали... тоесть ваша вторая переменная которая должна отвечать за текст, записываемый в файл, не определена.
 
 Top
t0nich
Отправлено: 07 Ноября, 2013 - 20:49:45
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




это только первый раз, а потом ведь при клике на ссылки
"index.php?p=1"

'p' передаётся, да и раньше то именно этот скриптик работал!
 
 Top
teddy
Отправлено: 07 Ноября, 2013 - 20:53:25
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




t0nich пишет:
'p' передаётся, да и раньше то именно этот скриптик работал!

как передается? покажите.
этот ваш "index.php?p=1" есть $_GET параметр.

напишите так:
PHP:
скопировать код в буфер обмена
  1. if(isset($_GET['p'])){
  2. $p = $_GET['p'];
  3. $f=fopen('switch.file', 'w+');
  4. fputs($f, $p);
  5. fclose($f);
  6. }

Когда параметр передатите, как выше(index.php?p=1), запишется единичка в файл или другие данные, которые вы туда введете.
 
 Top
t0nich
Отправлено: 07 Ноября, 2013 - 21:33:33
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Работает! Вы мой спаситель!

Но честно говоря пока не понял, если есть возможность поясните, плиз.


teddy пишет:
Когда параметр передатите, как выше(index.php?p=1), запишется единичка в файл или другие данные, которые вы туда введете.


так не записывается же так в файл?

и главное, каким образом раньше то работало ?!

и значит при
index.php?p=1
значение 'p' не должно передаваться после самой загрузки по линку ?
?
 
 Top
teddy
Отправлено: 07 Ноября, 2013 - 21:43:53
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




t0nich пишет:
Вы мой спаситель!

Ха-ха пустяки))

Ну смотрите, вы пишите fputs($f, $p); ведь так? эти две переменные должны содержать в себе: Первая, указатель на файл, в который должна быть записана информация, а вторая переменная $p это сама информация. Так вот, переменной $f вы присвоили тот самый указатель на файл $f=fopen('switch.file', 'w+');

а переменной $p у вас не было, соответственно записываться было нечему, поэтому файл и был пустым. А то что вы пишите в адресной строке index.php?p=1 - это вы передаете $_GET параметр(то, что идет после знака вопроса)
тоесть ?p=1 автоматически становится $_GET['p'] а единичка становится значением этого самого $_GET['p']

Вот я и написал, если был $_GET['p'](если в адресной строке вы набрали то что написали выше), тогда "уложи" его значение(в данном случае значением является единица) в переменную $p, которую "используй" в качестве информации, которая должна быть записана в файл, который передан в функцию fputs первым параметром Ха-ха - логика скрипта...
(Добавление)
t0nich пишет:
значение 'p' не должно передаваться после самой загрузки по линку ?

если значение p не будет передано, в файл ничего не запишется
 
 Top
t0nich
Отправлено: 07 Ноября, 2013 - 22:05:38
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




Спасибо! Теперь понятно.

Но вот что НЕ понятно, так это как же, чёрт возьми, это раньше могло срабатывать ???
я уверен, что именно такой скрипт работал.
 
 Top
teddy
Отправлено: 07 Ноября, 2013 - 22:49:44
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




t0nich пишет:
я уверен, что именно такой скрипт работал.

Вы путаете Улыбка что то мне подсказывает, что вы копируя код упустили переменную, которая отвечала за добавляемую информацию...

Либо где то ещё лежал рабочий скрипт(другой файл) и запись проходила через него а не через этот... тут просто напросто нечему было записываться и всё Улыбка
 
 Top
t0nich
Отправлено: 07 Ноября, 2013 - 23:47:38
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




а если на Линуксе, не могло ?
в том то и дело, что архив есть, из него и брал не первый раз всю цепочку рабочую однажды налаженную.

вообще я упростил для вопроса, а оригинал вот какой был:

<html>
<head>

<?php
$f=fopen('switch.file', 'w+');
fputs($f, $p);
fclose($f);
?>


<script>
function myFunction()
{

if(event.keyCode==37){
window.location = 'index.php?p=3'; <!--left-->
}

if(event.keyCode==38){
window.location = 'index.php?p=1'; <!--up/forward-->
}

if(event.keyCode==39){
window.location = 'index.php?p=4'; <!--down/backward-->
}

if(event.keyCode==40){
window.location = 'index.php?p=2'; <!--right-->
}

if(event.keyCode==32){
window.location = 'index.php?p=0'; <!--stop-->
}

}

</script>
<noscript>can't use java</noscript>
</head>

<body onkeydown="myFunction()">

<p><font size=4>click on links below or use cursor keys & space bar</f></p>
<br>
<font size=14><b>

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
<a href='index.php?p=1'>UP</a>

<br>
<a href='index.php?p=3'>LEFT</a>

&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
<a href='index.php?p=4'>RIGHT</a>

<br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
<a href='index.php?p=2'>DOWN</a>

<br><br>
&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp&nbsp
<a href='index.php?p=0'>STOP</a>

</b></font>


</body>
</html>
 
 Top
teddy
Отправлено: 07 Ноября, 2013 - 23:51:15
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




t0nich пишет:
а если на Линуксе, не могло ?

Не думаю что Линукс автоматически понимает какую переменную php создать и в какую функцию её подставить)) Соответственно нет...

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

Скорее всего вы что то путаете...
 
 Top
t0nich
Отправлено: 08 Ноября, 2013 - 00:34:11
Post Id


Новичок


Покинул форум
Сообщений всего: 6
Дата рег-ции: Нояб. 2013  


Помог: 0 раз(а)




В любом случае, спасибо за обстоятельные пояснения.
Теперь всё что нужно работает!

(Отредактировано автором: 08 Ноября, 2013 - 00:34:45)

 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Работа с файловой системой и файлами »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB