Jump to content
  • 0

PHP API - JSON problém


Ninjonik

Dotaz

Ahoj, pokúšam sa na jednej stránke encódovať určité údaje z MySQL a potom ich na inej stránke znovu decodnúť a vypísať.
Zatiaľ to teda mám v jednom priečinku, aby som zistil, že či to vôbec funguje.

No ale nefunguje.

Encode krásne funguje, a vypíše to pekne array v takomto štýle:
 

[{"memberID":27,"username":"velaral552","email":"[email protected]"}]

Avšak akonáhle chcem toto získať na druhej stránke, tak mi to vypíše proste "nič", prázdna stránka.

Kód v encodu (cfg.php):
 

<?php
  require_once("../content/config/config.php");
  class API {
    function Select() {

		global $db;

      $stmt = $db->prepare('SELECT memberID, username, email FROM members ORDER BY memberID');
      $stmt->execute(array());
      $row = $stmt->fetchAll(PDO::FETCH_ASSOC);

      if (!$stmt->execute()) {
    		print_r($stmt->errorInfo());
    	}

      return json_encode($row);
  }
}
$API = new API;
header('Content-Type: application/json');
echo $API->Select();
?>

a decode:
 

<?php
	$json = file_get_contents('http://igportals.eu/api/cfg.php');
	$users = json_decode($json);
	echo $users["email"];
?>

Chyby to nehádže žiadne, skúsil som aj googliť, skúšať iné decode scripty, ale ani jeden nefungoval, tak som sa obrátil na toto fórum.

Link to comment
Share on other sites

6 odpovědí na tuto otázku

Recommended Posts

  • 0
před 2 minutami, Fakerko_ said:

Jen jestli to chápu správně, každá stránka je na jiné doméně? 

aktuálne to mám v tom istom priečinku, ale áno, chcem z jednej domény decodnúť api na druhej doméne

Link to comment
Share on other sites

  • 0
před 5 minutami, Ninjonik said:

aktuálne to mám v tom istom priečinku, ale áno, chcem z jednej domény decodnúť api na druhej doméne

Tak zkus curl();

Je možné, že nemáš v php.ini povolený file_get_contents();

 

<?php

const URL = "http://igportals.eu/api/cfg.php";

$request = curl_init();

curl_setopt($request, CURLOPT_URL, URL);
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($request);

echo($result);

curl_close($request);

?>

 

Link to comment
Share on other sites

  • 0
před 3 minutami, Fakerko_ said:

Tak zkus curl();

Je možné, že nemáš v php.ini povolený file_get_contents();

 


<?php

const URL = "http://igportals.eu/api/cfg.php";

$request = curl_init();

curl_setopt($request, CURLOPT_URL, URL);
curl_setopt($request, CURLOPT_RETURNTRANSFER, 1);

$result = curl_exec($request);

echo($result);

curl_close($request);

?>

 

práveže k tomuto sa viem dostať aj pomocou file_get_contents, lenže ja nepotrebujem vypísať celé to API, ale potrebujem napísať napr. iba email čiste.
Pretože ja vlastne chcem vybrať na webu 1 z db nejaký údaj, ten encodnúť a na webu 2 to decodnúť a ten údaj z db tam vypísať.

Link to comment
Share on other sites

  • 0
před 15 minutami, Ninjonik said:

práveže k tomuto sa viem dostať aj pomocou file_get_contents, lenže ja nepotrebujem vypísať celé to API, ale potrebujem napísať napr. iba email čiste.
Pretože ja vlastne chcem vybrať na webu 1 z db nejaký údaj, ten encodnúť a na webu 2 to decodnúť a ten údaj z db tam vypísať.

Ok, už to chápu.

Ten výstup na té URL není ve formátu JSON, je to jen string.
Když jsem si to zkusil dát do Insomnia, tak mi to tam vypisuje divný string před array "" takže zkontroluj si kódování, že máš v configu nastavený správné kódování atd.

Link to comment
Share on other sites

  • 0

Ještě doplním kolegu nahoře, jde to poznat i jednoduchým debugem, var_export($users) což vrací NULL

https://www.php.net/manual/en/function.json-decode.php

Citace

Returns the value encoded in json in appropriate PHP type. Values true, false and null are returned as TRUE, FALSE and NULL respectively. NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.

Edited by mxco
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
×
×
  • Create New...