Warning: Cannot use a scalar value as an array in /home/admin/public_html/forum/include/fm.class.php on line 757

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/include/fm.class.php on line 770

Warning: Invalid argument supplied for foreach() in /home/admin/public_html/forum/topic.php on line 737
Форумы портала PHP.SU :: Как перенести переменную вовнутрь функции?

 PHP.SU

Программирование на PHP, MySQL и другие веб-технологии
PHP.SU Портал     На главную страницу форума Главная     Помощь Помощь     Поиск Поиск     Поиск Яндекс Поиск Яндекс     Вакансии  Пользователи Пользователи


 Страниц (1): [1]   

> Без описания
Extazy
Отправлено: 19 Декабря, 2013 - 14:28:04
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Ув. гуру!
PHP:
скопировать код в буфер обмена
  1. if($param) {
  2.   function btce_query($method, array $req = array()) {
  3.      print $param;
  4. ......


Подскажите почему $param не передаётся вовнутрь функции ? и как всётаки занести значение этой переменной в функцию?
 
 Top
3d_killer
Отправлено: 19 Декабря, 2013 - 14:28:55
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




PHP:
скопировать код в буфер обмена
  1. if($param) {
  2.   function btce_query($method, array $req = array()) {
  3.      global $param;
  4.      print $param;

(Отредактировано автором: 19 Декабря, 2013 - 14:29:09)

 
My status
 Top
Extazy
Отправлено: 19 Декабря, 2013 - 14:34:46
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




Чтото не то..

У меня вот такой код получился:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if($param) {
  3.   if($param == "btcusd") $url = 'https://btc-e.com/api/2/btc_usd/ticker';
  4.   function btce_query($method, array $req = array()) {
  5.         global $url;
  6. ...
  7. curl_setopt($ch, CURLOPT_URL, $url);
  8. ....
  9. $res = curl_exec($ch);
  10. if ($res === false) throw new Exception('Could not get reply: '.curl_error($ch));



В итоге при запуске выдаёт ошибку:
CODE (html):
скопировать код в буфер обмена
  1. Fatal error: Uncaught exception 'Exception' with message 'Could not get reply:  malformed' in /var/www/onepage/data/www/site.ru/engine/modules/current_currency.php:40 Stack trace: #0 /var/www/onepage/data/www/site.ru/engine/modules/current_currency.php(46): btce_query('getInfo') #1 /var/www/onepage/data/www/site.ru/engine/classes/templates.class.php(197): include('/var/www/onepag...') #2 /var/www/onepage/data/www/site.ru/engine/classes/templates.class.php(455) : regexp code(1): dle_template->load_file('engine/modules/...', 'php') #3 /var/www/onepage/data/www/site.ru/engine/classes/templates.class.php(455): preg_replace('#\{include file...', '$this->load_fil...', 'compile('main') #5 {main} thrown in /var/www/onepage/data/www/site.ru/engine/modules/current_currency.php on line 40


Или "Could not get reply: malformed" говорит не о том, что $url пустой ?
Проблема с $url, но не пойму какая.. потму что если прописать так:
PHP:
скопировать код в буфер обмена
  1. curl_setopt($ch, CURLOPT_URL, 'https://btc-e.com/api/2/btc_usd/ticker');

то всё работает...

(Отредактировано автором: 19 Декабря, 2013 - 14:37:38)

 
 Top
3d_killer
Отправлено: 19 Декабря, 2013 - 14:38:39
Post Id



Участник


Покинул форум
Сообщений всего: 1916
Дата рег-ции: Апр. 2011  
Откуда: Ростов-на-Дону


Помог: 21 раз(а)




это ошибка что то другое, global $url; просто дает видимость переменной внутри функции
 
My status
 Top
teddy
Отправлено: 19 Декабря, 2013 - 14:39:33
Post Id


Участник


Покинул форум
Сообщений всего: 1462
Дата рег-ции: Апр. 2013  


Помог: 91 раз(а)




а где try-catch ? поэтому и ловите fatal error
 
 Top
Extazy
Отправлено: 19 Декабря, 2013 - 14:42:11
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




но ошибка именно с $url, потму что вот так работает без ошибок:
PHP:
скопировать код в буфер обмена
  1. curl_setopt($ch, CURLOPT_URL, 'https://btc-e.com/api/2/btc_usd/ticker');



вот так код полность выглядит, только пропущены переменные key и secret, так что если вы запустите, то ничего не сработает:

PHP:
скопировать код в буфер обмена
  1. <?PHP
  2. if($param) {
  3.   if($param == "btcusd") $url = 'https://btc-e.com/api/2/btc_usd/ticker';
  4.   function btce_query($method, array $req = array()) {
  5.         global $url;
  6.  
  7.         // API settings
  8.         $key = ''; // your API-key
  9.         $secret = ''; // your Secret-key
  10.  
  11.         $req['method'] = $method;
  12.         $mt = explode(' ', microtime());
  13.         $req['nonce'] = $mt[1];
  14.  
  15.         // generate the POST data string
  16.         $post_data = http_build_query($req, '', '&');
  17.         $sign = hash_hmac('sha512', $post_data, $secret);
  18.  
  19.         // generate the extra headers
  20.  
  21.         $headers = array(
  22.             'Sign: '.$sign,
  23.             'Key: '.$key,
  24.         );
  25.  
  26.         // our curl handle (initialize if required)
  27.         static $ch = null;
  28.         if (is_null($ch)) {
  29.                 $ch = curl_init();
  30.                 curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
  31.                 curl_setopt($ch, CURLOPT_USERAGENT, 'Mozilla/4.0 (compatible; BTCE PHP client; '.php_uname('s').'; PHP/'.phpversion().')');
  32.         }
  33.         curl_setopt($ch, CURLOPT_URL, $url);
  34.         curl_setopt($ch, CURLOPT_POSTFIELDS, $post_data);
  35.         curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
  36.         curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, FALSE);
  37.  
  38.         // run the query
  39.         $res = curl_exec($ch);
  40.         if ($res === false) throw new Exception('Could not get reply: '.curl_error($ch));
  41.         $dec = json_decode($res, true);
  42.         if (!$dec) throw new Exception('Invalid data received, please make sure connection is working and requested API exists');
  43.         return $dec;
  44. }
  45.  
  46. $result = btce_query('getInfo');
  47. //$result = btce_query('Trade', array('pair' => 'btc_usd', 'type' => 'buy', 'amount' => 1, 'rate' => 10)); //buy 1 BTC @ 10 USD
  48.  
  49. var_dump($result);
  50. }
  51.  
  52. ?>

(Отредактировано автором: 19 Декабря, 2013 - 14:58:31)

 
 Top
Extazy
Отправлено: 19 Декабря, 2013 - 17:03:39
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




И всётаки вот такая запись выдаёт ошибку, $url пустой! Не понял

PHP:
скопировать код в буфер обмена
  1. if($param) {
  2.   $url = 'https://btc-e.com/api/2/btc_usd/ticker';
  3.   function btce_query($method, array $req = array()) {
  4.         global $url;
  5.         print $url;


То как вы написали глобальную переменную - не работает!

(Отредактировано автором: 19 Декабря, 2013 - 17:04:38)

 
 Top
esterio
Отправлено: 19 Декабря, 2013 - 17:23:40
Post Id



Активный участник


Покинул форум
Сообщений всего: 5025
Дата рег-ции: Нояб. 2012  
Откуда: Украина, Львов


Помог: 127 раз(а)




 
 Top
Extazy
Отправлено: 19 Декабря, 2013 - 18:40:06
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




PHP:
скопировать код в буфер обмена
  1. if($param) {
  2.   function btce_query($method, array $req = array()) {
  3.         global $param;
  4. ....
  5.         if($param) $url = "https://btc-e.com/api/2/btc_usd/ticker";
  6.         curl_setopt($ch, CURLOPT_URL, $url);


в начале кода $param содержит значение, поетому начинает выполняться код дальше.
в функции я делаю эту переменную глобальной, но почемуто переменная перестаёт иметь какоелибо значение.. поэтому следующий if($param) уже не выполняется и в итоге выдаёт ошибку:

CODE (htmlphp):
скопировать код в буфер обмена
  1. Notice: Undefined variable: url in /var/www/onepage/data/www/ccurrency.ru/engine/modules/current_currency.php on line 35


Помогите Растерялся Растерялся
 
 Top
IllusionMH
Отправлено: 19 Декабря, 2013 - 18:59:50
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Extazy, что мешает передавать урл параметром?
 
 Top
Extazy
Отправлено: 19 Декабря, 2013 - 19:04:46
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




не оч понял вопроса, но наверн вы имеете ввиду почему напрямую не подставить ссылку а место $url ?

у меня в итоге будет несколько разных урл типа:
PHP:
скопировать код в буфер обмена
  1.  if($param == 1) $url = "https://btc-e.com/api/2/btc_usd/ticker";
  2. if($param == 2) $url = "https://btc-e.com/api/2/btc_usd/ticker2";
  3. if($param == 3) $url = "https://btc-e.com/api/2/btc_usd/ticker3";
 
 Top
IllusionMH
Отправлено: 19 Декабря, 2013 - 19:20:58
Post Id



Активный участник


Покинул форум
Сообщений всего: 4254
Дата рег-ции: Февр. 2011  
Откуда: .kh.ua


Помог: 242 раз(а)




Extazy,
PHP:
скопировать код в буфер обмена
  1. function btce_query($method, array $req = array(), $url = '') {
 
 Top
Extazy
Отправлено: 19 Декабря, 2013 - 19:28:44
Post Id


Посетитель


Покинул форум
Сообщений всего: 490
Дата рег-ции: Янв. 2010  


Помог: 0 раз(а)




IllusionMH, гениально! работает! спасибо большое Улыбка
 
 Top
Страниц (1): [1]
Сейчас эту тему просматривают: 0 (гостей: 0, зарегистрированных: 0)
« Вопросы новичков »


Все гости форума могут просматривать этот раздел.
Только зарегистрированные пользователи могут создавать новые темы в этом разделе.
Только зарегистрированные пользователи могут отвечать на сообщения в этом разделе.
 



Powered by PHP  Powered By MySQL  Powered by Nginx  Valid CSS  RSS

 
Powered by ExBB FM 1.0 RC1. InvisionExBB