if(file_exists('reg_data/auth_file'))
{
$auth = unserialize(file_get_contents('reg_data/auth_file'));
$keys = array_keys($auth);
$id = max($keys) + 1;
$id = $login;
}
else
{
$id = $login;
}
foreach($auth as $double)
{
if(in_array($login, $double))
$info[] = 'Такой логин уже присутствует, укажите другой!';
if(array_search($email, $double))
$info[] = 'Такой e-mail уже присутствует, укажите другой!';
}
В переменную id пишутся не номера по порядку, а записывается логин. Не могу понять как проверить на существование его при повторном вооде
foreach($auth as $double) { if(in_array($login, $double)) $info[] = 'Такой логин уже присутствует, укажите другой!';
. Емаил нормально сверяется.
И к тому же оказалось, что функция print_r не показывает идентификатор массива а только ключи со значениями и получается так что обычным поиском по массиву тут не отделаться.
Спустя 34 минуты, 27 секунд (24.06.2010 - 12:25) twin написал(а):
Цитата |
И к тому же оказалось, что функция print_r не показывает идентификатор массива а только ключи со значениями |
Конструкция print_r() показывает все, что находится в массиве. Вот хотелось бы взглянуть на эту распечатку.
Цитата |
В переменную id пишутся не номера по порядку, а записывается логин |
более чем странно, учитывая это
$id = max($keys) + 1;Логины могут быть только числовыми?
$id = $login;
Спустя 9 минут (24.06.2010 - 12:34) admrp написал(а):
Array ( [pwd] => 123456 [mail] => asd@mail.ru ) - вывод print_r
- я так понял что выбирается максимальное значение и увеличивается на единицу и в файле вместо числового значения записыватся строка логина
$id = max($keys) + 1;
$id = $login;
- я так понял что выбирается максимальное значение и увеличивается на единицу и в файле вместо числового значения записыватся строка логина
Спустя 1 минута, 12 секунд (24.06.2010 - 12:35) admrp написал(а):
a:1:{s:5:"admrp";a:2:{s:3:"pwd";s:6:"123456";s:4:"mail";s:16:"asd@mail.ru";}}
вот запись в файле
вот запись в файле
Спустя 23 минуты, 1 секунда (24.06.2010 - 12:58) twin написал(а):
Массив у тебя выглядит так
сериализованный массив так
А теперь подумай что и к чему ты пытаешься прибавить. А потом я скажу как сделать поиск.
Array
(
[admrp] => Array
(
[pwd] => 123456
[mail] => asd@mail.ru
)
)
сериализованный массив так
a:1:{s:5:"admrp";a:2:{s:3:"pwd";s:6:"123456";s:4:"mail";s:11:"asd@mail.ru";}}Не знаю с какой целью ты пытаешься меня запутать...
А теперь подумай что и к чему ты пытаешься прибавить. А потом я скажу как сделать поиск.
Спустя 6 минут, 54 секунды (24.06.2010 - 13:05) admrp написал(а):
я не путаю тебя. как я написал так и есть. вот код
я просто пытаюсь разобраться, в чём я ошибаюсь)
if(file_exists('reg_data/auth_file'))
{
$auth = unserialize(file_get_contents('reg_data/auth_file'));
$keys = array_keys($auth);
$id = max($keys) + 1;
$id = $login;
}
else
{
$id = $login;
}
foreach($auth as $double)
{
if(in_array($login, $double))
$info[] = 'Такой логин уже присутствует, укажите другой!';
if(array_search($email, $double))
$info[] = 'Такой e-mail уже присутствует, укажите другой!';
}
print_r($double);
if(count($info) == 0)
{
$auth[$id]['pwd'] = $pass;
$auth[$id]['mail'] = $email;
file_put_contents('reg_data/auth_file', serialize($auth));
header('location: http://'. $_SERVER['HTTP_HOST'] .'/index.php');
exit();
я просто пытаюсь разобраться, в чём я ошибаюсь)
Спустя 15 минут, 12 секунд (24.06.2010 - 13:20) twin написал(а):
Вот так примерно надо
if(file_exists('reg_data/auth_file'))
$auth = unserialize(file_get_contents('reg_data/auth_file'));
foreach($auth as $log => $double)
{
if($login == $log)
$info[] = 'Такой логин уже присутствует, укажите другой!';
if($double['mail'] === $email)
$info[] = 'Такой e-mail уже присутствует, укажите другой!';
}
if(count($info) == 0)
{
$auth[$login]['pwd'] = $pass;
$auth[$login]['mail'] = $email;
file_put_contents('reg_data/auth_file', serialize($auth));
header('location: http://'. $_SERVER['HTTP_HOST'] .'/index.php');
exit();
Спустя 18 минут, 6 секунд (24.06.2010 - 13:38) admrp написал(а):
twin
благодарю! так работает, но почему print_r не показывает весь массив я, увы, не знаю, может ли это зависеть от браузера?
благодарю! так работает, но почему print_r не показывает весь массив я, увы, не знаю, может ли это зависеть от браузера?
Спустя 2 минуты, 51 секунда (24.06.2010 - 13:41) twin написал(а):
Ты не тот смотришь.
print_r($auth);
Спустя 3 минуты, 6 секунд (24.06.2010 - 13:44) admrp написал(а):
всё, понял, при прогонке циклом вынимаются только ключи со значениями - спасибо.
Спустя 19 минут, 15 секунд (24.06.2010 - 14:03) admrp написал(а):
разобрался!
_____________
"...истина где-то рядом..."