![](https://htmlforum.dev/uploads/set_resources_18/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
kilogram
-
Posts
120 -
Joined
-
Last visited
-
Days Won
4
Content Type
Profiles
Forums
Calendar
Store
Posts posted by kilogram
-
-
Со всем я понял, не понял вот эту строку echo $b+1,"<br>";, не нужно было все комментировать, ответить лишь то что меня интересовало.
А оказывается все совсем просто, я думал что после строки echo $b+1,"<br>" в строке ниже return $b * $b; используется те же 11, а оказывается нет, потому что здесь нету присваивания, а просто прибавление на единичку и все.
-
1
-
-
<?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;
-
1
-
-
<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 что ли? Как считается?
-
1
-
-
<html><body>
<?php
function selfcount() {
static $count = 0;
$count++;
echo $count;
}
for($i=0; $i<5; $i++)
selfcount();
?>
</body></html>Почему со словом static в результате получается 12345, а без этого слова 11111?
-
1
-
-
Читаю в книге про глобальные переменные.
Правильно ли так объявлять глобальные переменные? Удобно и хорошо ли это? Вижу тут удобный доступ сразу из локальной функции прямо в глобалный массив.
<html><body>
<?php
$monthes = array(
1 => "Январь",
2 =>"Февраль",
3=>"Март",
4=>"Апрель"
);
function getMonthName($n){
global $monthes;
return $monthes[$n];
}
echo getMonthName(2);
?>
</body></html> -
А в этой строке: <?=selectItems($names, $_REQUEST['surname'])?>
$names - это в первый параметр функции подставился сам массив name который описан выше? В массиве цикл форич он возвращает за первым разом в первый параметр $names попадает значение "Weaving", 2 раз - "Goddard", 3-ий раз - "Taylor" после отправки формы? Во второй параметр также после отправки формы из-за цикла формч, тоже 3 раза во второй параметр попадают значения ключей цикла форич?
-
1
-
-
Скажите ,вот когда мы написали "<select name="surname">"
это равносильно мы создали переменную $surname с которой можем делать что угодно? Ещё, немного не понятно, каким образом попадают в глобальный ассрциативный массив REQUEST значения surname(Фамилия) с массива $names? Если да, каким образом?
-
1
-
-
<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>-
1
-
-
Да, можно так:
$st = "Том и Джери - весёлый мультфильм и очень интересный!";
$st = str_replace('весёлый мультфильм и', '', $st);
echo $st;Сажите ,а как моим кодом сделать такое же без str_replace?
-
1
-
-
<html><body>
<?php
$st = "Том и Джери - весёлый мультфильм и очень интересный!";
$person = explode("веселый мультфильм и",$st,6);
list($p) = $person;
echo $p;
?>
</body></html>Как вырезать строку "веселый мультфильм и" и вывести
Том и Джери - очень интересный?
-
1
-
-
То есть написав просто какое-то значение в поле name, например name="vasya" в глобальный массив REQUEST доступен во всех файлах, значение vasya полетит в РИКВЭСТ и запишется в него такое: $REQUEST['vasya'], а написав так name="vasya['Pupkin']" я вроде создаю этим двумерный массив в масиве РИКВЭСТ? Получается в РИКВЕСТЕ такое после name="vasya['Pupkin']" —-> $REQUEST['vasya']['Pypkin']?
-
Я хотел спросить как попадают элементы массива known в МАССИВ РИКВЭСТ в этом коде?
-
А попадает в РИКВЭСТ с массива known от инпутов за каждой итерацией вытягиваются значения с отправленной формы в массив РИКВЭСТ?
-
А массив known создается каким образом? За каждой итерацией вытягивается с формы и передается в качестве элемента массиву Request?
-
То есть там может быть сколько угодно параметров в $_REQUEST?
Скажите
<input type="hidden" name="known[PHP]" value="0">
Куда попадает вот это known
?
-
В документации написано:
REQUEST - это ассоциативный массив (array), который по умолчанию содержит данные переменных $_GET, $_POST и $_COOKIE.
REQUEST - я так понимаю это массив глобальный в котором внутри 3 массива вложенные?
В строке
<input type="submit" name="doGo" value="Go">
поле name=doGO. Это значение отправляется в глобальный массив REQUEST, а как же если согласно документации в глобальном ассоциативном массиве REQUEST 3 параметра?
-
Расшифруйте логику работы что куда берется и получается в этом цикле.
Смущают вот эти названия в параметрах как ими манипуляция происходит ['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> -
Все , запустил программу на С++ в пхп, оказывается нужно было переименовать в расширение cgi расширение exeи кинуть в папку cgi апача программу, а не в cgi возле папки сайта или в папкe www-сайта.
Скажите, а для каких возможностях используются cgi, какие проги пишутся примерно чтоб использовать cgi для пхп?
-
Изучаю пхп, там пишут что так не используют, но это важно знать как подключается 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.
call_user_func
in PHP
Posted
Вот попробовал использовать эту функцию
тоже самое можно написать и так без неё,даже короче выходит:
Зачем тогда она?