Jump to content

kilogram

User
  • Posts

    120
  • Joined

  • Last visited

  • Days Won

    4

Posts posted by kilogram

  1. Вот попробовал использовать эту функцию


    <html><body>
    <?php
    function privet($a,${
    echo $a,' ',$b;
    }
    call_user_func('privet',5,8);
    ?>
    </body></html>

    тоже самое можно написать и так без неё,даже короче выходит:


    <html><body>
    <?php
    function privet($a,${
    echo $a,' ',$b;
    }
    privet(5,8);
    ?>
    </body></html>

    Зачем тогда она?

    • Like 1
  2. Со всем я понял, не понял вот эту строку echo $b+1,"<br>";, не нужно было все комментировать, ответить лишь то что меня интересовало.

    А оказывается все совсем просто, я думал что после строки echo $b+1,"<br>" в строке ниже return $b * $b; используется те же 11, а оказывается нет, потому что здесь нету присваивания, а просто прибавление на единичку и все.

    • Like 1

  3. <?php
    function father($a){
    echo $a, "<br>";
    function child(${
    echo $b+1,"<br>";
    return $b * $b;
    }

    return $a * $a * child($a);
    }

    $result = father(10);
    echo $result;
    echo '<br>';
    ?>

    Если взять отдельно такой код, получается что

    после этой строки

      echo $b+1,"<br>";   

    выводится 11, но следующая за ней строка она не берет это число 11 и не подставляет в переменную $b, почему подставляется 10, а не 11 в строке ниже?

    return  $b * $b;

    • Like 1

  4. <html><body>
    <?php
    function father($a){
    echo $a, "<br>";
    function child(${
    echo $b+1,"<br>";
    return $b * $b;
    }
    return $a * $a * $child($a);
    }

    father(10);
    child(30);
    ?>
    </body></html>

    То есть передав аргумент 10 функции father, объявив нвутри этой функции father функцию child, тоже с одним параметром, я получается ему передаю то же значение 10, которое увеличивается на 1 после этой строки echo $b+1,"<br>"; и стает 11?

    Ещё, попробовал убрать вот эту строку return $b * $b; и код со всем не изменился, а выдает те же значения что и с этой строкой, что и без неё? Почему?

    Насчет этой строки:

    return $a * $a * child($a);

    здесь получается 10*10*30 что ли? Как считается?

    • Like 1
  5. Читаю в книге про глобальные переменные.

    Правильно ли так объявлять глобальные переменные? Удобно и хорошо ли это? Вижу тут удобный доступ сразу из локальной функции прямо в глобалный массив.


    <html><body>
    <?php
    $monthes = array(
    1 => "Январь",
    2 =>"Февраль",
    3=>"Март",
    4=>"Апрель"
    );
    function getMonthName($n){
    global $monthes;
    return $monthes[$n];
    }
    echo getMonthName(2);
    ?>
    </body></html>

  6. А в этой строке: <?=selectItems($names, $_REQUEST['surname'])?>

    $names - это в первый параметр функции подставился сам массив name который описан выше? В массиве цикл форич он возвращает за первым разом в первый параметр $names попадает значение "Weaving", 2 раз - "Goddard", 3-ий раз - "Taylor" после отправки формы? Во второй параметр также после отправки формы из-за цикла формч, тоже 3 раза во второй параметр попадают значения ключей цикла форич?

    • Like 1
  7. Скажите ,вот когда мы написали "<select name="surname">"

    это равносильно мы создали переменную $surname с которой можем делать что угодно? Ещё, немного не понятно, каким образом попадают в глобальный ассрциативный массив REQUEST значения surname(Фамилия) с массива $names? Если да, каким образом?

    • Like 1

  8. <html><body>
    <?php
    function selectItems($items, $selected=0) {
    $text = "";
    foreach($items as $k=>$v){
    if($k == $selected) $ch = " selected"; else $ch = "";
    $text .= "<option$ch value='$k'>$v</option>\n";
    }
    return $text;
    }

    $names = array(
    "Weaving" => "Hugo",
    "Goddard" => "Paul",
    "Taylor" => "Robert",
    );

    if(isset($_REQUEST['surname'])){
    $name = $names[$_REQUEST['surname']];
    echo "Вы выбрали: {$_REQUEST['surname']} - {$name} ";
    }
    ?>
    <!-- Форма для выбора имени человека -->
    <form action="<?=$_SERVER['SCRIPT_NAME']?>" method="post">
    Выберите имя:
    <select name="surname">
    <?=selectItems($names, $_REQUEST['surname'])?>
    </select><br>
    <input type="submit" value="Узнать фамилию">
    </form>
    </body></html>

    НЕ совсем понятна передача параметров функции. Не понятны вот эти 2 строки, как они работают

    if($k == $selected) $ch = " selected"; else $ch = "";
    $text .= "<option$ch value='$k'>$v</option>\n";

    И как происходит работа с вот этим элементом формы:

    <select name="surname">
    <?=selectItems($names, $_REQUEST['surname'])?>
    </select><br>

    • Like 1
  9. То есть написав просто какое-то значение в поле name, например name="vasya" в глобальный массив REQUEST доступен во всех файлах, значение vasya полетит в РИКВЭСТ и запишется в него такое: $REQUEST['vasya'], а написав так name="vasya['Pupkin']" я вроде создаю этим двумерный массив в масиве РИКВЭСТ? Получается в РИКВЕСТЕ такое после name="vasya['Pupkin']" —-> $REQUEST['vasya']['Pypkin']?

  10. В документации написано:

    REQUEST - это ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE.

    REQUEST - я так понимаю это массив глобальный в котором внутри 3 массива вложенные?

    В строке

    <input type="submit" name="doGo" value="Go">

    поле name=doGO. Это значение отправляется в глобальный массив REQUEST, а как же если согласно документации в глобальном ассоциативном массиве REQUEST 3 параметра?

  11. Расшифруйте логику работы что куда берется и получается в этом цикле.

    Смущают вот эти названия в параметрах как ими манипуляция происходит ['doGo'] и ['known'] ?

    Что откуда куда достается и вставляется куда?



    <html><body>
    <?php
    if(@$_REQUEST['doGo']) {
    foreach(@$_REQUEST['known'] as $k=>$v) {
    if($v) echo "Вы знаете язык $k!<br>";
    else echo "Вы не знаете языка $k. <br>";
    }
    }
    ?>
    <form action="<?=$_SERVER['SCRIPT_NAME'] ?>" method="post">
    Какие языки программирования вы знаете? <br>
    <input type="hidden" name="known[PHP]" value="0">
    <input type="checkbox" name="known[PHP]" value="0">PHP<br>
    <input type="hidden" name="known[PHP]" value="0">
    <input type="checkbox" name="known[Perl]" value="0">Perl<br>
    <input type="submit" name="doGo" value="Go">
    </form>

    </body></html>

  12. Все , запустил программу на С++ в пхп, оказывается нужно было переименовать в расширение cgi расширение exeи кинуть в папку cgi апача программу, а не в cgi возле папки сайта или в папкe www-сайта.

    Скажите, а для каких возможностях используются cgi, какие проги пишутся примерно чтоб использовать cgi для пхп?

  13. Изучаю пхп, там пишут что так не используют, но это важно знать как подключается cgi в пхп.

    Вот написал код.


    #include <iostream>
    #include <stdlib.h>
    using namespace std;

    void main(){

    char *RemoteAddr = getenv("REMOTE_ADDR");
    char *QueryString = getenv("QUARY_STRING");
    cout<<"Content-type: text/html"<<endl<<endl;
    cout<<"<html><body>";
    cout<<"<h>Здравствуйте! Мы знаем о Вас все!</h1>";
    printf("Ваш IP-адрес: %s<br>",RemoteAddr);
    printf("Вот параметры, которые вы указали: %s", QueryString);
    cout<<"</body></html>";
    cin.get();
    }

    Скомпилировал программу, получил файл 1.exe, кинул этот файл возле файла index.php

    Далее там пишут вот такое, что пишут, на фото вложил.

    В файле index.php ничего не писал, там просто

    <?php echo 'Привет мир!'; ?>

    Не могу понять, что в браузере ввести чтоб вызвать методом GET эту программу написанную на С++.

    Когда ввожу так: http://test.ru/1.exe?a=1&b=2

    происходит просто скачка файла 1.exe на компьютер, но не запуск cgi-программы(я так понял это называется любая программа написанная на ином языке, которую мы хотим запустить в браузере,верно?).

    Подскажите, как запустить программу 1.exe?

    b494cbad9813b1010fa4fd746043ff67.jpg

    Апач находится у меня на диске С:\www

    Я зашел в C:\www\conf

    в файл httpd.conf

    Ввел там такое:


    AddHandler cgi-script .cgi .pl .bat .exe
    AddType cgi-script .exe

    Затем зашел в C:\www\conf нашел файл просто

    httpd(текстовой) нашел там


    <Directory "C:/www/cgi-bin">
    AllowOverride None
    Options None
    Order allow,deny
    Allow from all
    </Directory>

    и ввел ниже этого:


    <Directory "C:/www/htdocs/test.ru/www">
    #тут могут быть и другие настройки типа AllowOverride или Allow
    Options ExecCGI
    </Directory>

    Ввожу такую ссылку: http://test.ru/1.exe?a=1&b=2

    Опять скачивается файл 1.exe но не запускается

    Переименовал файл 1.exe на 1.cgi и запустил http://test.ru/cgi-bin/1.cgi?a=1&b=2

    Выдает ошибку:


    Not Found

    The requested URL /cgi-bin/1.cgi was not found on this server.

    716e7dda6fe9c84569739a6bdd15f615.jpg

×
×
  • Create New...

Important Information

We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue. See more about our Guidelines and Privacy Policy