Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP Puzzles. Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. PHP 5. На примерах. Авторы: Кузнецов М.В., Симдянов И.В., Голышев С.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум (новые сообщения вниз) Структурный форум

тема: Почему из массива считывается только первый элемент???

Сообщения:  [1-9] 

 
 автор: method   (16.05.2005 в 12:23)   письмо автору
 
   для: cheops   (16.05.2005 в 12:07)
 

2cheops & Loki: сэнкс, пошёл переписывать.... :)

   
 
 автор: cheops   (16.05.2005 в 12:07)   письмо автору
 
   для: 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);

?>

В этом случае будет проверен каждый элемент массива.

   
 
 автор: Loki   (16.05.2005 в 08:54)   письмо автору
 
   для: 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)   письмо автору
 
   для: 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,
ЗАПИСЬ НЕ ОСУЩЕСТВЛЯЛАСЬ!!!
[поправлено модератором]

   
 
 автор: cheops   (15.05.2005 в 17:35)   письмо автору
 
   для: method   (15.05.2005 в 15:06)
 

<?php
for($i 0$i count($arr); $i)
{
  if(
условие)
  {
     
// Действия
     
break; // Выход из цикла
  
}
  else
  {
     
// Действия
     
break; // Выход из цикла
  
}
}
?>

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

   
 
 автор: isset   (15.05.2005 в 15:31)   письмо автору
 
   для: 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)   письмо автору
 
   для: cheops   (15.05.2005 в 13:03)
 

Мне это ничего не даёт, что ты мне тут написал, бреак я поставил потому как у меня
в моём файле юсерс.пхп ников одинаковых было по 5-6 штук, и при регистрации
слова: авторизация не пройдена писалось стока, скока таких ников в БД...
А вопрос я могу повторить: почему с массива считывается только первый элемент!?

   
 
 автор: cheops   (15.05.2005 в 13:03)   письмо автору
 
   для: 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, который останавливает цикл, поэтому после того, как обработана первая строка, цикл останавливается и складывается впечатление, что видна только первая строка.

   
 
 автор: method   (15.05.2005 в 03:10)   письмо автору
 
 

Люди помогайте, читаю файл в массив, указываю расположение искомого элемента
[ 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, то скрипт их зарегистрирует-запишет в файл......кароче не могу догнать почему скрипт считывает тока первый элемент массива.....

[поправлено модератором]

   

Сообщения:  [1-9] 

Форум разработан IT-студией SoftTime
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования