|
|
|
| всем здрасте, возникла проблема, не понимает ф-ию 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
делаю простую проверку пользователем оплаты, данные хранятся в файле, почему возникает такая ошибка? | |
|
|
|
|
|
|
|
для: Blizard
(17.03.2008 в 03:33)
| | передаете не массив | |
|
|
|
|
|
|
|
для: 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^
|
| |
|
|
|
|
|
|
|
для: Blizard
(17.03.2008 в 04:06)
| | $myfile = "oplata.txt"; хм... может не тот путь?, может надо $myfile = "./oplata.txt"; ? :) | |
|
|
|
|
|
|
|
для: CrazyAngel
(17.03.2008 в 05:18)
| | это первое что я сделал когда начал проверять )) но не помогло | |
|
|
|
|
|
|
|
для: 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';
?>
|
| |
|
|
|
|
|
|
|
для: sim5
(17.03.2008 в 08:51)
| | если бы был один чат, то возможно я бы так и сделал, но их более 50 и нужно чтобы информация об оплате хранилась в одном txt файле, код который я привел выше рабочий, т.к. на другом сервере он работал, более меня интересует вопрос что может в настройках сервера и php в частности влиять на работу функции foreach на которую жалуется error log | |
|
|
|
|
|
|
|
для: Blizard
(17.03.2008 в 10:08)
| | Вообще-то foreach - это не функция, а конструкция языка, которая была введена в php4 (в php3 нет).
По этому, я думаю, проблема не в foreach.
Проверьте, массив, который вы передаете в качестве параметра. | |
|
|
|
|
|
|
|
для: olejek
(17.03.2008 в 10:24)
| | Мне кажется, это может быть из-за разницы версий на старом и новом хостинге (5.2.4 и 5.2.5). В 5.2.4 PHP не ругался если массив пустой, в 5.2.5 ругается. У меня было такое.
Решение - перед foreach сделайте проверку, не пустой ли массив. Если нет - foreach, если да - файл пустой/неверный путь. | |
|
|
|
|
|
|
|
для: Lstasss
(17.03.2008 в 11:11)
| | действительно не в foreach дело, не читает файл, т.е. file() не работает, массив пуст, как быть? | |
|
|
|
|
|
|
|
для: Blizard
(17.03.2008 в 11:23)
| | а какие права на файл? | |
|
|
|
|
|
|
|
для: KPETuH
(17.03.2008 в 12:31)
| | 0777 | |
|
|
|