вытащить login:pass из файла

Тема в разделе "PHP", создана пользователем Kol0book, 3 авг 2009.

Статус темы:
Закрыта.
Модераторы: latteo
  1. Kol0book

    Kol0book Постоялец

    Регистр.:
    17 июл 2009
    Сообщения:
    55
    Симпатии:
    5
    Привет! ребят, нужно из текстового файла вида:

    login : pass
    login : pass
    login : pass

    вытащить отдельно логин и пароль в скрипт
    то есть поместить их в $login и $pass

    мне просто главное как вытащить хотя бы первую строку login:pass
    Спасибо!
     
  2. Tasker

    Tasker Писатель

    Регистр.:
    31 янв 2007
    Сообщения:
    4
    Симпатии:
    0
    Если файл содержит записи вида
    login1 : pass1
    login2 : pass2
    login3 : pass3
    то следующий код разберет записи в массив
    $file = file("pass.txt");
    $result = array();
    foreach ($file as $value) {
    $s = explode(" : ", $value);
    $item = array();
    $item['login'] = $s[0];
    $item['pass'] = $s[1];
    $result[] = $item;
    }
    Потом забираешь логины и пароли
    $result[0]['login']
    $result[0]['password']
    и т.д.
     
  3. 404 Not found

    404 Not found Прохожие

    внесу свои 5 копеек
    $item['login'] = trim($s[0]);
    $item['pass'] = trim($s[1]);
     
  4. baddan

    baddan

    Регистр.:
    14 мар 2008
    Сообщения:
    354
    Симпатии:
    42
    в меем понимании код слишком нагрузит систему, как в плане памяти так и по скорости работы.

    PHP:
    $log=$_POST['login'];
    $pas=$_POST['password'];

    $file file("pass.txt");
    $flag=0;
    foreach (
    $file as $value) {
     if(
    trim($value)=="$log:$pas"){
      list(
    $login,$password) = explode(" : "trim($value));
      
    $flag=1;
      break;
     }
     if(
    $flag==1){
      echo 
    "$login:$password";
     }else{
      die(
    'Netu tAkix');
     }
    }
     
  5. toha

    toha

    Регистр.:
    8 июн 2006
    Сообщения:
    299
    Симпатии:
    26
    Kol0book, сделайте все это выдергивание через МС Эксель :)
     
  6. homme

    homme Постоялец

    Регистр.:
    19 апр 2009
    Сообщения:
    55
    Симпатии:
    12
    А возможно последний код применить для 4рех значений?
    Имею: [001]:nickname:login:password
    Хочу из списка забрать, только login и password.

    Использую функцию explode, что бы разбить строку на подстроки.
    PHP:
    $data "[0]:admin:E5bmAA:mail@club.ru"
    list(
    $cifra$user$login$pass) = explode(":"$data);
    echo 
    "$login:$pass"
    Работает, но у меня большой список.
    Делаю так.
    PHP:
    $data file("p1s.txt"); 
    list(
    $cifra$user$login$pass) = explode(":"$data);
    echo 
    "$login:$pass"
    Не работает. Выводит только ":"
    Меняю на
    PHP:
    $file fopen("http://site.ru/p1s.txt""r"); 
    Вылетают ошибки:
    Тоже самое происходит, если взять последний код(немного переделанный)
    PHP:
    $cif=$_POST['cifra']; 
    $user=$_POST['nick'];
    $log=$_POST['login']; 
    $pas=$_POST['password']; 
     
    $file file("p1s.txt"); 
    $flag=0
    foreach (
    $file as $value) { 
     if(
    trim($value)=="$cif:$user:$log:$pas"){ 
      list(
    $cifra$nick$login$password) = explode(":"trim($value)); 
      
    $flag=1
      break; 
     } 
     if(
    $flag==1){ 
      echo 
    "$login:$password"
     }else{ 
      die(
    'Netu tAkix'); 
     } 
    }  
    Ответ: Netu tAkix. Помогите пожалуйста разобраться. Огромное спасибо!
     
  7. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    почитай про функцию preg_match_all и PREG_PATTERN_ORDER
     
  8. homme

    homme Постоялец

    Регистр.:
    19 апр 2009
    Сообщения:
    55
    Симпатии:
    12
    Пробывал через регулярные выражения написать, но не получилось. Запутался выставляя квантификаторы.Мне показалось, что выше описанным способом намного проще.
     
  9. saen

    saen

    Регистр.:
    6 авг 2006
    Сообщения:
    756
    Симпатии:
    129
    PHP:
    $file file_get_contents("base.txt");
    $data explode("\n",$file);
    foreach(
    $data as $value)
    {
    $conf explode(":",$value);
    $users [] = $conf;
    }
    для первого пользователя:
    id - $users[0][0]
    login - $users[0][1]
    password - $users[0][2]
    email - $users[0][3]

    для остальных по аналогии
     
    homme и Kol0book нравится это.
  10. KillDead

    KillDead

    Регистр.:
    11 авг 2006
    Сообщения:
    883
    Симпатии:
    540
    Значит так, по порядку

    file возвращает массив, и explode естественно не может тут работать

    Открывать удалённый файл в данном счучаи- глупо, надо юрзать относительный путь, как в нижнем примере

    Не работает потому-что сравнение идёт только первого значения надо сравнение $flag==1 вынести за цикл
    PHP:
    $cif=$_POST['cifra']; 
    $user=$_POST['nick'];
    $log=$_POST['login']; 
    $pas=$_POST['password']; 
     
    $file file("p1s.txt"); 
    $flag=0
    foreach (
    $file as $value) { 
     if(
    trim($value)=="$cif:$user:$log:$pas"){ 
      list(
    $cifra$nick$login$password) = explode(":"trim($value)); 
      
    $flag=1
      break; 
     } 
     

     if(
    $flag==1){ 
      echo 
    "$login:$password"
     }else{ 
      die(
    'Netu tAkix'); 
     } 
     
     
     
    homme нравится это.
Статус темы:
Закрыта.