[ Поиск ] - [ Пользователи ] - [ Календарь ]
Полная Версия: Пишу скрипт регистрации нужна помощь
defined
Есть такой скрипт:

<?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']...

Я только учусь, так что не судите строго...

Спустя 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";
}
?>

Думаю и с плохим английским понятно что написано, можно сначала прочитать хотя бы про функцию а потом задавать вопрос почему не работает.

По поводу второго, а что мешает сразу создать двумерный массив?

Спустя 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
$arr
=file("FILENAME");
foreach(
$arr as $val) {
        
$line=explode("РАЗДЕЛИТЕЛЬ"$val);
        list(
$num$user$pass)=$line;
        
$users[(int)$num]["user"]=$user;
        
$users[(int)$num]["password"]=$pass;
}
print_r($users);

Насколько понял что-то вроде этого надо?

Спустя 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] =>пароль
\\Это дело опять нужно через цикл пропустить...
}

Если можно дайте ссылку где бы можно было статейку на эту тему почитать. Не надо только ссылку на Мануал давать...

Спустя 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 написал(а):
Удалите тему в виду ее не актуальности... Спасибо за внимание.
Быстрый ответ:

 Графические смайлики |  Показывать подпись
Здесь расположена полная версия этой страницы.
Invision Power Board © 2001-2024 Invision Power Services, Inc.