|
|
|
| Люди помогайте, читаю файл в массив, указываю расположение искомого элемента
[ 0 ], а скрипт считывает тока первый элемент....
файл reg.php:
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd" >
< html>
< head>
< title>Untitled Document < / title >
< meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
< /head>
< body bgcolor="#000066" text="#FFFFFF" link="#FF0000" vlink="#FF0000" alink="#00FFFF">
< center>
< font color="#66FFFF" size="+5">Регистационная форма< /font >< br> < br>< font color="#66CCFF">< b>Ваше Имя< /b>< /font>< br>
< /center>
< form action="reg.php" method="post" name="reg" >
< center> < input name="login" type="text" size="20" maxlength="20">< /center>< br>< center>
< br>< font color="#66CCFF">< b> Ваш пароль< /b>< /font>< br>
< br>
< input name="pasw" type="password" size="20">
< /center>< center>< br >
< input name="go_new_us_reg" type="submit" value="Регистрация">
< /center>
< /form>
< /body>
< /html>
<?php
include("config.php");
$_us = file($bd_us);
for ($i = 0; $i < count($_us); $i++) {
$new_us = explode("|", $_us[$i]);
if ($login == $new_us[0]) {
print "авторизация не пройдена";break;
}
else{ echo "авторизация прошла успешно";
$r_us = fopen($bd_us, "a");
fputs($r_us, "$str_us\n");
break;
fclose($r_us);}
}
?>
|
файл view.php
< !DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
< html>
< head>
< title>Untitled Document< /title>
< meta http-equiv="Content-Type" content="text/html; charset=windows-1251">
< /head>< body>
<?php
include("config.php");
$us_v = file($bd_us);
$co = sizeof($us_v);
for($i=0;$i<$co;$i++){
list($name,$password,$status,$dt) = split('[|]', trim($us_v[$i]));
echo "< font color=red >".'< a href="/profile/'.$name.'.php">'.$name."< /a>"."< /font>"." - "."< font color=blue>".$status."< /font>"." "."< font size=small color=green>".$dt."< /font>"."< br>";
}
fclose($us_v);
?>
< /body>
< /html>
|
файл config.php
<?php
error_reporting(0);
$bd_us = "users.php";
$status = "Pexota";
$dt=date('d-m-Y [H:i:s]');
$str_us = "$login|$pasw|$status|$dt";
?>
|
файл users.php
trooper|87tgf87|Pexota|14-05-2005 [11:00:42]
tady|09786789|Pexota|14-05-2005 [11:02:56]
root|87yuio|Pexota|14-05-2005 [11:03:11]
method|ihbipuuh89y6|Pexota|14-05-2005 [11:03:23]
|
А прабла вот в чём: если в форме в инпуте login ввести trooper,
и засубмитить, то скрипт не будет записывать в файл такого юзера,
а если ввести root, tady или method, то скрипт их зарегистрирует-запишет в файл......кароче не могу догнать почему скрипт считывает тока первый элемент массива.....
[поправлено модератором] | |
|
|
|
|
|
|
|
для: method
(15.05.2005 в 03:10)
| | В блоке кода
<?php
include("config.php");
$_us = file($bd_us);
for ($i = 0; $i < count($_us); $i++) {
$new_us = explode("|", $_us[$i]);
if ($login == $new_us[0]) {
print "авторизация не пройдена";break;
}
else{ echo "авторизация прошла успешно";
$r_us = fopen($bd_us, "a");
fputs($r_us, "$str_us\n");
break;
fclose($r_us);}
}
?>
|
Не зависимо от результата выполняется break, который останавливает цикл, поэтому после того, как обработана первая строка, цикл останавливается и складывается впечатление, что видна только первая строка. | |
|
|
|
|
|
|
|
для: cheops
(15.05.2005 в 13:03)
| | Мне это ничего не даёт, что ты мне тут написал, бреак я поставил потому как у меня
в моём файле юсерс.пхп ников одинаковых было по 5-6 штук, и при регистрации
слова: авторизация не пройдена писалось стока, скока таких ников в БД...
А вопрос я могу повторить: почему с массива считывается только первый элемент!? | |
|
|
|
|
|
|
|
для: method
(15.05.2005 в 15:06)
| |
<?php
include("config.php");
$_us = file($bd_us);
for ($i = 0; $i < count($_us); $i++) {
$new_us = explode("|", $_us[$i]);
if ($login == $new_us[0]) {
print "авторизация не пройдена";[b]break;[/b]
}
else{ echo "авторизация прошла успешно";
$r_us = fopen($bd_us, "a");
fputs($r_us, "$str_us\n");
[b]break;[/b]
fclose($r_us);}
}
?>
|
Плюс разберись с логикой, почему то если равно, то не пройдена, а если не равно то пройдена. | |
|
|
|
|
|
|
|
для: method
(15.05.2005 в 15:06)
| |
<?php
for($i = 0; $i < count($arr); $i)
{
if(условие)
{
// Действия
break; // Выход из цикла
}
else
{
// Действия
break; // Выход из цикла
}
}
?>
|
for такого вида будет выполняться только один цикл, не зависимо ни от каких обстоятельств, так как условие может принимать только true или false и в любом случае цикл будет остановлен. | |
|
|
|
|
|
|
|
для: cheops
(15.05.2005 в 17:35)
| | 2isset'у & cheops'у:
Спасибо вам большое ребята за внимание!...
Начну объяснять СНОВА:
есть файл users.php, в нём хранятся логины юзеров,есть файл reg.php в котором есть форма регистрации,при успехе субмита юзер записывается в users.php .
$_us = file($bd_us); //читаем users.php в массив
for ($i = 0; $i < count($_us); $i++) {
$new_us = explode("|", $_us[$i]);
if ($login == $new_us[0]) { //если такой ник(который введён в поле инпут) уже
print " пользователь с таким ником уже существует";break;//есть в uses.php, печатаем следуйщее
}
else{ echo "вы успешно зарегестрированы";//если ник регистрируемого и ники
$r_us = fopen($bd_us, "a"); //в БД не совпали регистрируем его
fputs($r_us, "$str_us\n");
break;
fclose($r_us);}
}
|
Я вас умоляю,забудьте про бреак,и ваще протестите всё это ...
А то припираетесь как заговорённые......
Суть в том что первая запись в users.php считывается, и условие выполняется,
Все остальные записи игнорируются,не берутся в учёт!!!
Мне нужно чтоб: если ник который ввёл юзер в поле инпут уже есть в users.php,
ЗАПИСЬ НЕ ОСУЩЕСТВЛЯЛАСЬ!!!
[поправлено модератором] | |
|
|
|
|
|
|
|
для: method
(16.05.2005 в 02:02)
| | Я бы попробовал так:
<?
$_us = file($bd_us); //читаем users.php в массив
$proverka=1;
for ($i = 0; $i < count($_us); $i++)
{
$new_us = explode("|", $_us[$i]);
if ($login == $new_us[0]) $proverka=0;
}
if ($proverka)
{
echo "вы успешно зарегестрированы";
}
else
{
echo " пользователь с таким ником уже существует";
}
?>
|
| |
|
|
|
|
|
|
|
для: method
(16.05.2005 в 02:02)
| | Тестировать бесполезно - оно выдаст тоже результат, что и у вас, попробуйте изменить сам скрипт, например так
<?php
$_us = file($bd_us); //читаем users.php в массив
// Переменная принимает значение true
// если такой пользователь уже зарегистрирован
$flag = false;
for ($i = 0; $i < count($_us); $i++)
{
$new_us = explode("|", $_us[$i]);
if ($login == $new_us[0])
{
// если такой ник(который введён в поле инпут) уже
$flag = true;
}
}
if($flag)
{
print " пользователь с таким ником уже существует";
}
else
{
echo "вы успешно зарегестрированы";//если ник регистрируемого и ники
$r_us = fopen($bd_us, "a"); //в БД не совпали регистрируем его
fputs($r_us, "$str_us\n");
fclose($r_us);
}
?>
|
В этом случае будет проверен каждый элемент массива. | |
|
|
|
|
|
|
|
для: cheops
(16.05.2005 в 12:07)
| | 2cheops & Loki: сэнкс, пошёл переписывать.... :) | |
|
|
|