コンテンツ
シンプルなケース
通常、 OpenCart APIへのアクセスに関する問題 は、APIアクセスが構成されていない場合に発生します。
この問題を解決するには、管理パネル --API
に移動し、リスト内の目的のオブジェクトに移動して、IPアドレスをリストに追加する必要があります 。
, API IP-
.
OpenCart 2.3 ...
, / : API!
, 2 , OpenCart 2.3, .
, , ( ), , - .
, ,
, - API . . , API.
, Ajax API OpenCart, API.
ajax , . , . API , ...
?
Ajax API, .
catalog/controller/api/login.php
( API /index.php?route=api/login
), API key
IP ( ), api
api_id
:
$session_id_new = $this->session->createId();
$this->session->start('api', $session_id_new);
$this->session->data['api_id'] = $api_info['api_id'];
catalog/controller/startup/session.php
( , catalog
, ), api
:
$this->session->start('api', $query->row['session_id']);
system/library/session.php
start
:
public function start($key = 'default', $value = '') {
if ($value) {
$this->session_id = $value;
} elseif (isset($_COOKIE[$key])) {
$this->session_id = $_COOKIE[$key];
} else {
$this->session_id = $this->createId();
}
if (!isset($_SESSION[$this->session_id])) {
$_SESSION[$this->session_id] = array();
}
$this->data = &$_SESSION[$this->session_id];
//...
}
: session_id
api
, session_id
.
API OpenCart catalog
:
if (!isset($this->session->data['api_id'])) {
$json['error']['warning'] = $this->language->get('error_permission');
} else {
...
}
, , .
, $_SESSION
( ), API catalog/controller/startup/session.php
api
.
:
session_id
api_key
, API,session_id
,action_pre_action
(system/config/catalog.php
) .
api_id
, API : API!
. , .
, ( , , ), , , .
$_SESSION
, : api_id
, API .
$_SESSION
catalog/controller/startup/session.php
:
$query = $this->db->query("SELECT DISTINCT * FROM `" . DB_PREFIX . "api` `a` LEFT JOIN `" . DB_PREFIX . "api_session` `as` ON (a.api_id = as.api_id) LEFT JOIN " . DB_PREFIX . "api_ip `ai` ON (as.api_id = ai.api_id) WHERE a.status = '1' AND as.token = '" . $this->db->escape($this->request->get['token']) . "' AND ai.ip = '" . $this->db->escape($this->request->server['REMOTE_ADDR']) . "'");
, , api_id
.
catalog/controller/startup/session.php
:
if ($query->num_rows) {
$this->session->start('api', $query->row['session_id']);
//
$this->session->data["api_id"] = $query->row["api_id"];
//...
}
API! !
API!
catalog/controller/startup/session.php
api_id
:$this->session->data["api_id"] = $query->row["api_id"];
: API!, ( ) ajax API OpenCart, .
クライアントは満足しており、両方のサイトが機能しており、問題は解決しています。ただし、問題の原因は特定されていません。いくつかの仮定があります。何らかの方法で確認します。