Я делаю урок, чтобы общаться с API нашей компании ...
Я использую curl для публикации данных и получения ответа в формате json.
В последней части кода (после класса) я регистрирую пользователя на сервере (это дает true), но когда я пытаюсь снова подключиться с помощью curl, он говорит, что я не вошел!
Я уже выполнил поиск в Google и добавил curl_setopt ($ ch, CURLOPT_COOKIE, $ this-> Session_Cookie); строка.
Кто-нибудь может подсказать мне об этом?
Заранее спасибо;)
<code>if(!class_exists("Microdual")) {
class Microdual{
// No caso de a sessão não estar iniciada, iniciar aqui a sessão
################
################
################
################ Iniciar funcoes privadas ################
private function Extra_LoadSession($varname,$otherwise){
return (!empty($_SESSION[$this->Session_Prefix . $varname])) ? $_SESSION[$this->Session_Prefix . $varname] : $otherwise;
}
private function Extra_SaveSession($varname,$value){
$_SESSION[$this->Session_Prefix . $varname] = $value;
return true;
}
/**
* $this->API_Comunicate() "Comunicar comandos com os servidores Microdual (enviar e receber)"
*
* @param data array "Colocar as variaveis que deseja passar à plataforma (Ver Lista completa de variaveis no Inicio)"
*
* @return array or void (false)
*/
private function API_Comunicate($_data){
// Converter o array em string (serialize)
$data = array();
while(list($n,$v) = each($_data)){
$data[] = "$n=$v";
}
$data = implode('&', $data);
// format --> test1=a&test2=b etc.
$ch = curl_init();
curl_setopt($ch,CURLOPT_URL,$this->Geral_URLAPI);
curl_setopt($ch,CURLOPT_POST,count($_data));
curl_setopt($ch,CURLOPT_COOKIE,$this->Session_Cookie);
curl_setopt($ch,CURLOPT_POSTFIELDS,$data);
curl_setopt($ch,CURLOPT_RETURNTRANSFER,1);
$content = curl_exec($ch);
curl_close($ch);
if(($content !== false) && (!empty($content))){
return json_decode($content, true);
}else{
return false;
}
}
################
################
################
################ Iniciar funcoes Públicas ################
public function Debug_VarDump($varname){
$string = "<pre>";
$string .= var_dump($varname);
$string .= "
";
вернуть $ string;
выход;
}
/ **
* $ this-> IsLogged () "Verificar se está autenticado no servidor (primeiro localmente, e depois liga ao servidor)"
*
* @return void
* /
публичная функция IsLogged () {
if ($ logged) возвращает true;
$ logged = $ this-> Extra_LoadSession («Login_Logged», false);
если ($ запротоколированы) {
вернуть истину;
} Еще {
// Conectar ao servidor
$ dados = $ this-> API_Comunicate (array ());
если ($ Dados! == FALSE) {
если (! пусто ($ Dados [ 'Auth'] [ 'вход'])) {
return $ dados ['auth'] ['logged'];
} Еще {
вернуть ложь;
}
} Еще {
вернуть ложь;
}
}
}
/ **
* $ this-> Login () "Executar o Login nos servidores Microdual"
*
* @param username string "Colocar aqui o nome de utilizador da sua conta em www.microdual.com"
* @param строка пароля "Colocar aqui пароль да sua conta em www.microdual.com"
*
* @return void
* /
публичная функция Login ($ username, $ password) {
if (empty ($ username) || empty ($ password)) return false;
if ($ this-> IsLogged ()) return true;
$ receive = $ this-> API_Comunicate (array (
"type" => "auth",
"action" => "add",
"auth_username" => $ username,
"auth_password" => $ пароль
));
if ($ receive ["auth"] ["status"] && $ receive ["auth"] ["logged"]) {
$ This-> Extra_SaveSession ( "Login_Logged", правда);
$ this-> Login_Logged = true;
вернуть истину;
} Еще {
вернуть ложь;
}
}
/ **
* $ this-> SMS_Send () "Executar o Login nos servidores Microdual"
*
* @param number string "Colocar aqui o Numberro do telemovel para enviar sms"
*
* @return void
* /
публичная функция SMS_Send ($ number, $ msg) {
// Guardar apenas os цифр
$ number = preg_replace ("/ [^ 0-9] /", "", $ number);
$ msg = аккуратный ($ msg);
$ receive = $ this-> API_Comunicate (array (
"type" => "sms",
"action" => "add",
"sms_to" => $ number,
"sms_msg" => $ msg
));
вернуть $ получить;
}
################
################
################
################ Iniciar variaveis da class ################
private $ Session_Prefix;
private $ Session_Cookie;
частный $ Geral_URLAPI;
личное $ Login_Logged;
################
################
################
################ Иникар Дадос да класс ################
function __construct () {
$ this-> Session_Prefix = "MYCMSAPI_";
$ this-> Session_Cookie = "PHPSESSID =". $ _ COOKIE ['PHPSESSID']. "; path = /";
$ this-> Geral_URLAPI = "
http://www.MYCOMPANY.com/MyapiURL";
$ this-> Login_Logged = $ this-> Extra_LoadSession («Login_Logged», false);
}
}
}
$ Microdual = новый Microdual ();
если ($ Microdual-> Войти ( "usernamehere", "пароль")) {
$ Microdual-> Debug_VarDump ($ Microdual-> SMS_Send ("93211254", "Teste Test Hi :)"));
} Еще {
echo "Login com erro";
}