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

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

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

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

    Joined:
    1 Jun 2008
    Messages:
    1,059
    Likes Received:
    1,067
    Reputations:
    80
    На каких конкретно серверах не работает?
     
  2. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    0o Chris o0 Помимо указанных ошибок у вас также неправильно используется цикл for. Который никогда не завершится. Было:
    PHP:
    //Делим html на строки
    for($i=0$i++; $i<count($html)-1) { 
    Должно быть:
    PHP:
    for($i=0$i<count($html)-1$i++) {
     
    _________________________
  3. |qbz|

    |qbz| Banned

    Joined:
    25 Dec 2009
    Messages:
    385
    Likes Received:
    169
    Reputations:
    65
    Не совсем понял где конкретно эти файлы, толи ты грабишь их, толи это твои, но заменить текст между двумя текстовыми частями можно функцией explode(). Пример:
    $left_part = explode('<!--begin-->', $text);
    $left_part = $left_part[0];
    $right_part = explode('<!--end-->', $text);
    $right_part = $right_part[count($right_part)-1];

    $new_text = $left_part . $some_text . $right_part;
     
    2 people like this.
  4. randman

    randman Members of Antichat

    Joined:
    15 May 2010
    Messages:
    1,366
    Likes Received:
    610
    Reputations:
    1,101
    Думаю удобнее будет сделать всё сразу одной функцией - preg_replace_callback.
     
    1 person likes this.
  5. Kruzak

    Kruzak New Member

    Joined:
    21 Dec 2010
    Messages:
    126
    Likes Received:
    4
    Reputations:
    1
    Можно ли средствами php выполнить поиск по переменным задействованным в выполняемом скрипте?

    допустим нужно каким-то образом проверить все переменные на union, select - если обнаружено - не выполняем скрипт.

    или написать функцию-класс которая будет проверять post & gate? этого хватит чтобы обезопасить скрипт?
     
    #19425 Kruzak, 23 Oct 2011
    Last edited: 23 Oct 2011
  6. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Kruzak на первый вопрос - да, можно провести поиск по всем переменным. На остальное - с данными нужно правильно обращаться и если уж делать фильтрацию, то по белому списку, а не по черному. Откройте для себя модуль PDO в пхп.
     
    _________________________
  7. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Подправил код:
    PHP:
    $curl curl_init();
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_USERAGENT$useragent);
    curl_setopt($curlCURLOPT_URL$url);
    curl_setopt($curlCURLOPT_POSTFIELDS$data);
    $html curl_exec($curl);
    $separator ' ';
    $html explode($separator$html);
    for(
    $i=0$i<count($html)-1$i++) {
    if (
    preg_match('/href=\"\/photo/'$html[$i], $result)) {
    $new '';
    $old 'href="';
    $results[$i] = str_replace($old$new$result);
    }
    }
    print_r($result);
    ?>
    Но массив $result пустой, думаю из-за того, что в строке
    PHP:
    $results[$i] = str_replace($old$new$result);
    $result - массив, а не строка, пробовал сделать так:
    PHP:
    if (preg_match('/href=\"\/photo/'$html[$i], $result[$i])) {
    и
    $results
    [$i] = str_replace($old$new$result[$i]);
    Чтобы сохранял в $result[$i] строки с вхождениями, а потом уже заменять, но получил в ответ такое:
    PHP:
    Array ( [0] => Array ( ) [1] => Array ( ) [2] => Array ( ) [3] => Array ( ) [4] => Array ( ) [5] => Array ( ) [6] => Array ( ) [7] => Array ( ) [8] => Array ( ) [9] => Array ( ) [10] => Array ( ) [11] => Array ( ) [12] => Array ( ) [13] => Array ( ) [14] => Array ( ) [15] => Array ( ) [16] => Array ( ) [17] => Array ( ) [18] => Array ( ) [19] => Array ( ) [20] => Array ( ) [21] => Array ( ) [22] => Array ( ) [23] => Array ( ) [24] => Array ( ) [25] => Array ( ) [26] => Array ( ) [27] => Array ( ) [28] => Array ( ) [29] => Array ( ) [30] => Array ( ) [31] => Array ( ) [32] => Array ( ) [33] => Array ( ) [34] => Array ( ) [35] => Array ( ) [36] => Array ( ) [37] => Array ( ) [38] => и так далее.
    Что не так?
     
    #19427 0o Chris o0, 23 Oct 2011
    Last edited: 23 Oct 2011
  8. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    Теряется сессия после редиректа:
    PHP:
    session_start(); $_SESSION['id_vk']=123456$_SESSION['auth_vk']='qwerty';
    $_SESSION['auth']=1$_SESSION['vip']=1;
    После чего редирект на другую страницу, куки не удалялись.
    Вывод из новой страницы:
    Почему некоторые остались, а в остальных пусто?
     
  9. mff

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

    Joined:
    12 Mar 2008
    Messages:
    2,074
    Likes Received:
    701
    Reputations:
    227
    Как правильно указать папку для перемещения загруженных файлов на сервере?
    PHP:
     move_uploaded_file($_FILES["filename"]["tmp_name"], "/mj2/public_html/1/ab/images/".$_FILES["filename"]["name"]);
    Мне вот сюда нужно: /mj2/public_html/1/ab/images/
     
  10. AnGeI

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

    Joined:
    8 Dec 2008
    Messages:
    395
    Likes Received:
    79
    Reputations:
    16
    #19589 все еще актуально.
    Появился еще один вопрос: начиная с какой версии в php появилась поддержка названий переменных кирилицей и цифрами?
     
  11. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    mff
    Попробуй так:
    PHP:
    move_uploaded_file($_FILES["filename"]["tmp_name"], $_SERVER['DOCUMENT_ROOT']."/1/ab/images/".$_FILES["filename"]["name"]); 
     
  12. Player#1

    Player#1 Member

    Joined:
    11 Nov 2008
    Messages:
    95
    Likes Received:
    35
    Reputations:
    10
    По этому куску кода определить причину невозможно. Вероятно ошибка в коде в другом месте.

    С какой версии - не знаю, но судя по этому она уже была в php 4.4.7
    Цифры поддерживались наверно с первой версии.
     
    1 person likes this.
  13. 0o Chris o0

    0o Chris o0 New Member

    Joined:
    16 Oct 2011
    Messages:
    142
    Likes Received:
    1
    Reputations:
    0
    Хм... Был идиотом, самому сейчас смешно - исправился.
    PHP:
    <?php
    set_time_limit
    (0);
    $data '123'//указываем любые данные
    $url 'http://vkontakte.ru/album50191914_0?rev=1'//путь к альбому
    $useragent 'Mozilla/5.0';
    $curl curl_init();
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_USERAGENT$useragent);
    curl_setopt($curlCURLOPT_URL$url);
    curl_setopt($curlCURLOPT_POSTFIELDS$data);
    $html curl_exec($curl);
    curl_close($curl);
    preg_match_all('/href\=\"\/photo(.*)\"/'$html$result);
    foreach(
    $result[1] as $key => $values) {
    $pos strpos($values'"');
    $result[1][$key] = "http://vkontakte.ru/photo" substr($values0$pos);
    }
    print_r($result[1]); //все ссылки на фото с альбома в полном размере
    ?>
    Надо распарсить ссылку на сам файл, но при использовании cURL'a, например:
    PHP:
    <?php
    set_time_limit
    (0);
    $data '123'//указываем любые данные
    $url 'http://vkontakte.ru/album50191914_0?rev=1'//путь к альбому
    $useragent 'Mozilla/5.0';
    $curl curl_init();
    curl_setopt($curlCURLOPT_RETURNTRANSFER1);
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_USERAGENT$useragent);
    curl_setopt($curlCURLOPT_URL$url);
    curl_setopt($curlCURLOPT_POSTFIELDS$data);
    $html curl_exec($curl);
    curl_close($curl);
    preg_match_all('/href\=\"\/photo(.*)\"/'$html$result);
    foreach(
    $result[1] as $key => $values) {
    $pos strpos($values'"');
    $result[1][$key] = "http://vkontakte.ru/photo" substr($values0$pos);
    }
    print_r($result[1]); //все ссылки на фото с альбома в полном размере
    $curl curl_init();
    curl_setopt($curlCURLOPT_POST1);
    curl_setopt($curlCURLOPT_USERAGENT$useragent);
    curl_setopt($curlCURLOPT_URL$result[1][0];
    curl_setopt($curlCURLOPT_POSTFIELDS$data);
    $html curl_exec($curl);
    curl_close($curl)
    ?>
    Картинка не выводится, да и скрипт выполняется довольно долго. Помогите.
     
    #19433 0o Chris o0, 26 Oct 2011
    Last edited: 26 Oct 2011
  14. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,148
    Reputations:
    886
    PHP:
     $аrr[] = '<a href="http://site.com/file'.$i.'.html">'.$f[rand(0,count($f))].'</a>';


    обясните плз в чем прикол, как бы не пробовал всегда делает перевод строки перед </a>

    то есть получается

    <a href="somelink">somelink
    </a>
     
    _________________________
  15. GRRRL Power

    GRRRL Power Elder - Старейшина

    Joined:
    13 Jul 2010
    Messages:
    823
    Likes Received:
    185
    Reputations:
    84
    Прикол в том, что все строки в массиве $f у тебя заканчиваются переводом строки.
     
    1 person likes this.
  16. krypt3r

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

    Joined:
    27 Apr 2007
    Messages:
    1,507
    Likes Received:
    389
    Reputations:
    101
    Элементы массива $f содержат символ перевода строки, видимо. Прогоните через trim()
     
    1 person likes this.
  17. Konqi

    Konqi Green member

    Joined:
    24 Jun 2009
    Messages:
    2,251
    Likes Received:
    1,148
    Reputations:
    886
    спасибо понял

    трудно помнить о том что не видешь =)
     
    _________________________
  18. Miixxa

    Miixxa New Member

    Joined:
    17 Jul 2007
    Messages:
    19
    Likes Received:
    0
    Reputations:
    0
    Всем привет!
    Столкнулся с одной проблемой по отправке сообщения со своего сайта! Может кто поможет?
    Ситуация следующая, после заполнения полей для отправки сообщения из формы ничего не происходит. Файлы, размещенные на сайте следющие:

    1. contact.swf - сама форма, в которой командный код:
    PHP:
    // 
    // INITIAL SETTINGS
    //
    var sendVars:LoadVars = new LoadVars(this);
    var 
    statusVars:LoadVars = new LoadVars(this);
    bgSelected "";
    //
    // CASCADING STYLE SHEET
    //
    var styles = new TextField.StyleSheet();
    // Set hyperlink colour and decoration here
    styles.setStyle("a:link", {color:'#00FFFF'textDecoration:'none'});
    styles.setStyle("a:hover", {color:'#00FFFF'textDecoration:'underline'});
    txt.html true;
    txt.styleSheet styles;
    //
    // KILL FULLSCREEN (input fields are disabled in fullscreen mode)
    //
    killFullscreen = function () {
        if (
    Stage["displayState"] == "fullScreen") {
            
    Stage["displayState"] = "normal";
        }
    };
    //
    // BUTTON NAMES
    // 
    bttnClear.txt_mc.txt.text "Clear";
    bttnSend.txt_mc.txt.text "Send";
    //
    // BUTTON FUNCTIONS
    //
    bttnClear.bttn.onPress = function() {
        
    clearForm();
    };
    bttnSend.bttn.onPress = function() {
        
    validateForm();
    };
    // 
    // SET FOCUS FIELDS
    //
    fieldName.field.onSetFocus = function() {
        
    killFullscreen();
        
    bgSelected this._parent._name;
        if (
    this.text == "Name") {
            
    this.text "";
        }
    };
    fieldEmail.field.onSetFocus = function() {
        
    killFullscreen();
        
    bgSelected this._parent._name;
        if (
    this.text == "Email") {
            
    this.text "";
        }
    };
    fieldMsg.field.onSetFocus = function() {
        
    killFullscreen();
        
    bgSelected this._parent._name;
        if (
    this.text == "Message") {
            
    this.text "";
        }
    };
    //
    // KILL FOCUS FIELDS
    //
    fieldName.field.onKillFocus = function() {
        
    bgSelected "";
        if (
    fieldName.field.text == "") {
            
    this.text "Name";
        }
    };
    fieldEmail.field.onKillFocus = function() {
        
    bgSelected "";
        if (
    fieldEmail.field.text == "") {
            
    this.text "Email";
        }
    };
    fieldMsg.field.onKillFocus = function() {
        
    bgSelected "";
        if (
    fieldMsg.field.text == "") {
            
    this.text "Message";
        }
    };
    //
    // CLEAR FORM
    //
    clearForm = function () {
        
    fieldName.field.text "Name";
        
    fieldEmail.field.text "Email";
        
    fieldMsg.field.text "Message";
    };
    clearForm();
    //
    // CLEAR STATUS MESSAGE
    //
    clearStatusInt = function () {
        
    statusMsg.text "";
        
    clearInterval(clearStatus);
    };
    //
    // VALIDATE FORM
    //
    function validateForm() {
        
    // Check fields
        
    0;
        if (
    fieldName.field.text == "" or fieldName.field.text == "Name") {
            
    fieldName.field.text "Name";
            
    i++;
        }
        if ((
    fieldEmail.field.text == "") or (fieldEmail.field.text == "Email") or (fieldEmail.field.text.indexOf("@"0) == -1) or (fieldEmail.field.text.indexOf('.'0) == -1)) {
            
    fieldEmail.field.text "Email";
            
    i++;
        }
        if (
    fieldMsg.field.text == "" or fieldMsg.field.text == "Message") {
            
    fieldMsg.field.text "Message";
            
    i++;
        }
        
    // Submit form if fields valid           
        
    if (== 0) {
            
    sendVars.Name fieldName.field.text;
            
    sendVars.Email fieldEmail.field.text;
            
    sendVars.Msg fieldMsg.field.text;
            
    sendVars.sendAndLoad("contact/formSubmit.php"statusVars"GET");
            
    statusMsg.text "Sending...";
            
    statusVars.onLoad = function(success:Boolean) {
                if (
    success) {
                    if (
    statusVars.sent == "success") {
                        
    clearForm();
                        
    statusMsg.text "Message sent";
                    }
                } else {
                    
    statusMsg.text "PHP error!";
                }
                
    clearInterval(clearStatus);
                
    clearStatus setInterval(clearStatusInt3000);
            };
        }
    }

    2. файл FormSubmit.php

    PHP:
    <?php

    $sendTo 
    "[email protected]";
    $subject "Message from your website";

    $name $_GET['Name'];
    $email $_GET['Email'];
    $message $_GET['Msg'];

    $headers  "From: $name <$email> \r\n";
    //$headers .= 'MIME-Version: 1.0' . "\r\n";
    //$headers .= 'Content-type: text/html; charset=iso-8859-1' . "\r\n";
    $msg "Name: ".$name."\n\nE-mail: ".$email."\n\nMessage: ".$message."";
    mail($sendTo$subject$msg$headers);

    echo 
    "sent=success";

    ?>
    3. файл phpInfo.php

    PHP:
    <html>
    <body>
    <?php
        phpinfo
    ();
    ?>
    </body>
    </html>

    Сообственно и все. Только не работает, т.е. не отправляются сообщения с сайта.

    Поскажите в чем проблема? Спасибо!

    // Gifts: удалил левые ссылки
     
    #19438 Miixxa, 28 Oct 2011
    Last edited by a moderator: 28 Oct 2011
  19. Gifts

    Gifts Green member

    Joined:
    25 Apr 2008
    Messages:
    2,494
    Likes Received:
    807
    Reputations:
    614
    Miixxa
    1) Если отправлять напрямую через скрипт FormSubmit.php - письмо отправляется?
    2) Пути правильные? Посмотрите логи, куда стучатся пользователи.
     
    _________________________
  20. pr_vk

    pr_vk New Member

    Joined:
    28 Oct 2011
    Messages:
    11
    Likes Received:
    0
    Reputations:
    0
    хочу выучить эти языки, подскажите с чего начать?
     
Thread Status:
Not open for further replies.