Вытягивание мыла

Тема в разделе "PHP", создана пользователем apekoff, 1 июл 2010.

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

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    Не могу додуматься как повторять функцию до положительного результата (получения письма)
    PHP:
    $GmailDomen="gmail.com";
    echo 
    "<br>Заходим в $Email по паролю $GmailPass.";
    $MailText GetNewGmailMessages($Email,$GmailPass);
    preg_match_all("/(?<=Password : ).*/",$MailText,$Password);
    if (!isset(
    $Password[0][0]))
    {
        
    AddFile("./Errors.txt","\r\n\r\n новых аккаунтов не найдено!");
        echo 
    " новых аккаунтов не найдено!";
    }
    else
        echo 
    " аккаунтов найдено: ".count($Password[0]).".";
    нужно чтобы если -"новых аккаунтов не найдено!" - то опять делался заход на почту
    PHP:
    $GmailDomen="gmail.com";
    echo 
    "<br>Заходим в $Email по паролю $GmailPass.";
    $MailText GetNewGmailMessages($Email,$GmailPass);
    preg_match_all("/(?<=Password : ).*/",$MailText,$Password);
    и так далее пока письмо не придет ..
    Как это сделать ?Голова чумная :)
     
  2. pitkina

    pitkina

    Регистр.:
    1 апр 2007
    Сообщения:
    253
    Симпатии:
    176
    как вариант через while, цикл будет повторяться, пока $Password[0][0] не существует

    PHP:
    set_time_limit(0);
    while (!isset(
    $Password[0][0])) {
    $GmailDomen="gmail.com";
    echo 
    "<br>Заходим в $Email по паролю $GmailPass.";
    $MailText GetNewGmailMessages($Email,$GmailPass);
    preg_match_all("/(?<=Password : ).*/",$MailText,$Password);
    // sleep(5); # интервал попыток 5 сек
    }

    if (isset(
    $Password[0][0])) echo " аккаунтов найдено: ".count($Password[0]).".";
     
  3. apekoff

    apekoff Создатель

    Регистр.:
    19 авг 2008
    Сообщения:
    40
    Симпатии:
    1
    PHP:
    set_time_limit(0);
    while (!isset(
    $Password[0][0])) {
    $GmailDomen="gmail.com";
    echo 
    "<br>Заходим в $Email по паролю $GmailPass.";
    $MailText GetNewGmailMessages($Email,$GmailPass);
    preg_match_all("/(?<=Password : ).*/",$MailText,$Password);
    // sleep(5); # интервал попыток 5 сек
    }
    if (isset(
    $Password[0][0])) echo " аккаунтов найдено: ".count($Password[0])."."
    что то не так .. Он почему то читает только первое письмо , такое ощущение как будто значение $Password остановилось на первом варианте .Как только перезапускаю скрипт через некоторое время - вылезают все следующие $Password в строчку (шутк 9) .Скрипт в первом случае повторялся 10 раз и показывал 1 значение $Password.. хм вот ..оставил прошлый вариант поставил задержку в 25 секунд :)
     
  4. diavolic

    diavolic

    Регистр.:
    17 мар 2010
    Сообщения:
    522
    Симпатии:
    102
    жесть то какая....

    1) "/(?<=Password : ).*/" знак вопроса тут чего делает? если ты хотел ограничить какой то символ, то его наверное надо было перед вопросом указать? а .* на кой вообще, если ты эти символы даже рассматривать не будешь? скинь текст для парсинга сюда, поправим твою маску.

    2) приучи себя, что $Password[0][0] выдает не то что ты в скобках пытался найти а вообще всю фразу, которая с маской совпадает. Если ты хотел найти только то что в скобках, надо писать $Password[0][1]

    3) если используется preg_match_all то обычно обходят все значения которые она возвращает в цикле. в твоем примере достаточно было и preg_match

    4) логически было правильнее бы использовать do {} while(); а не while{};
     
Статус темы:
Закрыта.