|
|
|
| <?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;
}
Ну и как можно догадаться вопрос мой заключается в следующем что нужно исправить чтобы скрипт наконец-то заработал... | |
|
|
|
|
|
|
|
для: Сергей1988
(22.03.2009 в 18:30)
| | в названии темы присутствует слово "ошибка", а вот где про неё в самом сообщении(выделеная жирным шрифтом)? | |
|
|
|
|
|
|
|
для: Slo_Nik
(23.03.2009 в 19:29)
| | Немного решил изменить код...
$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']...
Я только учусь, так что не судите строго... | |
|
|
|
|
|
|
|
для: Сергей1988
(23.03.2009 в 19:51)
| | приветди полностью скрипт и какую выдаёт ошибку... скрипт прикрепи файлом к сообщению | |
|
|
|
|
 4.9 Кб |
|
|
для: Slo_Nik
(24.03.2009 в 00:44)
| | Насчет ошибки, я не точно выразился... Ошибок нет, точнее есть одна я никак не могу проверить если в текстовом файле запись содержащая пользователя. У меня есть файл с данными
Вася¤пароль
...
И т.д.
Так вот значит когда я начинаю проверять наличие такого пользователя, то скрипт производит сравнение только с пользователем чье имя находится в последней строке... | |
|
|
|
|
|
|
|
для: Сергей1988
(24.03.2009 в 01:57)
| | Так нормально?
<?php
if(isset($_POST['submit'])){ $sub = $_POST['submit']; }else{ $sub = false; }
if($sub){
if(isset($_POST['login'])){ $login = trim($_POST['login']); }else{ $login = false; }
if(isset($_POST['passwd1'])){ $passwd1 = trim($_POST['passwd1']); }else{ $passwd1 = false; }
if(isset($_POST['passwd2'])){ $passwd2 = trim($_POST['passwd2']); }else{ $passwd2 = false; }
if(isset($_POST['email'])){ $email = trim($_POST['email']); }else{ $email = false; }
if(isset($_POST['title'])){ $title = trim($_POST['title']); }else{ $title = false; }
if(isset($_POST['desc'])){ $desc = trim($_POST['desc']); }else{ $desc = false; }
if(isset($_POST['url'])){ $url = trim($_POST['url']); }else{ $url = false; }
if($login && $passwd1 && $passwd2 && $email && $title && $desc && $url){
if(preg_match("#^[a-z0-9]{4,10}$#i", $login)){ exit("Некорректный логин."); }
if(preg_match("#^[a-z0-9]{4,12}$#i", $passwd1) && preg_match("#^[a-z0-9]{4,12}$#i", $passwd2)){ if(md5($passwd1) != md5($passwd2)){ exit("Пароли не совпадают."); }else{ $passwd = md5($passwd1); } }else{ exit("Некорректный пароль."); }
if (preg_match("/^[-0-9a-z_\.]+@[-0-9a-z^\.]+\.[a-z]{2,6}$/i", $email)){ exit("Некорректный e-mail."); }
if(!preg_match("#^[а-яёa-z\d\.\s-\!]{10,100}$#i", $title)){ exit("Некорректное название сайта."); }
if(!preg_match("#^[а-яёa-z\d,\.\s-\!?]{10,255}$#i", $desc)){ exit("Некорректное описание сайта."); }
if(preg_match("#^http://(www\.)?[a-z\d\.-]+\.[a-z]{2,6}[a-z\d\.-_\?&%=/]*$#", $url)){ exit("Некорректный домен."); }
echo "Спасибо! Регистрация прошла успешно.";
}else{ echo "<strong>Вы не заполнили все поля..</strong>"; die();}
}else{
?>
<form name="form1" method="post" action="">
<table width="100%" border="1" cellspacing="2" cellpadding="2">
<tr>
<td width="200" align="right" valign="top">Логин:</td>
<td align="left" valign="top"><input name="login" type="text" maxlength="10">
мин. 4 макс. 10</td>
</tr>
<tr>
<td width="200" align="right" valign="top">Пароль:</td>
<td align="left" valign="top"><input name="passwd1" type="password" maxlength="12">
мин. 4 макс. 12</td>
</tr>
<tr>
<td width="200" align="right" valign="top">Пароль еще раз:</td>
<td align="left" valign="top"><input name="passwd2" type="password" maxlength="12"></td>
</tr>
<tr>
<td width="200" align="right" valign="top">E-mail:</td>
<td align="left" valign="top"><input name="email" type="text" maxlength="35"></td>
</tr>
<tr>
<td width="200" align="right" valign="top">Название сайта:</td>
<td align="left" valign="top"><input name="title" type="text" size="50" maxlength="70">
- макс. 40</td>
</tr>
<tr>
<td width="200" align="right" valign="top">Описание сайта:</td>
<td align="left" valign="top"><textarea name="desc" cols="50" rows="5" wrap="physical"></textarea></td>
</tr>
<tr>
<td width="200" align="right" valign="top">Ссылка на сайт:</td>
<td align="left" valign="top"><input name="url" type="text" value="http://" size="40" maxlength="40"></td>
</tr>
</table>
<input type="submit" name="submit" value=" Добавить ">
</form>
<?php
}
?>
|
| |
|
|
|
|
|
|
|
для: AlexDIXI
(24.03.2009 в 04:05)
| | Нет... это совсем не то... В файле хранятся данные такого вида:
Вася:пароль1
Маша:пароль2
...
Мне нужно как то поместить в массив логин, прогнать его через цикл и сравнить с введеным...
До меня все очень туго доходит...
$strings=file("users.dat");
foreach ($strings as $string)
{
$element=explode(":", $string);
А вот что сделать дальше чтобы получить массив с именами?
Если можно дайте ссылку где бы можно было статейку на эту тему почитать. Не надо только ссылку на Мануал давать... | |
|
|
|
|
|
|
|
для: Сергей1988
(24.03.2009 в 11:27)
| |
<pre>
<?php
$loginpasswd = array(); // объявляем переменную $loginpasswd массивом НЕ ОБЯЗАТЕЛЬНО
$loginpasswd = file("user.dat"); // получили массив, с данными через : логин и пароль.
// Создаем цикл, который создаст массив только с логинами.
$onlylogin = array(); // объявляем переменную $onlylogin массивом НЕ ОБЯЗАТЕЛЬНО
for($i=0; $i < count($loginpasswd); $i++){ // Начинай с числа которому равен $i. Продолжай цикл пока $i < (меньше) count($loginpasswd) означает число, количество индексов в массиве. Увеличивай $i каждый раз на единицу.
$ulogin = $loginpasswd[$i]; // Заносим в переменную $ulogin текущий массив цикла.
$ex = array(); // объявляем переменную $ex массивом НЕ ОБЯЗАТЕЛЬНО
$ex = explode(":", $ulogin); // в данном случае, т.к. двоеточие только один раз встречается в строке,
//explode делит строку на 2 массива.
// Первый массив будет логином а второй паролем. Т.е. $ex[0] и $ex[1]
$onlylogin[] = $ex[0]; // заносим логин в массив $onlylogin
}
// Вывод
print_r($onlylogin);
?>
|
| |
|
|
|
|
|
|
|
для: Сергей1988
(24.03.2009 в 11:27)
| |
<?
$list = array();
$strings=file("users.dat");
foreach ($strings as $string)
{
list($login, $pwd) = explode(":", $string, 2);
$list[$login] = $pwd;
}
//..
if($list[$_POST['login']] == $_POST['password'])
//...
|
| |
|
|
|
|
|
|
|
для: Trianon
(27.03.2009 в 00:31)
| | Или так, но if вернет ошибку :) Т.к. лоигн не может быть равен паролю ) | |
|
|
|
|
|
|
|
для: AlexDIXI
(27.03.2009 в 01:00)
| | проверьте - потом поговорим. | |
|
|
|
|
|
|
|
для: Trianon
(27.03.2009 в 01:06)
| | Спасибо мужики конечно за помощь но до меня все уже дошло... Я просто не понимал что делал, а все оказалось так просто... Я с самого начала все делал правильно. А нужно было так:
$file_array=array();
$file_array=file(users.dat);
foreach ($file_array as $line)
{
$some=explode(":", $line);
//теперь $some[0] - это имя, а $some[1] - пароль, только его нужно обработать trim()
if (...) {...} ...
}
|
Все очень просто...
Тему я думаю можно удалить...
P.S. При синтаксисе list(...)=explode(...); похоже создавался новый массив, но он уже не содержал в себе все необходимые значения... | |
|
|
|