Jump to content

kilogram

User
  • Posts

    120
  • Joined

  • Last visited

  • Days Won

    4

Everything posted by kilogram

  1. <html><body> <?php ## Печать всей таблицы ASCII-символов. // Сначала создаем массив того, что мы собираемся выводить, // не заботясь о форматировании (дизайне) информации for ($i=0,$x=0; $x<16; $x++) { for ($y=0; $y<16; $y++) { $chars[$x][$y] = array($i, chr($i)); $i++; } } // Теперь выводим накопленную информацию, используя идеологию // вставки участков кода в HTML-документ ?> <table border=1 cellpadding=3 cellspacing=0> <? foreach ($chars as $row) {?> <tr> <? foreach ($row as $cell) { ?> <td> <?=$cell[0]?>: <b><tt><?=$cell[1]?></tt></b> </td> <? }?> </tr> <? }?> </table> </body></html> Как работает вывод двумерного ассоциативного массива в этом коде? $chars[$x][$y] = array($i, chr($i)); - здесь каждому элементу созданного массива $chars присваиватся значение результата анонимного вызова массива array без имени?
  2. kilogram

    call_user_func

    Вот попробовал использовать эту функцию <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> Зачем тогда она?
  3. Со всем я понял, не понял вот эту строку echo $b+1,"<br>";, не нужно было все комментировать, ответить лишь то что меня интересовало. А оказывается все совсем просто, я думал что после строки echo $b+1,"<br>" в строке ниже return $b * $b; используется те же 11, а оказывается нет, потому что здесь нету присваивания, а просто прибавление на единичку и все.
  4. <?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;
  5. <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 что ли? Как считается?
  6. <html><body> <?php function selfcount() { static $count = 0; $count++; echo $count; } for($i=0; $i<5; $i++) selfcount(); ?> </body></html> Почему со словом static в результате получается 12345, а без этого слова 11111?
  7. Читаю в книге про глобальные переменные. Правильно ли так объявлять глобальные переменные? Удобно и хорошо ли это? Вижу тут удобный доступ сразу из локальной функции прямо в глобалный массив. <html><body> <?php $monthes = array( 1 => "Январь", 2 =>"Февраль", 3=>"Март", 4=>"Апрель" ); function getMonthName($n){ global $monthes; return $monthes[$n]; } echo getMonthName(2); ?> </body></html>
  8. А в этой строке: <?=selectItems($names, $_REQUEST['surname'])?> $names - это в первый параметр функции подставился сам массив name который описан выше? В массиве цикл форич он возвращает за первым разом в первый параметр $names попадает значение "Weaving", 2 раз - "Goddard", 3-ий раз - "Taylor" после отправки формы? Во второй параметр также после отправки формы из-за цикла формч, тоже 3 раза во второй параметр попадают значения ключей цикла форич?
  9. Скажите ,вот когда мы написали "<select name="surname">" это равносильно мы создали переменную $surname с которой можем делать что угодно? Ещё, немного не понятно, каким образом попадают в глобальный ассрциативный массив REQUEST значения surname(Фамилия) с массива $names? Если да, каким образом?
  10. <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>
  11. Да, можно так: $st = "Том и Джери - весёлый мультфильм и очень интересный!"; $st = str_replace('весёлый мультфильм и', '', $st); echo $st; Сажите ,а как моим кодом сделать такое же без str_replace?
  12. <html><body> <?php $st = "Том и Джери - весёлый мультфильм и очень интересный!"; $person = explode("веселый мультфильм и",$st,6); list($p) = $person; echo $p; ?> </body></html> Как вырезать строку "веселый мультфильм и" и вывести Том и Джери - очень интересный?
  13. То есть написав просто какое-то значение в поле name, например name="vasya" в глобальный массив REQUEST доступен во всех файлах, значение vasya полетит в РИКВЭСТ и запишется в него такое: $REQUEST['vasya'], а написав так name="vasya['Pupkin']" я вроде создаю этим двумерный массив в масиве РИКВЭСТ? Получается в РИКВЕСТЕ такое после name="vasya['Pupkin']" —-> $REQUEST['vasya']['Pypkin']?
  14. Я хотел спросить как попадают элементы массива known в МАССИВ РИКВЭСТ в этом коде?
  15. А попадает в РИКВЭСТ с массива known от инпутов за каждой итерацией вытягиваются значения с отправленной формы в массив РИКВЭСТ?
  16. А массив known создается каким образом? За каждой итерацией вытягивается с формы и передается в качестве элемента массиву Request?
  17. То есть там может быть сколько угодно параметров в $_REQUEST? Скажите <input type="hidden" name="known[PHP]" value="0"> Куда попадает вот это known ?
  18. В документации написано: REQUEST - это ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE.REQUEST - я так понимаю это массив глобальный в котором внутри 3 массива вложенные? В строке <input type="submit" name="doGo" value="Go"> поле name=doGO. Это значение отправляется в глобальный массив REQUEST, а как же если согласно документации в глобальном ассоциативном массиве REQUEST 3 параметра?
  19. Расшифруйте логику работы что куда берется и получается в этом цикле. Смущают вот эти названия в параметрах как ими манипуляция происходит ['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>
  20. kilogram

    CGI внутри PHP

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

    CGI внутри PHP

    Изучаю пхп, там пишут что так не используют, но это важно знать как подключается 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? Апач находится у меня на диске С:\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.
×
×
  • 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