У меня есть
if (!$_POST[submit])
{
Hello();
}
else
{
$hi=Search($_POST[login], $_POST[pass]); //функция для поиска в файле нужной строки
echo $hi; //выводит значение
}
if ($_POST[go]) //другая функция, которая записует введенные данные в другой файл
{
WriteToFile($hi, $_POST[revers], $_POST[mal], date("d.m.y")); //запись в файл
echo ("\tThank's ");echo "return: "; echo $hi; // не выводит значение
}
Пробывал глобальную переменную создвать, занести в глобальный массив - результат тот же..
Как мне добраться до $hi во втором цикле, что бы записать в файл значение?
Спустя 16 минут, 15 секунд (19.03.2011 - 18:32) Commander Keen написал(а):
Я конечно не соображаю в PHP, но простите, где здесь цикл? У вас 2 разных условия, так что не удивительно что в 2 условии переменная не работает, так как объявляется только в 1ом
Спустя 18 минут, 33 секунды (19.03.2011 - 18:50) neadekvat написал(а):
Этот код так и находится в файле, или он располагается на расстоянии тысяч строк и в разных файлах?
Если именно так, как показано, то переменная выведет значение. Если нет - то и показывать/рассказывать надо как есть.
Кстати, сделайте error_reporting(E_ALL), чтобы убедиться, что вы допускаете ошибку при подобном обращении к элементам массива.
Если именно так, как показано, то переменная выведет значение. Если нет - то и показывать/рассказывать надо как есть.
Кстати, сделайте error_reporting(E_ALL), чтобы убедиться, что вы допускаете ошибку при подобном обращении к элементам массива.
Спустя 2 минуты, 35 секунд (19.03.2011 - 18:53) BlackWater написал(а):
Опечятка, не цикл а условие. Я объявлял эту переменную как глобальную:
Все равно ее нет.
neadekvat - все находится в одном скрипте!
global $hi;
Все равно ее нет.
neadekvat - все находится в одном скрипте!
Спустя 8 минут, 30 секунд (19.03.2011 - 19:01) inpost написал(а):
BlackWater
Она не присваивается, поэтому никак. Во втором цикле проверить, есть ли переменная, если нету - запустить снова этот участок, где создаётся $hi из первого условия, то есть просто скопи-пастить.
Она не присваивается, поэтому никак. Во втором цикле проверить, есть ли переменная, если нету - запустить снова этот участок, где создаётся $hi из первого условия, то есть просто скопи-пастить.
Спустя 8 минут, 4 секунды (19.03.2011 - 19:10) BlackWater написал(а):
inpost
Так что-ли? Но фу-я Search выполняет действия, которые потом повторяют вывод данных, и это же ведь "некрасиво", скрипт повторяет действия, а это только трата времени...
выводит Undefined variable: hi - то что вы мне и говорите.
Я попробывал
Сообщение об ошибке исчезло, но значения все - равно нет.
if (!isset($hi))
{$hi=Search($_POST[login], $_POST[pass]);
WriteToFile($hi, $_POST[revers], $_POST[mal], date("d.m.y"));
echo ("\tThank's ");echo "return: "; echo $hi;}
Так что-ли? Но фу-я Search выполняет действия, которые потом повторяют вывод данных, и это же ведь "некрасиво", скрипт повторяет действия, а это только трата времени...
error_reporting(E_ALL);
выводит Undefined variable: hi - то что вы мне и говорите.
Я попробывал
global $hi;
if (!$_POST[submit])
{
Hello();
}
else
{
//echo ("Main commands: "); echo ($_POST[login]); echo ($_POST[pass]); echo ("\n");
$hi=Search($_POST[login], $_POST[pass]);
}
if ($_POST[go])
{
error_reporting(E_ALL);
WriteToFile($hi, $_POST[revers], $_POST[mal], date("d.m.y"));
echo ("\tThank's ");echo "return: "; echo $hi;
}
Сообщение об ошибке исчезло, но значения все - равно нет.
Спустя 1 минута, 33 секунды (19.03.2011 - 19:11) Trianon написал(а):
она и так глобальная, даже если б не объявляли.
Это не повод, впрочем, жить ей между запросами.
Это не повод, впрочем, жить ей между запросами.
Спустя 4 часа, 5 минут, 53 секунды (19.03.2011 - 23:17) BlackWater написал(а):
Так что мне сделать? Я не могу понять.. Объясните, или намекните, в каком направлении копать?
Спустя 13 минут, 52 секунды (19.03.2011 - 23:31) fallow написал(а):
Что тут копать то? Вот это
в второе условие суй и все.
Может в первом условий у тебя else вообще не срабатывает, тогда откуда же значение $hi во втором условии?
Даже если просто обьявить переменную hi и присвоить что нибудь вне условий, она выведится.
Ты когда её gloabal обьявил даже сообщение об ошибке пропало, а пропало потомучто она обьявлена но значения нету.Понятно что else в первом условии не срабатывает. И её не обязятельно обьявлять global, если ты не хочешь получать доступ к переменной которая находится внутри функций из вне.
$hi=Search($_POST[login], $_POST[pass]); //функция для поиска в файле нужной строки
в второе условие суй и все.
Может в первом условий у тебя else вообще не срабатывает, тогда откуда же значение $hi во втором условии?
Даже если просто обьявить переменную hi и присвоить что нибудь вне условий, она выведится.
Ты когда её gloabal обьявил даже сообщение об ошибке пропало, а пропало потомучто она обьявлена но значения нету.Понятно что else в первом условии не срабатывает. И её не обязятельно обьявлять global, если ты не хочешь получать доступ к переменной которая находится внутри функций из вне.
Спустя 3 минуты (19.03.2011 - 23:34) BlackWater написал(а):
я же объяснил, что так не пойдет.
вот эта функция. получится, что когда
А если в первом условии else не выполняется, то нет и $_POST[login], $_POST[pass], возникает только форма для ввода этих данных.
function Search($l, $p)
{
$file_array = file( "log_info.txt" );
for ($i=0; $i< sizeof($file_array); $i++)
{
if (($l==substr($file_array[$i],0,strlen($l))) && ($p==substr($file_array[$i],strlen($l)+1,strlen($p))) )
{
//echo "All string"; echo ($file_array[$i]);
$str=trim($file_array[$i]);
}
}
if (isset($str))
{
//echo "cool";
if (substr($str, -4)=="user")
{ $name=substr($str,strlen($l)+1+strlen($p)+1, -5);
//echo ("Search "); echo ($name); echo ("\n");
User($name);
//User(substr($str,strlen($l)+1+strlen($p)+1, -5));
}
else
if (substr($str, -5)=="admin")
{
$name=substr($str,strlen($l)+1+strlen($p)+1, -6);
Adm($name); //ForAdmin();
}
}
else {echo "Oops, a user is not found";}
return $name;
}
вот эта функция. получится, что когда
User($name);выполнится, то снова будет рисоваться форма для юзера и выполняться повторно функция User или же если был админ, то ф-я adm()
А если в первом условии else не выполняется, то нет и $_POST[login], $_POST[pass], возникает только форма для ввода этих данных.