Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
Социальная инженерия и социальные хакеры. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Программирование. Ступени успешной карьеры. Авторы: Кузнецов М.В., Симдянов И.В. MySQL на примерах. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Глюк с передачей переменных через массивы в PHP
 
 автор: shizik   (12.10.2004 в 15:09)   письмо автору
 
 

Вообще беда просто - маюсь вторую неделю.
Есть две машины: одна дома вторая на работе.
На работе W2K английский, дома XP русский
в остальном конфигурация одинакова апач 2 и пхп 4.3.8
Так вот , вопрос в следующем :
на работе следующий код работает:
из этого сценария берем:
<?
....
$_GET = $pic_big;
?>
в этот сценарий передаем:
<?
$pic_big_her = $_GET['pic_big'];
echo "$pic_big_her"
?>

подскажите что делать, я уж все перепробывал - почему массивы дома не работают?
Уже и хттп_гет_вар пробывал и включал и выключал регистр_глобалс...
Ничего не помогает...
Наверное я повешусь....

   
 
 автор: cheops   (12.10.2004 в 15:31)   письмо автору
 
   для: shizik   (12.10.2004 в 15:09)
 

Не очень понятны используемые скрипты. Обычно суперглобальный массив $_GET используют для извлечения значений параметров строки запроса:
<?php
  
//первый скрипт - index.php
  
echo "<a href=test.php?pic_big=$pic_big>Перейти</a>";
?>

Тогда в файле test.php можно добраться до переменной $pic_big
<?php
  
echo $_GET['pic_big'];
?>


PS Нужно больше информации по скриптам.

   
 
 автор: shizik   (12.10.2004 в 15:53)   письмо автору
 
   для: cheops   (12.10.2004 в 15:31)
 

может я и не прав c использованием конкретного массива.
но данные действия я проводил и с $GLOBALS - результат тот же...
а в строку не хочу выводить - т.к. у меня предположительно будет много переменных, которые необходимо передать. могу прицепить оба скрипта целиком, если необходимо

   
 
 автор: shizik   (12.10.2004 в 15:56)   письмо автору
 
   для: shizik   (12.10.2004 в 15:53)
 

из foto вызывается pics

   
 
 автор: shizik   (12.10.2004 в 15:58)   письмо автору
 
   для: shizik   (12.10.2004 в 15:56)
 

извиняюсь.
не разобрался с форумами.
сейчас выложу в теле сообщений скрипты

   
 
 автор: shizik   (12.10.2004 в 16:01)   письмо автору
 
   для: shizik   (12.10.2004 в 15:58)
 

кусок foto.phtml :
<?

$dirtoscan = $PATH_FORFOTO;
$files=Array();

cat_files($dirtoscan,$files);

foreach ($files as $file)
{
$full_path=$file['path'].'/'.$file['name'];
echo '<a href="javascript:openwin_pic(\''.$pic_big=$PATH_FORFOTO.'/'.$file['name'].'\')">'.'
'.' <img src="'.$full_path.'" alt="'.$file['name'].'"'.'
'.' border="0" width="150" height="110"></a>'.'
';
$_GET = $pic_big;
}
...
здесь перебираются файлы из папки и записываются в массив files
?>

   
 
 автор: cheops   (12.10.2004 в 16:01)   письмо автору
 
   для: shizik   (12.10.2004 в 15:53)
 

Посмотрите не выключена ли в php.ini директива register_argc_argv, если выключена, её следует включить:
register_argc_argv = On

так же проверьте значение директивы variables_order, она должна иметь вид:
variables_order = "EGPCS"

(После изменения php.ini следует перегрузить сервер Apache)

PS Хм... может лучше через сессии/cookie все передать?

http://www.softtime.ru/forum/read.php?id_forum=1&id_theme=298&page=1

   
 
 автор: shizik   (12.10.2004 в 16:08)   письмо автору
 
   для: cheops   (12.10.2004 в 16:01)
 

да. я читал ссылку которую вы мне дали. попробую и эту способы для передачи переменных. спасибо.
один вопрос - а нельзя ли попросить у вас ссылку - где можно было бы на русском языке прочитать про те параметры пхп. ини которые вы указываете ?

   
 
 автор: cheops   (12.10.2004 в 16:22)   письмо автору
 
   для: shizik   (12.10.2004 в 16:08)
 

В мануале последнем частично по-русски есть
Суперглобальные переменные PHP

$GLOBALS
Содержит ссылку на каждую переменную, доступную в данный момент в глобальной области видимости скрипта. Ключами этого массива являются имена глобальны переменных. $GLOBALS существует, начиная с PHP 3.

$_SERVER
Переменные, установленные web-сервером либо напрямую связанные с окружением выполнения текущего скрипта. Аналог старого массива $HTTP_SERVER_VARS (который по-прежнему доступен, но не рекомендуется).

$_GET
Переменные, передаваемые скрипту через HTTP GET. Аналог старого массива $HTTP_GET_VARS (который по-прежнему доступен, но не рекомендуется).

$_POST
Переменные, передаваемые скрипту через HTTP POST. Аналог старого массива $HTTP_POST_VARS (который по-прежнему доступен, но не рекомендуется).

$_COOKIE
Переменные, передаваемые скрипту через HTTP cookies. Аналог старого массива $HTTP_COOKIE_VARS (который по-прежнему доступен, но не рекомендуется).

$_FILES
Переменные, передаваемые скрипту через HTTP post-загрузку файлов. Аналог старого массива $HTTP_POST_FILES (который по-прежнему доступен, но не рекомендуется). Для дополнительной информации смотрите Загрузка методом POST.

$_ENV
Переменные, передаваемые скрипту через окружение. Аналог старого массива $HTTP_ENV_VARS (который по-прежнему доступен, но не рекомендуется).

$_REQUEST
Переменные, передаваемые скрипту через механизмы ввода GET, POST и COOKIE, и которым, следовательно, нельзя доверять. Наличие и порядок включения переменных в этот массив определяется в соответствии с директивой конфигурации PHP variables_order. Этот массив не имеет прямых аналогов в версиях PHP до 4.1.0. Смотрите также import_request_variables().

$_SESSION
Переменные, зарегистрированные на данный момент в сессии скрипта. Аналог старого массива $HTTP_SESSION_VARS (который по-прежнему доступен, но не рекомендуется). Дополнительную информацию смотрите в разделе Функции обработки сессии.

   
 
 автор: shizik   (12.10.2004 в 16:05)   письмо автору
 
   для: shizik   (12.10.2004 в 15:09)
 

из pics.phtml:
<?
$pic_big_her = $_GET['pic_big'];
echo "$pic_big_her"
?>
....

дальше идет вывод страницы с задействованием этой переменной.

прошу не писать как эти алгоритмы можно реализовать по другому (то есть через строку) - я об этом знаю и дома так сделал
но массивы мне все равно нужны - а почему то в одном месте работают, в другом нет...
с чем это может связано ?

   
 
 автор: shizik   (12.10.2004 в 16:11)   письмо автору
 
   для: shizik   (12.10.2004 в 16:05)
 

в любом случае - огромное спасибо за то что откликнулись.

   
 
 автор: cheops   (12.10.2004 в 16:19)   письмо автору
 
   для: shizik   (12.10.2004 в 16:05)
 

Я бы посоветовал передать массив через сессии
<? 
//кусок foto.phtml :
session_start();

$dirtoscan $PATH_FORFOTO
$files=Array(); 

cat_files($dirtoscan,$files); 

foreach (
$files as $file

$full_path=$file['path'].'/'.$file['name']; 
echo 
'<a href="javascript:openwin_pic(\''.$pic_big=$PATH_FORFOTO.'/'.$file['name'].'\')">'.'
'
.' <img src="'.$full_path.'" alt="'.$file['name'].'"'.'
'
.' border="0" width="150" height="110"></a>'.'
'
;
$_SESSION['pic_big'] = $pic_big;

...
здесь перебираются файлы из папки и записываются в массив files
?>

<?php
//из pics.phtml:
session_start();
print_r($_SESSION['pic_big']);
//....
?>

   
 
 автор: shizik   (12.10.2004 в 17:11)   письмо автору
 
   для: cheops   (12.10.2004 в 16:19)
 

огромнейшее спасибо.
вечером доеду домой - все попробую.
спасибо

   
 
 автор: shizik   (13.10.2004 в 20:01)   письмо автору
 
   для: shizik   (12.10.2004 в 17:11)
 

Проверил переменные, которые вы указали (по поводу аргс и аргв) - все так и стояло...
Через сессии как то не хочется работать - т.к. у меня для всех пользователей алгоритм одинаков - то использовать сессии не представляется необходимым, а делать так лишь бы работало - не хочется....
С уважением.....
В общем все как не работало - так и не работает.
Вот уже склоняюсь к переустановке апача с пхпой.... Или вообще к сносу нафиг ХР и установки win2k

   
 
 автор: shizik   (13.10.2004 в 20:56)   письмо автору
 
   для: shizik   (13.10.2004 в 20:01)
 

Опа...... я осознал что и на работе ничего не работает..... Я просто на работе передавал дополнительно через ?var=count - думаю понятно о чем я (т.е. передавал через строку и об этом благополучно забыл). Поэтому многоуважаемые, могу вас порадовать вопросом - объясните мне передачу данных через глобальный массив из сценария в сценарий хотя бы на одном примере - а то я наверное совсем даун и не понимаю как это делается....

   
 
 автор: shizik   (13.10.2004 в 21:17)   письмо автору
 
   для: shizik   (13.10.2004 в 20:56)
 

Еще раз все по порядку:
в одном сценарии такая конструкция:
<?
$badjaga='xernja';
$GLOBALS['badjaga']=$badjaga;
$dptr=$GLOBALS['badjaga'];
echo "<br>$dptr";
?>

этот сценарий выводит на страницу значение хеrnja

после этого сценария запускается следующий :

<?
$badjaga= $GLOBALS['badjaga'];
echo "$badjaga";
?>

при запуске этого хозяйства выдается следующее:
Notice: Undefined index: badjaga in C:\Localca\www\pics.phtml on line 2
что делать ?

   
 
 автор: shizik   (13.10.2004 в 21:47)   письмо автору
 
   для: shizik   (13.10.2004 в 21:17)
 

еще один прикол:
<?
$_GET["badjaga"]='100';
$dptr=$_GET['badjaga'];
echo '<br>'."$dptr";
?>
на этой странице выдает только "1" ......... Прям вообще не доганяю

   
 
 автор: glsv (Дизайнер)   (13.10.2004 в 22:45)   письмо автору
 
   для: shizik   (13.10.2004 в 21:47)
 

Сделал тоже самое. Выдал 100. Странно.

   
 
 автор: glsv (Дизайнер)   (13.10.2004 в 22:37)   письмо автору
 
   для: shizik   (13.10.2004 в 21:17)
 

>Notice: Undefined index: badjaga in C:\Localca\www\pics.phtml on line 2
что делать ?

Это не ошибка - это предупреждение об неинициализированной переменной.
Запретите в php.ini вывод подобных предупреждений.


error_reporting  = E_ALL & ~E_NOTICE

   
 
 автор: shizik   (14.10.2004 в 00:14)   письмо автору
 
   для: glsv (Дизайнер)   (13.10.2004 в 22:37)
 

Многоуважаемый, дизайнер. Я понимаю что это предупреждение...
Я не понимаю почему переменная не передается.
С уважением.

   
 
 автор: cheops   (13.10.2004 в 22:43)   письмо автору
 
   для: shizik   (13.10.2004 в 21:17)
 

Действия $GLOBALS распространяются только в пределах одного файла, его применяют для передачи данных между функций одного файла и т.п.
Посмотрите работают ли у вас сессии из архива в атаче к этому посту. Т.е. сначала запускается index.php, потом hello.php - который выводит определённый в index.php элемент суперглобального массива $_SESSION?

   
 
 автор: shizik   (14.10.2004 в 00:10)   письмо автору
 
   для: cheops   (13.10.2004 в 22:43)
 

Warning: session_start(): open(D:\Localca\user\local\php4\sessiondata\sess_87bf5fa7da85388fa12182f5109115ba, O_RDWR) failed: No such file or directory (2) in D:\Localca\www\1\www\index.phtml on line 2

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:\Localca\www\1\www\index.phtml:2) in D:\Localca\www\1\www\index.phtml on line 2

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:\Localca\www\1\www\index.phtml:2) in D:\Localca\www\1\www\index.phtml on line 2

xernja
Warning: Unknown(): open(D:\Localca\user\local\php4\sessiondata\sess_87bf5fa7da85388fa12182f5109115ba, O_RDWR) failed: No such file or directory (2) in Unknown on line 0

Warning: Unknown(): Failed to write session data (files). Please verify that the current setting of session.save_path is correct (D:\Localca\user\local\php4\sessiondata) in Unknown on line 0

   
 
 автор: shizik   (14.10.2004 в 00:12)   письмо автору
 
   для: shizik   (14.10.2004 в 00:10)
 

index.phtml это ваш index.php

   
 
 автор: cheops   (14.10.2004 в 00:15)   письмо автору
 
   для: shizik   (14.10.2004 в 00:10)
 

Хм... а путь
D:\Localca\user\local\php4\sessiondata\
существует?

   
 
 автор: shizik   (14.10.2004 в 00:18)   письмо автору
 
   для: cheops   (14.10.2004 в 00:15)
 

прописал папку сессиондата - на экране индекса выдается херня.
очень извиняюсь что сам не посмотрел смысл ошибок - просто уже совсем запарился.

   
 
 автор: shizik   (14.10.2004 в 00:19)   письмо автору
 
   для: shizik   (14.10.2004 в 00:18)
 

хелло тоже выдает xernja

   
 
 автор: shizik   (14.10.2004 в 00:27)   письмо автору
 
   для: shizik   (14.10.2004 в 00:19)
 

огромное спасибо.
НАИОГРОМНЕЙШЕЕ !
все работает

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

   
 
 автор: cheops   (14.10.2004 в 00:41)   письмо автору
 
   для: shizik   (14.10.2004 в 00:27)
 

Если пользователей немного, то можно через файлы или cookie, только массив для удобства лучше упаковать при помощи функции serialize()
<?php
  $test 
= array("hello","world""!");
  
$fp fopen("test.txt","w");
  
fwrite($fpserialize($test));
  
fclose($fp);
?>

тогда из другого скрипта данный массив можно прочитать из файла (cookies) при помощи скрипта
<?php
  $fp 
fopen("test.txt","r");
  
$bufer fread($fpfilesize("test.txt"));
  
fclose($fp);
  
$array_from_index unserialize($bufer);
  
print_r($array_from_index);
?>

Здесь при помощи функции unserialize() осуществляется распаковка массива.

   
 
 автор: shizik   (14.10.2004 в 11:39)   письмо автору
 
   для: cheops   (14.10.2004 в 00:41)
 

спасибо большое

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования