<?php
defined("MY_SCRIPT") or die();
$i=$_GET['print'];
switch ($i)
{
case "form":
if (!isset ($_POST ['submit']))
{
Форма для регистрации
}
break;
case "mess":
if ((empty($_POST['login'])) AND (empty($_POST['password']))) {$message='Ошибка: вы не ввели имя и пароль!</br><a href="index.php?go=reg&print=form">Назад</a>';}
... и т.д.
else
{
$arr = file('users.php');//считываем содержимое файла в массив
for($i = 1; $i<count($arr); $i++)
{
list ($user, $pass) = explode("¤",$arr[$i]);//извлекаю из строки переменные
$arr[$i]=array ("1"=>"$user","2"=>"$pass");
#echo $arr[$i][1]."<br/>"; так выводится список всех пользователей
if ($_POST ['login']==$arr[$i][1])
/*Проверка ника... Но на практике получается что $_POST ['login'] сравнивается только с последним элементом массива $arr[$i][1], то есть с ником, который содержит последняя строка файла*/
{$message='Ошибка: такой пользователь уже существует! Выберите другое имя.</br><a href="index.php?go=reg&print=form">Назад</a>';}
else
{
FileWrite ('users.php', $_POST ['login']."¤".$_POST ['password']."\n");
$message='<b>'.$_POST['login'].'</b> регистрация прошла успешно!<br/>Твой пароль: <b>'.$_POST['password'].'</b></br><a href="index.php">На главную</a>';
}
}
}
echo $message;
break;
default:
Правила регистрации
break;
}
Ну и как можно догадаться вопрос мой заключается в следующем что нужно исправить чтобы скрипт наконец-то заработал...
Спустя 2 минуты, 2 секунды (24.03.2009 - 00:24) defined написал(а):
Немного решил изменить код...
$num=file ("users.dat");//создаю массив $num
for ($i=0; $i<count($num); $i++)//индексирую его
{
$line=explode ("¤"; $num[$i]);//убираю разделитель
$line=list ($user, $pass);//извлекаю переменные из строки
$users=array ("user"=>$user, "pass"=>$pass);//создаю массив $users с индексами...
#А вот что делать дальше не знаю...
}
У меня по идеи должно получиться два одномерных массива, которые мне нужно привести к табличному виду, то есть получить из них один двухмерный. Такого вида:
######################
# $num # $user # $pass #
######################
# 1 # Миша # 12345 #
######################
# 2 # Вася # sq561 #
######################
# 3 # Алеша # 0096 #
######################
При обращение к ячейке $массив[1][$user] будет получено значение "Миша"... И это значение позже я буду сравнивать с тем что отправлено $_POST['login']...
Я только учусь, так что не судите строго...
$num=file ("users.dat");//создаю массив $num
for ($i=0; $i<count($num); $i++)//индексирую его
{
$line=explode ("¤"; $num[$i]);//убираю разделитель
$line=list ($user, $pass);//извлекаю переменные из строки
$users=array ("user"=>$user, "pass"=>$pass);//создаю массив $users с индексами...
#А вот что делать дальше не знаю...
}
У меня по идеи должно получиться два одномерных массива, которые мне нужно привести к табличному виду, то есть получить из них один двухмерный. Такого вида:
######################
# $num # $user # $pass #
######################
# 1 # Миша # 12345 #
######################
# 2 # Вася # sq561 #
######################
# 3 # Алеша # 0096 #
######################
При обращение к ячейке $массив[1][$user] будет получено значение "Миша"... И это значение позже я буду сравнивать с тем что отправлено $_POST['login']...
Я только учусь, так что не судите строго...
Спустя 9 часов, 34 минуты, 28 секунд (24.03.2009 - 09:59) delete написал(а):
Definition: The PHP function switch () is used in place of several IF / ELSEIF statements. The default is optional, and is used if no other case is true. If you do not use a break; then all statements below your original statement will be treated as true.
Examples:
<?php
switch ($i)
{
case 0:
echo "Zero";
break;
case 1:
echo "One";
break;
case 2:
echo "Two";
break;
default:
echo "Choose a different number";
}
?>
Думаю и с плохим английским понятно что написано, можно сначала прочитать хотя бы про функцию а потом задавать вопрос почему не работает.
По поводу второго, а что мешает сразу создать двумерный массив?
Examples:
<?php
switch ($i)
{
case 0:
echo "Zero";
break;
case 1:
echo "One";
break;
case 2:
echo "Two";
break;
default:
echo "Choose a different number";
}
?>
Думаю и с плохим английским понятно что написано, можно сначала прочитать хотя бы про функцию а потом задавать вопрос почему не работает.
По поводу второго, а что мешает сразу создать двумерный массив?
Спустя 1 час, 8 минут, 38 секунд (24.03.2009 - 11:07) defined написал(а):
Тут дело не в кейсах... Они нужны для навигации. Двухмерный массив нужно получить из строки которая содержится в файле...
Спустя 34 минуты, 44 секунды (24.03.2009 - 11:42) Kuliev написал(а):
Господа BBCode для чего сделали ведь очень трудно читать код когда он не подсвечен!
Спустя 1 час, 38 минут, 34 секунды (24.03.2009 - 13:21) delete написал(а):
PHP |
<?php |
Насколько понял что-то вроде этого надо?
Спустя 2 часа, 53 минуты, 40 секунд (24.03.2009 - 16:14) defined написал(а):
Тоже самое получается сравнивается только последнее значение, т.е. в переменной $user содержатся не все значения, а только последнее. И с ним происходит сравнение, но мне необходимо сравнить все значения... А так спасибо за помощь...
Спустя 6 минут, 6 секунд (24.03.2009 - 16:20) delete написал(а):
Честно не совсем понял смысл того что хотите... Можно как то поконкретнее? Если ты открываешь файл для проверки соответствия зачем массив нужен двумерный?? Сразу и проверяй есть такой логин или нет.
Спустя 2 часа, 22 минуты, 32 секунды (24.03.2009 - 18:43) defined написал(а):
До меня все очень туго доходит...
$strings=file("users.dat");
foreach ($strings as $string)
{
$element=explode(":", $string);\\Теперь есть $element[0]=>имя, $element[1] =>пароль
\\Это дело опять нужно через цикл пропустить...
}
Если можно дайте ссылку где бы можно было статейку на эту тему почитать. Не надо только ссылку на Мануал давать...
$strings=file("users.dat");
foreach ($strings as $string)
{
$element=explode(":", $string);\\Теперь есть $element[0]=>имя, $element[1] =>пароль
\\Это дело опять нужно через цикл пропустить...
}
Если можно дайте ссылку где бы можно было статейку на эту тему почитать. Не надо только ссылку на Мануал давать...
Спустя 18 минут, 57 секунд (24.03.2009 - 19:02) delete написал(а):
Можно было тему и озвучить какая интересует. Код написанный выше создает двумерный массив как ты и хотел
Цитата |
Array ( [1] => Array ( [user] => user1 [password] => 111 ) [2] => Array ( [user] => user2 [password] => 123 ) ) |
Данные хранятся в таком виде(разделитель не имеет значение):
1|user1|111
2|user2|123
Спустя 2 дня, 16 часов, 56 минут, 15 секунд (27.03.2009 - 11:58) defined написал(а):
Удалите тему в виду ее не актуальности... Спасибо за внимание.