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

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

Thread Status:
Not open for further replies.
  1. OMG!!

    OMG!! Elder - Старейшина

    Joined:
    25 Feb 2008
    Messages:
    230
    Likes Received:
    70
    Reputations:
    -3
    а вообще..
    Лови небольшой скриптик.. кладешь в корень.. запускаешь, предварительно положив base64 gzip в mypass.txt :)
    По завершению - скрипт передаст результаты в decoded.txt
     
  2. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    объясните плиз про <?php ?>, щас говорят что типо это можно не закрывать, а почему? в чем разница?
    И расскажите поподробне про коментарии (//, /* */)
    что лучше использовать?
    а то одни говорит одно другие дгругое и все это не обосновано!
     
  3. Pashkela

    Pashkela Динозавр

    Joined:
    10 Jan 2008
    Messages:
    2,750
    Likes Received:
    1,044
    Reputations:
    339
    http://java.sun.com/docs/codeconv/html/CodeConventions.doc.html

    Есть общепризнанные мировые стандарты
     
  4. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    Файл include.php
    PHP:
    <?php
    //немного кода...
    ?><!-- а вот тут мы поставили случайнo пробел(образно говоря)-->
    Файл index.php
    PHP:
    <?php
    include('include.php');  //включаем файл
    header('Content-type: application/download'); //отправка в браузер заголовка, вывода не должно быть, а он есть в include.php
    echo 'asdasd';
    ?>
    Если php сконфигурирован с опр. опцией(авто-расстановки заголовков), то ошибки не будет.
    Иначе:
    Как ты понимаешь все возникло из-за случайно поставленного пробела после тега ?>

    Не закрыв тег, мы избавимя от таких проблем

    ----------------------
    Насчет комментариев:
    Разрешается использовать все что душе угодно.
    Для однострочных комментариев(пояснений 1 строки или части кода) существуют:
    PHP:
    # это однострочный комментарий
    // это тоже однострочный комментарий
    А это многострочный комментарий:
    PHP:
    /* строка1
    строка2
    строка3
    */
    Что использовать решать тебе, все зависит от потребности. Комментарии никак не влияют на исполнение программы, нужны лишь для программиста.

    Ссылка:
     
  5. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Как правильно сделать запрос в БД
    есть ли в таблице table ячейка id со значением =1

    На выходе 1 или 0 ну или true false
     
  6. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    SELECT 'true' FROM table WHERE id='1'
     
  7. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Я вот намутил скрипт:

    PHP:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">   
    <html>   
     <head> 
      <meta http-equiv="Content-Type" content="text/html; charset=windows-1251"> 
      <title>qwerty</title>   
     </head>   
     
     
     <body>  

    <?php

    $sposob 
    "Банк";
    switch (
    $sposob)
    {
        case 
    "Банк":
        print
    "Чтобы оплатить через Банк...";
        break;
                case 
    "Почта":
        print
    "Чтобы оплатить через Почту...";
        break;
        case 
    "Юнион":
        print
    "Чтобы оплатить через WebMoney...";
        break;

        default:
        echo 
    "Вы не выбрали способ оплаты";
        break;
    }



    ?>
     
     </body>   
    </html>
    А вот как сделать это с кнопками я не представляю, чтоб было 3 кнопки и када нажимаешь на одну, там высвечивалось то что в case????
     
  8. ikolla$$

    ikolla$$ Banned

    Joined:
    6 Apr 2008
    Messages:
    80
    Likes Received:
    27
    Reputations:
    5
    <input type="submit" name="Bank">.так шоле)
     
  9. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    такой вопрос: есть у нас форма, мы посылаем пост запрос на скрипт, но такая проблемма: надо несколоко раз подрят отправить туда этот запрос!
    как сделать так? - форма -> скрипт посредник-> скрипт
     
    #7829 heretic1990, 23 Jan 2009
    Last edited: 23 Jan 2009
  10. Chaak

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    include в посреднике на другой скрипт)?
     
  11. heretic1990

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

    Joined:
    2 Jul 2008
    Messages:
    487
    Likes Received:
    182
    Reputations:
    5
    ChaaK а при чём здесь include?
    скрипт посредник должен отправлять запросы на скрипт , столько раз сколько ему задали в форме.
    P.S. мой извращённый ум здесь ни кто не понимает?!
     
    1 person likes this.
  12. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    heretic1990 Как-то так, в форме нужно будет добавить поля posrednik_to - адрес куда пересылать и posrednik_times. Скрипт - ничего возвращать не будет, если же очень хочется - то учим курл и правим функцию post. И еще одно - все будет посылаться сервером, на котором лежит этот скрипт посредник, так что и притензии за спам будут к вам)
    PHP:
    function post($url='',$content='')
    {
        GLOBAL 
    $cookie;

        
    $ch curl_init();  
        
    curl_setopt($chCURLOPT_URL,$url);
        
    curl_setopt($chCURLOPT_HEADER0);
        
    curl_setopt($chCURLOPT_NOBODY1);
        
    curl_setopt($chCURLOPT_RETURNTRANSFER,1);
        
    curl_setopt($chCURLOPT_TIMEOUT15);
        
    curl_setopt($chCURLOPT_USERAGENT'Mozilla/5.0 (Windows; U; Windows NT 5.1; ru; rv:1.9.0.1) Gecko/2008070208');
        
        if (!empty(
    $content)) {curl_setopt($chCURLOPT_POST1);curl_setopt($chCURLOPT_POSTFIELDS$content);} else {curl_setopt($chCURLOPT_POST0);}
        
    curl_exec($ch);
        
    curl_close($ch);
    }

    if (isset(
    $_POST['posrednik_to']))
    {
        
    $to=$_POST['posrednik_to'];
        
    $num=empty($_POST['posrednik_times']) ? $_POST['posrednik_times'] : 1;
        unset(
    $_POST['posrednik_to'],$_POST['posrednik_times']);
        
    $c=array();
        foreach(
    $_POST as $a=>$b$c[]=$a.'='.urlencode($b);
        
    $c=implode('&',$c);
        for (
    $i=1;$i<=$num;$i++) post($to,$c);
    }
     
    _________________________
    #7832 Gifts, 23 Jan 2009
    Last edited: 23 Jan 2009
  13. [Raz0r]

    [Raz0r] Elder - Старейшина

    Joined:
    25 Feb 2007
    Messages:
    425
    Likes Received:
    484
    Reputations:
    295
    http://framework.zend.com/manual/en/coding-standard.html
    ;)
     
    1 person likes this.
  14. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    Можно как-то вычислить и вывести сколько осталось жить кукам?
    Допустим в куках есть запись billing
     
  15. MaTpOc

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

    Joined:
    5 May 2008
    Messages:
    633
    Likes Received:
    475
    Reputations:
    25
    Немогу понять в чем проблема?!!
    скрипт верный, ошибок нет, но выдает какую то фигню((((

    PHP:
    if ($user[id]) {

        
    $o_tickets $db->query_return_array("
            SELECT * 
            FROM ticket 
            WHERE userid = '
    $session[userid]
            AND is_open
            ORDER BY date_lastreply_tech DESC"
        
    );
        
        
    $r_tickets $db->query_return_array("
            SELECT * 
            FROM ticket 
            WHERE userid = '
    $session[userid]
            AND !is_open
            ORDER BY date_closed DESC"
        
    );

        if (
    is_array($o_tickets)) {
            foreach (
    $o_tickets AS $result) {

                
    $result['subject'] = trimstring($result['subject'], 301);
                if (!
    $result['ref']) {
                    
    force_refs();
                }

                if (
    $result['date_opened']) {
                    
    $result['date_opened'] = our_date($result['date_opened']);
                }
                if (
    $result['date_lastreply']) {
                    
    $result['date_lastreply'] = our_date($result['date_lastreply']);
                }
                if (
    $result['date_closed']) {
                    
    $result['date_closed'] = our_date($result['date_closed']);
                }
                if (
    $result['date_lastreply_tech']) {
                    
    $result['date_lastreply_tech'] = our_date($result['date_lastreply_tech']);
                } else {
                    
    $result['date_lastreply_tech'] = $dplang['n/a'];
                }

                if (
    count($oticket) < 5) {
                    
    $oticket[] = $result;
                } else {
                    
    $oticket_more++;
                }
            }
        }

        if (
    is_array($r_tickets)) {
            foreach (
    $r_tickets AS $result) {

                
    $result['subject'] = trimstring($result['subject'], 301);
                if (!
    $result['ref']) {
                    
    force_refs();
                }

                if (
    $result['date_opened']) {
                    
    $result['date_opened'] = our_date($result['date_opened']);
                }
                if (
    $result['date_lastreply']) {
                    
    $result['date_lastreply'] = our_date($result['date_lastreply']);
                }
                if (
    $result['date_closed']) {
                    
    $result['date_closed'] = our_date($result['date_closed']);
                }
                if (
    $result['date_lastreply_tech']) {
                    
    $result['date_lastreply_tech'] = our_date($result['date_lastreply_tech']);
                }
                if (
    $result['awaiting_tech']) {
                    
    $result['awaiting_tech'] = $dplang['tech_reply'];
                } else {
                    
    $result['awaiting_tech'] = $dplang['your_reply'];
                }
                if (
    count($rticket) < 5) {
                    
    $rticket[] = $result;
                } else {
                    
    $rticket_more++;
                }
            }
        }
    }
     
    #7835 MaTpOc, 24 Jan 2009
    Last edited: 24 Jan 2009
  16. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Здравствуйте!

    Как
    1. залогиниться через socket
    2. Вернуть в переменную содержимле страницы для проверки входа на успешность
    3. перейти на нужную страницу

    Раньше с сокетами никогда не работал, накопал вот такой код, но не знаю как правильно им воспользоваться:
    PHP:
    fp=fsockopen("site.ru",80,$errno,$errstr,10);
    if (!
    fp) {die();}

    $out "GET /login.php?email=".$email."&pass=".$pass." HTTP/1.0\r\n";
    $out .= "Host: vkontakte.ru\r\n";
    $out .= "User-Agent: ".$user_agent."\r\n";
    $out .= "Cookie: income=1\r\n";
    $out .= "Content-Type:text/xml; charset=windows-1251\r\n\r\n";
    fwrite($fp,$out);
    $ans='';
    while(!
    feof($fp))
    {
    $ans.=fgets($fp,128);
    }
    fclose($fp);
    В Любом случае все большое спасибо, как всегда ответившим с меня плюсики! ;)
     
  17. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    MaTpOc "Немогу понять в чем проблема?!!" - Вначале проверь есть ли проблема, а потом сформулируй почему считаешь это проблемой - шоу экстрасенсов не на этом канале

    OnArs Берешь сниффер (например LiveHTTPHeaders для фаерфокса) - смотришь что именно передается на страницу и так же передаешь сокетами (каждая строка заканчивается "\r\n". В конце - "\r\n\r\n")
     
    _________________________
    1 person likes this.
  18. Byrger

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

    Joined:
    7 Mar 2008
    Messages:
    521
    Likes Received:
    26
    Reputations:
    -4
    [​IMG]

    Почему куки создаются с префиксом страницы?
    хотя создаю я так setcookie(billing, "XH6KV4")

    Ну и понятно очистить я смогу куки только со страницы с такимже префиксом....почему так и как можно исправить?
     
    #7838 Byrger, 24 Jan 2009
    Last edited: 24 Jan 2009
  19. oRb

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

    Joined:
    9 May 2008
    Messages:
    294
    Likes Received:
    582
    Reputations:
    256
    http://ru2.php.net/setcookie
     
  20. OnArs

    OnArs Banned

    Joined:
    1 Aug 2008
    Messages:
    211
    Likes Received:
    13
    Reputations:
    1
    Воспользовался сниффером.

    теперь код выглядит так:
    PHP:
    $data="login=spamer.ucoz.com&password=957000&Submit=++OK++&z=enter_form";

    $fp fsockopen("web.tak.ru"80$errno$errstr10);
    $out "POST /enter.php HTTP/1.1\r\n";
    $out .= "Host: web.tak.ru\r\n";
    $out .= "Referer: google.ru\r\n";
    $out .= "User-Agent: Opera\r\n";
    $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
    $out .= "Content-Length: ".strlen($data)."\n\n";
    $out .= $data."\r\n\r\n";

    fputs($fp$out);

    while(
    $gets=fgets($fp,2048))
    {
    print 
    $gets;
    }
    fclose($fp);
    т.е.:
    делаю логин для tak.ru
    мой login: spamer.ucoz.com
    мой pass: 957000
    Строка возвращемая в переменную $data действительная и правильна(верна), получал её сниффером для FF, который советовал Gifts.
    Логин и пароль для tak.ru верны, там даже на счету 0,34 (или примерно так) рублей.

    При выполнении скрипта, Я вижу страницу tak.ru которая говорит мне о том, что введённый пароль для данного логина не верно, это говорит о том, что параметры login и password передаются не верно, но передаются, иначе (в том случае если бы они или один из них не передавались бы) получили бы ошибку на сайте tak.ru о том, что либо логин либо пароль не введены.

    Подскажите пожалуйста, что делаю не верное, где и как исправить.

    Большое Спасибо!
     
Thread Status:
Not open for further replies.