[php] Новичкам: задаем вопросы

Discussion in 'PHP' started by _Great_, 26 May 2007.

Thread Status:
Not open for further replies.
  1. ZavodiJIo

    ZavodiJIo Elder - Старейшина

    Joined:
    12 Nov 2006
    Messages:
    215
    Likes Received:
    163
    Reputations:
    9
    PHP:
    <?php

    // html 
    print_r('
    <html>
    <head>
    <title>Test page!</title>
    <meta http-equiv="Content-type" content="text/html; charset="windows-1251">
    <meta name="keywords" content="Test of my product" >
    <meta name="description" content="Test of scritps, writed by ac1d">
    </head>
    <body bgcolor="black">
    <font style="font-size: 30px; color: #006400;">

    '
    );

    $chb '<input type="checkbox" name="dir" value="1"> ';

    // установка соединения
    $conn_id ftp_connect("host"); 

    // вход с именем пользователя и паролем
    $login_result ftp_login($conn_id"login""password"); 

    // проверка соединения
    if ((!$conn_id) || (!$login_result)) {
        die(
    "Не удалось подключиться к FTP серверу!");
    }

    echo 
    "<b>Текущая директория:</b>" ftp_pwd($conn_id) . "\n";

    // попытка сделать somedir текущей
    if (ftp_chdir($conn_id"/php/")) {
        echo 
    ftp_pwd($conn_id) . "<br> \n";
    } else { 
        echo 
    "Не удалось сменить директорию <br> \n";
    }

    $site ftp_nlist($conn_id"."); 
    foreach(
    $site as $v) if(is_dir($v)) echo $chb $v '<br>';
    // закрытие соединения
    ftp_close($conn_id);
    print_r('
    </font>
    </body>
    </html>'
    );
    ?>

    Нужно вывести директории поддоменов из каталога /www/ на ftp. В директории /www/ так же лежат файлы основного домена. Скрипт выводит только директории созданные для корневого домена, а нужно выводить как раз наоборот только директории с поддоменами.
     
  2. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Посоветуйте, как правильно организовать отправку капчи:

    В куках сохраняется значение:
    captcha=_md5_капчи_;
    И показывается картинка:
    <img src="http://site.ru/?_цыфирки_разные_ alt="">

    1) Курлом захожу на страницу авторизации

    2) Смотрю цыферки после site.ru/? и показываю капчу в скрипте

    3) preg_match_all('|Set-Cookie: (.*);|U', $res, $results);
    $cookies = implode(';', $results[1]);


    4) Отсылаю курлом капчу + curl_setopt($ch, CURLOPT_COOKIE, $cookies);

    Ну конечно не работает не Х*я :D

    хиден полей нету ... отправка всех заголовков не помогает(

    Понять в чём проблема не могу :(
     
  3. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    Какой-то у тебя сильно хитрожопый способ

    Я делаю так:
    В файле с капчей стартую сессию, в переменную сессии сую ранд, тот же рэнд на капчу, а в скрипте просто сверяю значения переменной сессии и инпута от пользователя, вроде всё элементарно :cool:
     
  4. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Что-то не совсем понял ))
    вечер наверно )


    можеш пример кода показать ... кусочек :)
     
  5. Ru}{eeZ

    Ru}{eeZ Elder - Старейшина

    Joined:
    19 Feb 2008
    Messages:
    454
    Likes Received:
    73
    Reputations:
    -5
    image.php:
    PHP:
    session_start();
    $_SESSION['captcha'] = rand(100000,999999); //его же вставляем в текст, выводимый картинкой
    index.php:
    PHP:
    session_start();
    if(
    $_SESSION['captcha'] == $_POST['captca']) {
      echo 
    'антикапча фореве';
    } else {
      echo 
    'пошёл на ***';
    }
    форма:
    HTML:
    <img src = "image.php">
    <form method = "POST">
      <input type = "text" name = "captcha">
      <input type = "submit">
    </form>
    
     
    #10305 Ru}{eeZ, 6 Jun 2009
    Last edited: 6 Jun 2009
  6. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Ru}{eeZ либо ты не понял, либо я ))

    Мне не нужно генерировать капчу и отдавать её пользователю .... мой скрипт должен заходить на сайт *не мой) смотреть капчу (показывать мне) и отправлять обратно :)
     
    1 person likes this.
  7. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    2geforse
    Если я правильно понял, то вот тебе мой пример для отправки смс на номера билайна. Выводится каптча с сайта билайна и форма, в которую ты вписываешь циферки. Думаю, ты сможешь отредактировать под свои нужды... Или кинь сайт, каптчу с которого ты будешь вводить.

    PHP:
    <?php
    $url
    ="http://www.beonline.ru/portal/comm/send_sms";
    $cfile "cookie.txt";
    function 
    curl($url,$post)
    {
        
    $cfile 'cookies.txt';
        
    $ch curl_init();
        
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
        
    curl_setopt($chCURLOPT_URL$url);
        
    curl_setopt($chCURLOPT_HEADER1);
        
    curl_setopt($chCURLOPT_POSTFIELDS$post);
        
    curl_setopt($chCURLOPT_COOKIEJAR$cfile); 
            
    curl_setopt($chCURLOPT_COOKIEFILE$cfile); 
        
    curl_setopt($chCURLOPT_FOLLOWLOCATIONtrue);
        
    curl_setopt($chCURLOPT_USERAGENT"Opera/9.64 (Windows NT 5.1; U; ru) Presto/2.1.1");
        
    curl_setopt($chCURLOPT_POST1);
        
    $result curl_exec($ch);
        
    curl_close($ch); 
        return 
    $result;
    };

    $result=curl($url,""); //Открываем страницу с каптчей
    preg_match('[&nbsp;&nbsp;&nbsp;<IMG SRC=\"(\S+)\" WIDTH=\"146\"]'$result$pic);    //извлекаем картинку с цифрами

    preg_match('[NAME=\"confirm_key\" VALUE=\"(\S+)\" MAXLENGTH=\"4\">]'$result$key);    //извлекаем код в hidden

    echo "<img src='http://www.beonline.ru/".$pic[1]."'>";    //выводим каптчу


    //отправляем каптчу, текст смс и т.д.
    if(isset($_POST['code']))
    {
        echo 
    "<br>CODE:".$_POST['code'];
    $post="deferto=&adv_year=&send=send&confirm_key=".$_POST['key']."&destination_number_from=ordinary&phone=9067654776&message=hi+ooooa&mlength=148&confirm_code=".$_POST['code'];
        
    $result curl($url,$post);
        echo 
    $result;
    };
    ?>
    <form name="send" method="POST"><b>Введите код, указанный  на картинке</b><input size="10" type="text" name="code"><input value="Отправить" type="submit"><input type="hidden" name="key" value="<?php echo $key[1]; ?>"></form>
     
  8. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Help
    помогите и мне

    PHP:
     $icq = new ICQclient($uin$password); 
    $icq->connect(); 
    if (
    $icq->connected

        
    $icq->login(); 
        if (
    $icq->logged
        { 
            
    $status $icq->getstatus($uin_sendto); 
            
    $icq->send_message($uin_sendto$message1); 
            echo 
    "ok"
        } 
    Как отправлять 2 сообщения на разные icq ?
    Использую вот этот класс - http://kanicq.ru/invisible/icqlib.rar
     
  9. GreenBear

    GreenBear наркоман с медалью

    Joined:
    7 May 2005
    Messages:
    2,547
    Likes Received:
    1,398
    Reputations:
    612
    не понимаю чего тут не понять?
    PHP:
    $icq->send_message($uin_sendto$message1);  
    $icq->send_message($uin_sendto2$message2);  
     
    1 person likes this.
  10. mff

    mff Elder - Старейшина

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    GreenBear, я так и делал - но неработает :(
     
  11. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Всю ночь просидел ... не выходит :(

    PHP:
    ### Заходим на сайт и получаем капчу
    $ch curl_init('http://mirtesen.ru/login');
    curl_setopt($chCURLOPT_RETURNTRANSFER1);
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');
    $res  curl_exec($ch);
    curl_close($ch);

    ### Получаем код для картинки
    preg_match('#<img src="http://mirtesen.ru/captcha/login?(.*?)"#i'$res$match_capt);

    ### Получаем куки
    preg_match_all('|Set-Cookie: (.*);|U'$res$results);
    $cookies implode(';'$results[1]);


    ### Показываем капчу
    echo '<img src="http://mirtesen.ru/captcha/login'.$match_capt[1].'" alt="">
    <p><form name="spam" action="index.php" method="POST">
    <input type="text" name="captcha">
    <input type="submit" value ="Ok"></form>'
    ;


    ### Отправляем обратно капчу/логин/пассворд
    if(isset($_POST['captcha'])){
        
    $ch curl_init('http://mirtesen.ru/login');
    curl_setopt($chCURLOPT_USERAGENT'Opera/9.25 (Windows NT 5.1; U; ru)');
    curl_setopt($chCURLOPT_PROXY$proxy);
    curl_setopt($chCURLOPT_RETURNTRANSFER0);
    curl_setopt($chCURLOPT_HEADER1);
    curl_setopt($chCURLOPT_POST1);
    curl_setopt($chCURLOPT_FOLLOWLOCATION1);
    curl_setopt($chCURLOPT_POSTFIELDS'auth%5Bbackurl%5D=http%3A%2F%2Fmirtesen.ru%2F&auth%5Blogin%5D=LOGIN%40mail.ru&auth%5Bpassword%5D=PASSWORD&auth%5Bcaptcha%5D='.trim($_POST['captcha']).'&auth%5Bremember%5D=on');
    curl_setopt($chCURLOPT_COOKIE$cookies);
    $res  curl_exec($ch);
    curl_close($ch);
    }
    В куках хранится значение капчи, без них вобще никак не получится,т.к. даже если в браузере отключить куки, то капча не вводится...
     
  12. Patronik

    Patronik Member

    Joined:
    16 Mar 2009
    Messages:
    111
    Likes Received:
    12
    Reputations:
    0
    У меян вопрос. почему программа не записывает в файл $file_data? все значения переменных $all_user_row = $login. " " .$password. " " .$emeil. " " .$city. "\n";.

    Проверяю цыклом масив $_POST, все переменные получены, а в файл не записываються, записиваеться только логин и пароль, а емеил и город нет.

    $login = $_POST['login'];
    $password = $_POST['password'];
    $emeil = $_POST['emeil'];
    $city = $_POST['login'];
    foreach($_POST as $name => $value)

    {
    echo''.$name.' '.$value.' <br>';
    }

    if ($vse_gud = true)
    {
    chdir("D:\Webservers\home\libra.com\www");
    $file_data = fopen("all_User_data.txt", "a+");
    $all_user_row = $login. " " .$password. " " .$emeil. " " .$city. "\n";
    fwrite($file_data, $all_user_row);
    $User_row = $login. " " .$password."\n";
    $file = fopen("User_data.txt", "a+");
    fputs($file, $User_row);
    fclose($file_data);
    fclose($file);


    Сорри я уже разобрался, все работатет.
     
    #10312 Patronik, 7 Jun 2009
    Last edited: 7 Jun 2009
  13. Myload

    Myload Banned

    Joined:
    15 Mar 2009
    Messages:
    0
    Likes Received:
    96
    Reputations:
    6
    что за ошибка Warning: mb_ereg() expects parameter 2 to be string, array given?
     
  14. wildshaman

    wildshaman Elder - Старейшина

    Joined:
    16 Apr 2008
    Messages:
    477
    Likes Received:
    483
    Reputations:
    99
    функция mb_ereg не может в качестве второго параметра принимтаь массив (у вас так), а может строку.
     
  15. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    В твоём коде куки не приходят.

    Как там посылается каптча? потомучто я ненашёл связи md5(номер каптчи) и значений в кукисах
     
    #10315 FireFenix, 7 Jun 2009
    Last edited: 7 Jun 2009
  16. geforse

    geforse Elder - Старейшина

    Joined:
    2 Mar 2008
    Messages:
    617
    Likes Received:
    290
    Reputations:
    1
    Это я просто забыл тут хедер написать, в коде у мну есть HEADER, 1

    Потом отправляю с помощью:
    curl_setopt($ch, CURLOPT_COOKIE, $cookies);

    Насколько я понял, там в куках есть значение mirtesen=....;
    нужно передавать его + капчу .... я так и делаю, но что-то не получается(
     
    #10316 geforse, 7 Jun 2009
    Last edited: 7 Jun 2009
  17. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    как тогда оно сверяет, что ты ввёл нужную каптчу? я пробывал залогинится и сотрел в кикусах мд5 хеш от номера каптчи. Сходства ненашёл.
     
    #10317 FireFenix, 7 Jun 2009
    Last edited: 7 Jun 2009
  18. ZavodiJIo

    ZavodiJIo Elder - Старейшина

    Joined:
    12 Nov 2006
    Messages:
    215
    Likes Received:
    163
    Reputations:
    9
    Товарищи, есть скрипт (код ниже) нужно этим скриптом вывести все папки с поддоменами с фтп. Папки пооддоменов лежат в каталоге /www/. Так же каталог /www/ - это директория для основного домена, тоесть там лежат файлы корневого домена. У меня в корневом домене только одна папка - immages, собственно которую скрипт и выводит, а мне нужно выводить какраз таки всё кроме неё. Тоесть мне нужно выводить только папки с поддоменами (для последующей заливки в них файлов.
    PHP:
    <?php

    // html 
    print_r('
    <html>
    <head>
    <title>Test page!</title>
    <meta http-equiv="Content-type" content="text/html; charset="windows-1251">
    <meta name="keywords" content="Test of my product" >
    <meta name="description" content="Test of scritps, writed by ac1d">
    </head>
    <body bgcolor="black">
    <font style="font-size: 30px; color: #006400;">

    '
    );

    $chb '<input type="checkbox" name="dir" value="1"> ';

    // установка соединения
    $conn_id ftp_connect("host"); 

    // вход с именем пользователя и паролем
    $login_result ftp_login($conn_id"login""password"); 

    // проверка соединения
    if ((!$conn_id) || (!$login_result)) {
        die(
    "Не удалось подключиться к FTP серверу!");
    }

    echo 
    "<b>Текущая директория:</b>" ftp_pwd($conn_id) . "\n";

    // попытка сделать somedir текущей
    if (ftp_chdir($conn_id"/php/")) {
        echo 
    ftp_pwd($conn_id) . "<br> \n";
    } else { 
        echo 
    "Не удалось сменить директорию <br> \n";
    }

    $site ftp_nlist($conn_id"."); 
    foreach(
    $site as $v) if(is_dir($v)) echo $chb $v '<br>';
    // закрытие соединения
    ftp_close($conn_id);
    print_r('
    </font>
    </body>
    </html>'
    );
    ?>

     
  19. FireFenix

    FireFenix Elder - Старейшина

    Joined:
    3 Jun 2009
    Messages:
    390
    Likes Received:
    115
    Reputations:
    23
    В цикле когда получаешь список файлов, делай переход по подпапкам и получай с них файлы
     
    #10319 FireFenix, 7 Jun 2009
    Last edited: 7 Jun 2009
  20. 5triker

    5triker Elder - Старейшина

    Joined:
    5 Apr 2007
    Messages:
    62
    Likes Received:
    41
    Reputations:
    1
    если у тебя в #10915 посте выложен полный код , то не работает потому , что при сабмите формы скрипт получает новую капчу и куки , и отправляет уже их , естественно они не совпадают с введненными тобой

    как вариант сделать перед получением картинки
    Code:
    if(!isset($_POST[captcha]))
    либо делать сабмит на другую страницу , с которой уже и будут отправляться данные
     
Thread Status:
Not open for further replies.