Форум сетевых администраторов
Показаны 5 сообщений на этой странице

Форум сетевых администраторов (http://netadmin.ws/forum/index.php)
- PHP (http://netadmin.ws/forum/forumdisplay.php?forumid=6)
-- Передача параметров через Get (это просто бедствие какое-то) (http://netadmin.ws/forum/showthread.php?threadid=7888)


Помещено MAVIAN 18-02-2004 в 11:48:

Angry Передача параметров через Get (это просто бедствие какое-то)

Второй день не могу понять причну граблей. Сначала я заметил, что на веб-сервере PHP скрипты работают прекрасно до тех пор, пока не требуется передача параметров методом GET. Сейчас проблема уже локализована, но все равно не понятно - либо я сошел с ума, либо что-то не так с интерпретатором.
Он упорно не желает видеть переменнные в строке запроса GET, как и в командной строке тоже.

Итак, платформа win32 (win2k professional), версия php 4.3.4, примитивная программа myscript.php:
---------------
<html>
<title><"Simple script"></title>
<?=$maks?>
<?=$php_errormsg?>
</body></html>
----------------
Способы, которыми я ее запускал:

php myscript.php '&maks=test'
php -f myscript.php '&maks=test'
php myscript.php '&maks=test'&
php myscript.php "&maks=test"
php myscript.php &maks=test
php myscript.php&maks=test
php myscript.php "&maks=test"
php myscript.php &maks=test
php myscript.php maks=test

И всегда получал один и тот же ответ:
<html>
<title><"test"></title>
Undefined variable: maks
</body></html>

Действующие параметры раздела Data Handling файла php.ini:
arg_separator.output = "&"
arg_separator.input = ";&"
variables_order = "EGPCS"
register_globals = Off
register_argc_argv = Off
post_max_size = 8M
gpc_order = "GPC"
magic_quotes_gpc = On
magic_quotes_runtime = Off
magic_quotes_sybase = Off
auto_prepend_file =
auto_append_file =
default_mimetype = "text/html"
always_populate_raw_post_data = On

Пробовал
register_globals = On
register_argc_argv = On
разницы никакой.

Вопрос: КАК нужно передавать значения переменных через комм. строку ???!!


Помещено MarKer 18-02-2004 в 12:34:

Ты забыл что строка с данными, после имени скрипта начинается со знака вопроса. Т.е. у тебя получается:
"myscript.php&maks=test"
А надо:
"myscript.php?maks=test"

MarKer добавил 18-02-2004 в 12:35:44:
А амперсанд используется для разделения.


Помещено MAVIAN 18-02-2004 в 13:18:

В таком случае интерпретатор не видит имени входного файла

>Chpphp.exe myscript.php?maks=test
Status: 404
Content-type: text/html
X-Powered-By: PHP/4.3.4

No input file specified.

>Chpphp.exe myscript.php ?maks=test

<html>
<title><"Simple script"></title>
Undefined variable: maks
</body></html>

> Сhpphp.exe myscript.php '?maks=test'

<html>
<title><"Simple script"></title>
Undefined variable: maks
</body></html>

>Chpphp.exe fotoopen.php "?maks=test"

<html>
<title><"Simple script"></title>
Undefined variable: maks
</body></html>

То есть по-прежнему без изменений
Кстати, вот тут внизу страницы
http://www.php.net/manual/en/features.commandline.php
говорится, что
php myprog.php '(амперсанд)param1=bla(амперсанд
)param2=hugo'
должно работать...

Поскольку он не работает под Apache Win32 ни как CGI, ни через SAPI модуль php4apache.dll, есть подозрение, что либо надо копать php.ini, либо пробовать другую версию...

MAVIAN добавил 18-02-2004 в 13:39:42:
ХА ! Оказывается, надо было использовать другую версию интерпретатора из подпапки CLI. Тогда выражение вида

C:\php\php.exe myscript.php "&maks=test" Ð_АБОТАЕТ !

>C:\php\php.exe myscript.php "&maks=test"

Content-type: text/html
X-Powered-By: PHP/4.3.4

<html>
<title><"Simple Script"></title>
test
</body></html>



Помещено GenUS 18-02-2004 в 16:16:

А можно еще другим способом ....
test.php

PHP:

<?PHP
echo $argc."\n\n"; // кол-во параметров (включая имя файла)
var_dump($argv); // собственно массив параметров
?>



code:
c:\php>php -q test.php param1 param2 param3
4

array(4) {
  [0]=>
  string(8) "test.php"
  [1]=>
  string(6) "param1"
  [2]=>
  string(6) "param2"
  [3]=>
  string(6) "param3"
}

__________________
.


Помещено he][es 18-02-2004 в 16:40:

А с какой стати он будет чего то выводить? Ты считал переменную? $_GET['var_name']??? и register_globals = Off
т.что...

__________________
Админ - вождь Апачей...


Формат времени GMT. Текущее время 15:43.
Показаны 5 сообщений на этой странице

Powered by: vBulletin Version 2.2.4
Copyright © Jelsoft Enterprises Limited 2000, 2001.