Вопросы Php по Human Emulator

Тема в разделе "PHP", создана пользователем chuchea, 5 май 2010.

Модераторы: latteo
  1. chuchea

    chuchea Создатель

    Регистр.:
    6 янв 2009
    Сообщения:
    33
    Симпатии:
    2
    Здраствуйье!С
    Сразу прошу прощения, если запостил не в тот раздел.
    Вообщем проблема такова:

    Многие знакомы с таким интсрументом как Human Emulator.
    Чтобы было возможно работать с ним нужно знать Php, в котором я весьма слаб.

    Так вот например для регистрации на том же h_ttp://blogs.technet.com прописываем следующие макросы:

    Код:
    $browser->navigate("http://blogs.technet.com/user/CreateUser.aspx");
    $browser->wait(1);
    $input->set_value_by_name("ctl00_bcr_ctl00___Username",Gregory);
    $input->set_value_by_name("ctl00_bcr_ctl00___Password",$password);
    $input->set_value_by_name("ctl00_bcr_ctl00___Password2",578jip);
    $input->set_value_by_name("ctl00_bcr_ctl00___Email",fresers@gmail.com);
    $input->set_value_by_name("ctl00_bcr_ctl00___Email2",fresers@gmail.com);
    $button->click_by_name("ctl00_bcr_ctl00___CreateAccount");
    $browser->wait(1);
    
    Подскжите как прописать код, чтобы Human Emulator брал никнеймы и email с текстового файла на компе?
    Очень нуждаюсь в помощи!
     
  2. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    PHP:
    //Берем первую строку из файла и удаляем (например логин)
    function GetLogin() {
    $logins file('logins.txt');
    $login$logins[0];
    $logintrim($login);
    unset(
    $logins[0]);
    $fp fopen('source.txt''w');
    fputs($fpimplode(''$logins) );
    fclose($fp);
    return 
    $login;
    }

    //Берем случайную строку из файла и не удаляем. (мыло)
    function GetMail() {
        
    $path='mails.txt';
        
    $mails file($path);
        
    $index rand(0count($mails) - 1);
        
    $mail$mails[$index];
        
    $mailpreg_replace("|\n|"," ",$mail);
        
    $mailtrim($mail);
        return 
    $mail;
    }
    это функции. одна берет строку первую из файла и удаляет. другая берет случайную строку и ничего не удаляет. юзать можешь так:
    PHP:
    $loginGetLogin();
    $mailGetMail();
    затем хуману подставляешь примерно так:
    PHP:
    $input->set_value_by_name("ctl00_bcr_ctl00___Email",$mail);
    $input->set_value_by_name("ctl00_bcr_ctl00___Email2",$mail);
     
    vtmkportal, Urch, gothmog и 2 другим нравится это.
  3. chuchea

    chuchea Создатель

    Регистр.:
    6 янв 2009
    Сообщения:
    33
    Симпатии:
    2
    Значит получается, что я добавляю после
    Код:
    <?php
    // The following code is required to properly run XWeb Human Emulator
    require("../Templates/tech.php");
    
    //Берем первую строку из файла и удаляем (например логин) 
    function GetLogin() { 
    $logins = file('logins.txt'); 
    $login= $logins[0]; 
    $login= trim($login); 
    unset($logins[0]); 
    $fp = fopen('source.txt', 'w'); 
    fputs($fp, implode('', $logins) ); 
    fclose($fp); 
    return $login; 
    } 
    
    //Берем случайную строку из файла и не удаляем. (мыло) 
    function GetMail() { 
        $path='mails.txt'; 
        $mails = file($path); 
        $index = rand(0, count($mails) - 1); 
        $mail= $mails[$index]; 
        $mail= preg_replace("|\n|"," ",$mail); 
        $mail= trim($mail); 
        return $mail; 
    } 
    
    $login= GetLogin(); 
    $mail= GetMail();
    
    А в $input->set_value_by_name("ctl00_bcr_ctl00___Username",$login);
    И нужно ли прописывать полный путь к файлу?
     
  4. Delk0

    Delk0

    Регистр.:
    26 мар 2010
    Сообщения:
    284
    Симпатии:
    47
    Если файл лежит в папке со скриптом то не обязательно прописывать.
     
  5. phillip

    phillip

    Регистр.:
    4 сен 2007
    Сообщения:
    413
    Симпатии:
    15
    да, можно и так. обращай побольше внимания на точные мелкие штучки всякие. поначалу когда осваиваешься это самая тормозящая и бесячая особенность. например счас ты написал $l ogin вместо $login (сделал лишний пробел). а в первом посте-
    PHP:
    $input->set_value_by_name("ctl00_bcr_ctl00___Email2",fresers@gmail.com);
    вместо
    PHP:
    $input->set_value_by_name("ctl00_bcr_ctl00___Email2","fresers@gmail.com");
    (не добавил кавычки. любая строка, которую ты придумал, должна заключаться в кавычках. если это не переменная) то есть
    PHP:
    $input->set_value_by_name("ctl00_bcr_ctl00___Email2","fresers@gmail.com"); 
    в кавычках. а переменная- без:
    PHP:
    $input->set_value_by_name("ctl00_bcr_ctl00___Email2",$login);
    по аналогии с этими функциями- пишутся и все остальные. взять случайный город, взять случайное имя, случайную фамилию. ну и тд, все что хуману надо
     
  6. JohnTroy

    JohnTroy Создатель

    Регистр.:
    29 июн 2007
    Сообщения:
    24
    Симпатии:
    0
    создал logins.txt и source.txt (положил в папку со скриптом)
    вставил функцию в отдельный скрипт и привязал его к основному
    в основном скрипте добавил
    $login= GetLogin();
    $input->set_value_by_name('username',$login);

    в итоге все время берется первое имя в списке, а строки в logins.txt не удаляются
     
  7. Yaggi Jah

    Yaggi Jah Постоялец

    Регистр.:
    15 ноя 2006
    Сообщения:
    75
    Симпатии:
    31
    PHP:
    function GetLogin() {
        
    $logins=file_get_contents('logins.txt');
        
    $logins=explode("\n",trim($logins));
        
    $newlog=array();
        
    $a=0;
        
    $count=sizeof($logins);
        while(
    $a<$count) {
            if(
    $a>0$newlog[]=trim($logins[$a]);
            
    $a++;
        }
        
    $fp=fopen('logins.txt','w');
        
    fwrite($fp,implode("\n",$newlog));
        
    fclose($fp);
        return 
    $logins[0];
    }  
     
  8. JohnTroy

    JohnTroy Создатель

    Регистр.:
    29 июн 2007
    Сообщения:
    24
    Симпатии:
    0
    Yaggi Jah
    скажите а как сделать что бы данные (логин, пароль, емейл) брались из разных файлов построчно начиная с первого и дальше (1,2,3,4,...)?
    тоесть что бы при регистрации аккаунта, бралась сначало первая строка из каждого файла (login.txt, pass.txt, mail.txt). Потом вторая, и т.д.

    пробывал так
    PHP:
    //Подключаем текстовый файл с емейлами, берутся построчно
    $mails array_map("trim"file("mails.txt"));
    foreach(
    $mails as $k=>$mail) {

    //Подключаем текстовый файл с паролями, берутся построчно
    $passs array_map("trim"file("pass.txt"));
    foreach(
    $passs as $i=>$pass) {
    получается что сначала берутся все строки из файла mails.txt и только первое значение из pass.txt Потом опятьс все строки из mails.txt и второе значение.
     
  9. mrr

    mrr

    Регистр.:
    21 окт 2007
    Сообщения:
    373
    Симпатии:
    390
    PHP:
    $a=file('login.txt');
    $b=file('pass.txt');
    $c=file('mail.txt');

    обработку в цикл на количество строк в файлах
    и обращаться к переменным в цикле как к
    :
    $a[$iи т.д.
     
  10. mrr

    mrr

    Регистр.:
    21 окт 2007
    Сообщения:
    373
    Симпатии:
    390
    Здесь не нужна никакая функция, только цикл:
    PHP:
    $a=file('login.txt');
    $b=file('pass.txt');
    $c=file('mail.txt');

    // 100 - это количество строк в файлах, которое нужно обработать
    for ($i=0;$i<100;$i++)
    {
    $login=$a[$i];
    $pass=$b[$i];
    $mail=$c[$i];
    }
     
    nemecff, roshik и JohnTroy нравится это.