Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP. Практика создания Web-сайтов (второе издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: foreach() не понимает
 
 автор: Blizard   (17.03.2008 в 03:33)   письмо автору
 
 

всем здрасте, возникла проблема, не понимает ф-ию foreach() в error логе пишет следующее, мой хост заменен на myhost.ru

[Mon Mar 17 03:29:23 2008] [error] [client 62.117.89.101] PHP Warning: Invalid argument supplied for foreach() in /usr/home/rusru/data/www/myhost.ru/oplata.php on line 14, referer: http://myhost.ru/oplata.php

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

   
 
 автор: CrazyAngel   (17.03.2008 в 03:54)   письмо автору
 
   для: Blizard   (17.03.2008 в 03:33)
 

передаете не массив

   
 
 автор: Blizard   (17.03.2008 в 04:06)   письмо автору
 
   для: CrazyAngel   (17.03.2008 в 03:54)
 

код небольшой и на прошлом хосте он работал


<?php
$login
=$_POST['login'];
$pasword=$_POST['password'];
$login=strip_tags($login);
$password=strip_tags($password);

$myfile "oplata.txt"
$content file($myfile); 
$line count($content) - 1


$array file($myfile);  
$exp = array();  
  foreach(
$array as $ar
  {  
  
$exp[] = explode('^'$ar);  
   } 

   for (
$u 0$u<=$line$u++) 
   { 
       if ((
$exp[$u][0] == $login) && ($exp[$u][1] == $password))
       { 
       
$f 1;
       
$opl $exp[$u][2]; 
       echo 
"<html><head></head><body bgcolor='#000000'><br><font color='#ffffff'><b>Ваш чат оплачен до ".$opl." <br><br>
Напоминаем кошельки для оплаты: (9$ или 225 руб. соответственно)<br><br>
webmoney Z344078516752<br>
yandexmoney 4100181760113<br>
</b></font></body></html>"
;
       } 
   } 

if (
$f!=1){
echo 
"<html><head></head><body bgcolor='#000000'><br><font color='#ffffff'><b>Вы ввели неверные данные </b></font></body></html>";
}


?> 


сам файл olata.txt следующего вида:

login^password^data^
login2^password2^data2^

   
 
 автор: CrazyAngel   (17.03.2008 в 05:18)   письмо автору
 
   для: Blizard   (17.03.2008 в 04:06)
 

$myfile = "oplata.txt"; хм... может не тот путь?, может надо $myfile = "./oplata.txt"; ? :)

   
 
 автор: Blizard   (17.03.2008 в 06:12)   письмо автору
 
   для: CrazyAngel   (17.03.2008 в 05:18)
 

это первое что я сделал когда начал проверять )) но не помогло

   
 
 автор: sim5   (17.03.2008 в 08:51)   письмо автору
 
   для: Blizard   (17.03.2008 в 04:06)
 

А зачем вам вообще такое городить, можно проще, например:

<?
$text 
'login^password^data^ 
login2^password2^data2'
;
$arr explode('^',$text);
$l 'login2';
$p 'password2';
$date '';
for(
$i=0$i<count($arr); $i++) {
 if (
trim($arr[$i])==$l && trim($arr[$i+1])==$p) {
   
$date trim($arr[$i+2]);
   break;
 }
}
!empty(
$date) ? print 'Ваш чат оплачен до '.$date : print 'Sorry';
?>

   
 
 автор: Blizard   (17.03.2008 в 10:08)   письмо автору
 
   для: sim5   (17.03.2008 в 08:51)
 

если бы был один чат, то возможно я бы так и сделал, но их более 50 и нужно чтобы информация об оплате хранилась в одном txt файле, код который я привел выше рабочий, т.к. на другом сервере он работал, более меня интересует вопрос что может в настройках сервера и php в частности влиять на работу функции foreach на которую жалуется error log

   
 
 автор: olejek   (17.03.2008 в 10:24)   письмо автору
 
   для: Blizard   (17.03.2008 в 10:08)
 

Вообще-то foreach - это не функция, а конструкция языка, которая была введена в php4 (в php3 нет).
По этому, я думаю, проблема не в foreach.
Проверьте, массив, который вы передаете в качестве параметра.

   
 
 автор: Lstasss   (17.03.2008 в 11:11)   письмо автору
 
   для: olejek   (17.03.2008 в 10:24)
 

Мне кажется, это может быть из-за разницы версий на старом и новом хостинге (5.2.4 и 5.2.5). В 5.2.4 PHP не ругался если массив пустой, в 5.2.5 ругается. У меня было такое.
Решение - перед foreach сделайте проверку, не пустой ли массив. Если нет - foreach, если да - файл пустой/неверный путь.

   
 
 автор: Blizard   (17.03.2008 в 11:23)   письмо автору
 
   для: Lstasss   (17.03.2008 в 11:11)
 

действительно не в foreach дело, не читает файл, т.е. file() не работает, массив пуст, как быть?

   
 
 автор: KPETuH   (17.03.2008 в 12:31)   письмо автору
 
   для: Blizard   (17.03.2008 в 11:23)
 

а какие права на файл?

   
 
 автор: Blizard   (17.03.2008 в 14:47)   письмо автору
 
   для: KPETuH   (17.03.2008 в 12:31)
 

0777

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования