Intrebare curl
Moderatori: Moderatori, Start Moderator
-
- Average Member
- Mesaje: 115
- Membru din: Sâm Mai 29, 2010 7:42 pm
Intrebare curl
Daca pagina api imi returneaza un string de forma "Array ( [status] => EROARE [info] => User / Parola Gresita ) " , pot converti acest string in array?
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Intrebare curl
API-ul ala comunica prin var_dump? Jesus, really? Success sa parsezi stringul ala.
Nu poti folosi json sau xml?
Nu poti folosi json sau xml?
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
-
- Average Member
- Mesaje: 115
- Membru din: Sâm Mai 29, 2010 7:42 pm
Re: Intrebare curl
fisierul php este asta:
Daca campurile obligatorii din formular nu sunt completate, in var dump imi returneaza stringul de mai sus. Si vroiam in acest caz sa verific daca raspunsul status = EROARE salveaza valoarea "info" in log
Cod: Selectaţi tot
<?php
function clausro_getConfigArray() {
$configarray = array(
"Username" => array("Type" => "text", "Size" => "20", "Description" => "Introduceti utilizatorul API",),
"Parola" => array("Type" => "password", "Size" => "15", "Description" => "Introduceti parola API",),
"Test" => array("Type" => "yesno", "Description" => "Activeaza modul de testare",),
);
return $configarray;
}
function clausro_RegisterDomain($params) {
$table = 'tbldomainsadditionalfields';
$fields = "value";
$where = array("domainid" => $params['domainid']);
$resultquery = select_query($table, $fields, $where);
while ($data = mysql_fetch_array($resultquery)) {
$date[] = $data['value'];
}
$nume = $date[0];
$firma = $date[1];
$cf = $date[2];
$reg = $date[3];
$adresa = $date[4];
$oras = $date[5];
$tara = $date[6];
$codpostal = $date[7];
$fix = $date[8];
$fax = $date[9];
$email = $date[10];
$domeniu = $params['sld'] . '.' . $params['tld'];
$ns1 = $params['ns1'];
$ns2 = $params['ns2'];
$ns3 = $params['ns3'];
$vars = 'user=' . $params['Username'] . '&pass=' . $params['Parola'] . '&contact=' . $nume . '&cf=' . $cf . '®=' . $reg . '&adresa=' . $adresa . '&loc=' . $oras . '&tara=' . $tara . '&cod=' . $codpostal . '&fix=' . $fix . '&fax=' . $fax . '&email=' . $email . '&domeniu=' . $domeniu . '&firma=' . $firma . '&ns1=' . $ns1 . '&ns2=' . $ns2 . '&ns3=' . $ns3;
if ($params['Test']) {
$url = 'http://api.clausweb.ro/test/';
} else {
$url = 'http://api.clausweb.ro/';
}
$ch = curl_init($url);
curl_setopt($ch, CURLOPT_POST, 1);
curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);
curl_setopt($ch, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, 1);
$result = curl_exec($ch);
if ($result === FALSE) {
echo("Eroare:" . curl_error($ch));
}
curl_close($ch);
}
Daca campurile obligatorii din formular nu sunt completate, in var dump imi returneaza stringul de mai sus. Si vroiam in acest caz sa verific daca raspunsul status = EROARE salveaza valoarea "info" in log
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Intrebare curl
Asta e putin diferit de ce ai scris initial, nu crezi?
Nu stiu despre ce status sau info vorbesti, dar un API nu tre sa comunice prin var_dump.
Si tu arati codul de client, dar tre sa vedem codul API-ului.
De asemenea, cred ca n-ar strica sa validezi formularul si inainte de trimitere, ca un user sa nu astepte dupa curl sa vada daca a gresit sau nu.
Nu stiu despre ce status sau info vorbesti, dar un API nu tre sa comunice prin var_dump.
Si tu arati codul de client, dar tre sa vedem codul API-ului.
Cod: Selectaţi tot
// API
// valideaza requestul
$validationResult = array(
'errors' => array(
'password' => 'Invalid password',
'email' => 'Invalid Email',
),
);
header('Content-Type: application/json');
echo json_encode($validationResult);
// API client
$apiResponse = json_decode($curlResponse);
if (!empty($apiResponse['errors'])) { // shit!
if (!empty($apiResponse['errors']['password']) {
// log?
}
}
De asemenea, cred ca n-ar strica sa validezi formularul si inainte de trimitere, ca un user sa nu astepte dupa curl sa vada daca a gresit sau nu.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
-
- Average Member
- Mesaje: 115
- Membru din: Sâm Mai 29, 2010 7:42 pm
Re: Intrebare curl
Rapspunsul status il primesc de la api-ul celor de la clausweb. Nu trimiteam datele prin var_dump, dadusem var_dump la $result = curl_exec($ch); in care imi returna stringul "array("status" => "error")". Am intrebat si la clausweb daca api-ul raspunde in json si mi-au trimis link-ul asta: http://api.clausweb.ro/test/ dar nu arata cine stie ce informatii
-
- Senior Member
- Mesaje: 1264
- Membru din: Mar Iun 22, 2010 3:17 pm
Re: Intrebare curl
Of, omule.
Deci NU ai in control API-ul.
API-ul returneaza un array si tu ai facut un var_dump.
Dar var_dump-ul nu era in codul dat de tine, si, dupa cum suna intrebarea ta originala, am presupus ca ai facut un API in care foloseai var_dump si printai acel string pe care tu l-ai luat drept raspuns.
Unde-i asta in codul dat de tine anterior?
Vezi ca primesti un array, fiinto, nu un string. Daca faci var_dump, e normal sa fie string. Trage o fuga pe php.net la var_dump si citeste.
PS: Si cand dai cod, da-l pe cel folosit, nu altul.
Deci NU ai in control API-ul.
API-ul returneaza un array si tu ai facut un var_dump.
Dar var_dump-ul nu era in codul dat de tine, si, dupa cum suna intrebarea ta originala, am presupus ca ai facut un API in care foloseai var_dump si printai acel string pe care tu l-ai luat drept raspuns.
Nu trimiteam datele prin var_dump, dadusem var_dump la $result = curl_exec($ch); in care imi returna stringul "array("status" => "error")"
Unde-i asta in codul dat de tine anterior?
Vezi ca primesti un array, fiinto, nu un string. Daca faci var_dump, e normal sa fie string. Trage o fuga pe php.net la var_dump si citeste.
PS: Si cand dai cod, da-l pe cel folosit, nu altul.
Facusi un canal de php pe freenode - ##php-ro : https://webchat.freenode.net/
-
- Average Member
- Mesaje: 115
- Membru din: Sâm Mai 29, 2010 7:42 pm
Re: Intrebare curl
Si eu m-am exprimat ca un rahat... Acum am inteles
Re: Intrebare curl
Asta e problema ca tu nu sti nici macar cum luceaza sistemul.
Daca te uiti bine prin sistemul de curl tu pasezi variabila "curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);" mai exact $vars definita de tine.
Odata ce a fost pasata in api`ul tau acolo vei avea procesele ce sa faca mai departe cu datele trimise de script-ul tau in serverul tau mai exact "$url = 'http://api.clausweb.ro/';" aici.
De aici va trebui sa procesezi in server datele care deja le-ai pasat si desigur va trebui sa ai in vedere ca $rezultat`ul tau trebuie sa fie true daca ete okey pentru a evita codul de mai jos.
Success
Daca te uiti bine prin sistemul de curl tu pasezi variabila "curl_setopt($ch, CURLOPT_POSTFIELDS, $vars);" mai exact $vars definita de tine.
Cod: Selectaţi tot
$vars = 'user=' . $params['Username'] . '&pass=' . $params['Parola'] . '&contact=' . $nume . '&cf=' . $cf . '®=' . $reg . '&adresa=' . $adresa . '&loc=' . $oras . '&tara=' . $tara . '&cod=' . $codpostal . '&fix=' . $fix . '&fax=' . $fax . '&email=' . $email . '&domeniu=' . $domeniu . '&firma=' . $firma . '&ns1=' . $ns1 . '&ns2=' . $ns2 . '&ns3=' . $ns3;
Odata ce a fost pasata in api`ul tau acolo vei avea procesele ce sa faca mai departe cu datele trimise de script-ul tau in serverul tau mai exact "$url = 'http://api.clausweb.ro/';" aici.
De aici va trebui sa procesezi in server datele care deja le-ai pasat si desigur va trebui sa ai in vedere ca $rezultat`ul tau trebuie sa fie true daca ete okey pentru a evita codul de mai jos.
Success
Cod: Selectaţi tot
if ($result === FALSE) {
echo("Eroare:" . curl_error($ch));
}
Cine este conectat
Utilizatori ce ce navighează pe acest forum: Niciun utilizator înregistrat și 95 vizitatori