Hirdetés

2024. május 3., péntek

Gyorskeresés

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)

Hozzászólások

(#19551) mobal válasza bandi0000 (#19550) üzenetére


mobal
MODERÁTOR

PHP az szerver oldal, kliens oldal az HTML + JavaScript. Szerintem kliens oldal nézz szét.

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#19552) bandi0000 válasza mobal (#19551) üzenetére


bandi0000
nagyúr

persze tudom, csak suliba beadandó kell, nem kell szerver meg kliens, csak front kontroller, meg 1-2 dolog, ez a pop up ablak se kell, csak mivel van egy kis DB művelet jobb lett volna egy ilyennel kiirni egy kis infót, de lehet hagyom

Xbox One: bandymnc

(#19553) bucihost válasza bandi0000 (#19552) üzenetére


bucihost
senior tag

JS alert? :R

(#19555) Nite válasza mobal (#19546) üzenetére


Nite
őstag

az a resze rendben is van, ahogy a kepeken latod, a "szemetmappa1" nem letezik, ezert az a controller nem talalhato, jelzi is a CI

a "szemetmappa" az elso kepen viszont letezik, az "application" mappan kivul van, egeszen pontosan mellette, azt szeretnem elerni es egy htaccess-el tiltani benne a file listázást

magyarul, hogy azt ne ellenorizze a CI, de nem ertem miert teszi, ha egyszer nincs az "application" mappan belul :F

Paid my dues!

(#19556) Pulsar


Pulsar
veterán

sziasztok,

egy kis segítséget szeretnék kérni, mert már teljesen tanácstalan vagyok
php7-et használok

és a következővel lenne a gondom:
<?php
while($rows = $result->fetch_assoc()) {
?>

<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['ID']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['ID']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['Comment']; ?></td>
</tr>

<?php
}
?>

177 sorom van, legenerálódik szépen a táblázat, 177 üres sorral.
a echo $rows['ID']; -t berakom a while után közvetlen vissza kapom az adatokat.

Mit rontok el, hogy nem jelenik meg adatom?

[ Szerkesztve ]

(#19557) bandi0000 válasza Pulsar (#19556) üzenetére


bandi0000
nagyúr

Szerintem hiányzik a fetch mód, pl: PDO::FETCH_ASSOC

nem szóltam

[ Szerkesztve ]

Xbox One: bandymnc

(#19558) Pulsar válasza bandi0000 (#19557) üzenetére


Pulsar
veterán

így is próbáltam de az eredményem ugyan az:
mysqli_fetch_all($result,MYSQLI_ASSOC);

(#19559) bandi0000 válasza Pulsar (#19558) üzenetére


bandi0000
nagyúr

biztos jól használod? Mert elvileg ez a szintaktika

vagy ahogy én csináltam :

$row=$result->fetchAll(PDO::FETCH_ASSOC)

de nem okoskodok, vannak okosabbak, én még csak tanulom a nyelvet :D

Xbox One: bandymnc

(#19560) Pulsar válasza bandi0000 (#19559) üzenetére


Pulsar
veterán

én már mindenhogy próbáltam :D
És én minden esetre köszönöm az ötletelés, okoskodásnak biztos nem veszem, mert én mát ötlettelen vagyok :R
Jelenleg úgy gondolom hogy a cikluson belüli változó kezeléssel lesz a bajom, mert ha:

<?php
while($rows=mysqli_fetch_assoc($result)) {
echo $rows['ID'];
?>

<tr>
<td align="center" bgcolor="#FFFFFF"><input name="checkbox[]" type="checkbox" id="checkbox[]" value="<? echo $rows['ID']; ?>"></td>
<td bgcolor="#FFFFFF"><? echo $rows['ID']; ?></td>
<td bgcolor="#FFFFFF"><? echo $rows['Comment']; ?></td>
</tr>

akkor az eredményem:

[ Szerkesztve ]

(#19561) Doink válasza Pulsar (#19560) üzenetére


Doink
aktív tag

Nézd meg hogy mi kerül a "$rows"-ba pl.: var_dump($rows) vagy ha élhetőbben szeretnél debugolni akkor xdebuggal.

[ Szerkesztve ]

(#19562) Pulsar válasza Doink (#19561) üzenetére


Pulsar
veterán

ezt az xdebug-t nem ismertem, köszönöm, mindjárt meglesem.
vardumpra pedig ezt kapom.
array(2) { ["ID"]=> string(1) "1" ["comment"]=> string(21) "tetszoleges szöveg 1" }
array(2) { ["ID"]=> string(1) "2" ["comment"]=> string(21) "tetszoleges szöveg 2" }
array(2) { ["ID"]=> string(1) "3" ["comment"]=> string(21) "tetszoleges szöveg 3" }

[ Szerkesztve ]

(#19563) Pulsar válasza Pulsar (#19562) üzenetére


Pulsar
veterán

na meg van a hiba. Hú de láma dolog :D

<td bgcolor="#FFFFFF"><? echo $rows['ID']; ?></td> ---> <td bgcolor="#FFFFFF"><?php echo $rows['ID']; ?></td>

mindenkinek köszönöm a rám fordított időt :R
a php debug-ot pedig nekem nem találja az extension-ök között

[ Szerkesztve ]

(#19564) #71423744


#71423744
törölt tag

Sziasztok!

Facebook API. Valami koncepcionális leírásra lenne szükségem / bármi elég frissnek tekinthető leírásra a felhasználói fényképek kezeléséről.

Az elméleti szitu. Adva van egy fb alkalmazás, amit a felhasználó engedélyez. Az app megkapja az engedélyeket. Az alkalmazás kilistázza weblapra a felhasználó által feltöltött fényképeket. Eddig még találok elég sok példát, működni fog. A felhasználó választ egyet. És az után kezdődik a problémám. Az alkalmazásnak fel kell tudnia jegyeznie egy olyan linket / tokent / akármit, amin keresztül az a kiválasztott kép egyértelműen azonosítható bármikor sokkal később is. Akár évek múlva. Az alkalmazásnak tudnia kell bármikor később is linket adnia arra, hogy az a kép a kliens oldalon megjeleníthető legyen. _Vagy_ tudnia kell felismerni azt az esetet, ha az a fénykép elérhetetlenné vált. Példának okáért a felhasználó azt a képet letörölte, vagy megváltoztatta a hozzáférési jogokat (eu-ban már van gdpr is).

Mi a legnormálisabbnak tekinthető angol szakirodalom, amiből körbejárhatom a fentebbi kérdéskört? A programozási alapjaim megvannak, nagyon alap dolgokon nem akadok majd fent, de levegőben lógó, félig / semennyire sem megmagyarázott api doksiból nem tudom kihámozni a háttér mechanizmusait. Reménykedem benne, nem csak annyi van, ami az fb dev oldalán érhető el, mert az hagy maga után nem kevés kívánnivalót :(((

(#19565) Doink válasza #71423744 (#19564) üzenetére


Doink
aktív tag

Elmented a kép id-jét, graph api visszadja.

(#19566) #71423744 válasza Doink (#19565) üzenetére


#71423744
törölt tag

Van FB-n dev csoport, de fogalmam sincs, mennyi idő, mire visszaigazolják a csatlakozásomat, és addig nem tudok ott kérdezni :(((

A user_id + photo_id még oké, de mindkettőhöz védelmi beállítások is tatoznak, és tudni kellene monitorozni, hogy az adott fénykép publikusan hozzáférhető-e? Eddig ami csúnya megoldást találtam, hogy nem egy alkalmazást regisztrálok, hanem legalább 2-t, megosztom közöttük a user_id-kat, és a másodlagos alkalmazással lelistázom az adott user_id alatt elérhető fényképeket. Lévén azt az alkalmazást a user nem fogja engedélyezni (fel sem kínálom), a publikus fényképeken kívül mást nem kapok meg a listában. Viszont ez nagyon csúnya és teljesítménypocsékoló "megoldás". Az FB-n minden alkalmazás engedélyköteles, az FB meg is tilthatja, hogy ilyet csináljak.

Egy másik kérdés, amin filozok, hogy azok a photo_id-k vajon mindörökké unique szigorúan monoton növekvő értékek? Vagy előfordulhat a jövőben, hogy letöröl az egyik user valami fényképet, aztán feltölt egy másikat, és az új fénykép megkapja a régi id-ját? Mert akkor más fénykép került uzgyan arra a user_id + photo_id-ra, és az problémát tud jelenteni az alkalmazás tisztaságának megőrzésében. Egy profil képet lecserélhetnek egy önkényuralmi jelképre, és azt fogja az app-om a népek orra elé tolni. Ki kellene azt védeni 101%-osan. Erre valószínűleg az FB "hivatalos" állásfoglalására lesz szükségem. De ha írták is konkrétan valahol, akkor azt a levelet megspórolhatom.

(#19567) bandi0000


bandi0000
nagyúr

PHP-ben hogyan tudnám ellenőrizni, hogy van e az objektum tömben adat?

RestAPI-t csinálok, lekérdeztem az adatbázisból, és egy objektum tömbe raktam bele egyesével az adatokat, de hiába echo-zom ki, nem ír ki semmit, a lekérdezés jó, azt ki tudtam íratni, print_r-el meg nem írja ki a konkrét adatokat, csak annyi sort ahány adat van

Xbox One: bandymnc

(#19568) supercow válasza bandi0000 (#19567) üzenetére


supercow
őstag

esetleg var_dump($objektum) ?

ha objektum akkor $obj->tulajdonsag formában éred el, ha tömb akkor $tomb['tulajdonsag'] , nem tudom mi kell neked mert nem tiszta a kérdés.

In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.

(#19569) bandi0000 válasza supercow (#19568) üzenetére


bandi0000
nagyúr

itt a gites link

Lényeg az, hogy tanulom ezt a slimframeworkot, + OOP

Lekérdeztem az adatbázisból, és minden sorból csináltam egy objektumot, ez a Student.php ban van
objektumokat a StudentEntity-ből származtattam , + ez örökölt még a Mappertől, de ez csak az adatbázis változót vette át

index.php-ban, a tanulok útvonalnál akartam ezt kiíratni, de nem igazán írt ki semmit a tulajdonságokkal, attól tartok, hogy valamit nem jól csináltam az adatbázis és az objektumok között

mert az adatbázisból lekérdezi, $row-ba benne is vannak az értékek, szóval vagy a kiíratás nem jó, vagy nem rakja bele a tömbbe

Xbox One: bandymnc

(#19570) supercow válasza bandi0000 (#19569) üzenetére


supercow
őstag

A StudentEntity.php-ben hiba hogy a construct helyett consturct az biztos gondot okoz.

[ Szerkesztve ]

In nomine Pasta, et Fusilli, et Spaghetti Sancti. Ramen.

(#19571) bandi0000 válasza supercow (#19570) üzenetére


bandi0000
nagyúr

basszus :D minő balga hiba :R

Esetleg ha abban tudnál még segíteni, vagy akárki más, hogy

composer.json-be megadtam, hogy hol vannak az osztályok, de nem találja, vagyis szerintem rossz helyen keresheti?

autoload-ot is betöltöttem, de csak úgy találja az osztályt, ha requireddel betolom őket ugye

Xbox One: bandymnc

(#19572) bandi0000 válasza bandi0000 (#19571) üzenetére


bandi0000
nagyúr

sztornó

Xbox One: bandymnc

(#19573) Locsi


Locsi
senior tag

Sziasztok. Van egy Ncore kereső, a Synology Nas-hoz de már nem igazán működik, még akkor sem, ha jól van beállítva. Azt szeretném, hogy magát a kereső plugint átalakítani, hogy azt a kulcsot is hozzá illessze az url végére, amit a torrent letöltésékor kapunk. Valahogy így néz ki, amit a dlm generál.

http://ncore.cc/torrents.php?action=download&id=xxxxxxx

és így kellene, hogy kinézzen

http://ncore.cc/torrents.php?action=download&id=xxxxxxx&key=xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

Maga a kereső, az így néz ki, de nem tudom, hova kellene beírni, hogy helyes legyen.

<?php
class SynoDLMSearchNCore {
private $qurl = 'http://ncore.cc/torrents.php';
private $purl = 'http://ncore.cc/torrents.php?action=download&id=';
private $NCORE_COOKIE = "/tmp/ncore.cookie";
private $NCORE_LOGIN_URL = 'https://ncore.cc/login.php';

public function __construct() {
}

public function prepare($curl, $query, $username, $password) {

if (!file_exists($this->NCORE_COOKIE) && $username !== NULL && $password !== NULL) {
$this->VerifyAccount($username, $password);
}

curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_USERAGENT, DOWNLOAD_STATION_USER_AGENT);
curl_setopt($curl, CURLOPT_COOKIEFILE, $this->NCORE_COOKIE);
curl_setopt($curl, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLOPT_REFERER, $this->qurl);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_URL, $this->qurl."?miben=name&tipus=all_own&miszerint=fid&hogyan=DESC&mire=".urlencode("[###]" != $query ? $query : ""));
}

public function VerifyAccount($Username, $Password) {
$ret = FALSE;

$PostData = array('ne_leptessen_ki'=>'1',
'Submit'=>'Belépés!',
'nev'=>$Username,
'pass'=>$Password,
'set_lang'=>'hu',
'submitted'=>1,
);
$PostData = http_build_query($PostData);

$queryUrl = $this->NCORE_LOGIN_URL;

$curl = curl_init();
curl_setopt($curl, CURLOPT_SSL_VERIFYPEER, FALSE);
curl_setopt($curl, CURLOPT_FOLLOWLOCATION, 1);
curl_setopt($curl, CURLOPT_USERAGENT, DOWNLOAD_STATION_USER_AGENT);
curl_setopt($curl, CURLOPT_POST, TRUE);
curl_setopt($curl, CURLOPT_POSTFIELDS, $PostData);
curl_setopt($curl, CURLOPT_COOKIEJAR, $this->NCORE_COOKIE);
curl_setopt($curl, CURLOPT_HEADER, TRUE);
curl_setopt($curl, CURLOPT_REFERER, $this->NCORE_LOGIN_URL);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, TRUE);
curl_setopt($curl, CURLOPT_URL, $queryUrl);

$LoginInfo = curl_exec($curl);

curl_close($curl);

if (FALSE != $LoginInfo && preg_match("/Set-Cookie: nick=".$Username."/iU", $LoginInfo) && file_exists($this->NCORE_COOKIE)) {
$ret = TRUE;
} else {
$ret = FALSE;
}
return $ret;
}

public function parse(&$plugin, $response) {
preg_match("/<div.*?box_torrent_all.*?>/iU", $response, $match);
$beginPos = strpos($response, $match[0]);
preg_match("/<div.*?lista_lab.*?>/iU", $response, $match);
$endPos = strpos($response, $match[0]);

$response = substr($response, $beginPos, $endPos-$beginPos);
preg_match("/<div.*\"box_torrent_all\".*>(.*?)<\/div>/isU", $response, $match);

$response = $match[1];

$res=0;
if(preg_match_all("/<div class=\"box_torrent\">(.*)<div class=\"torrent_lenyilo/siU", $response, $matches2, PREG_SET_ORDER)) {
foreach($matches2 as $match2) {
$title="Unknown title";
$download="Unknown download";
$size=0;
$datetime="1978-09-28";
$page="Default page";
$hash="Hash unknown";
$seeds=0;
$leechs=0;
$category="Unknown category";

$torrentData = $match2[1];
preg_match("/"
."<div class=\"box_alap_img\">.*<a.*<img.*alt=['\"](.*)['\"].*"
."<div class=\"torrent_txt2?\">.*<a.*href=['\"].*id=(\d+)['\"].*(title=['\"](.*)['\"].*)<nobr>(.*)<\/nobr>.*"
."box_feltoltve.*>(.*)<\/.*"
."box_meret.*>(.*)<\/.*"
."box_s.*<a.*>(\d+)<\/.*"
."box_l.*<a.*>(\d+)<\/.*"
."/isU", $torrentData, $matchDetail);
if (count($matchDetail) > 0){
$title = $this->getTitle($matchDetail);
$download = $this->qurl."?action=download&id=".$matchDetail[2];
$size = $this->getSize($matchDetail);
$datetime = $this->getDate($matchDetail);
$page = $this->qurl."?action=details&id=".$matchDetail[2];
$hash = md5($title.$download);
$seeds = $matchDetail[8];
$leechs = $matchDetail[9];
// $category = utf8_encode($matchDetail[1]);
$category = $matchDetail[1];

$plugin->addResult($title, $download, $size, $datetime, $page, $hash, $seeds, $leechs, $category);
$res++;
} else {
ob_start();
var_dump($torrentData);
file_put_contents("/tmp/dlm_parse_error_".date("YmdHis")."_".rand(100000).".txt", ob_get_clean()."\n");
}
}
}
return $res;
}

private function getTitle ($matches) {
return ("..." == substr($matches[5], -3) && trim($matches[4]) != "" ? $matches[4] : $matches[5]);
}

private function getSize ($matches) {
$size = str_replace(array("<br>", "<br />", "<br/>"), array(" "), $matches[7]);
preg_match("/(.*) (.*)/i", $size, $sizeParts);
$multiplier = 1;
switch ($sizeParts[2]){
case "TB": $multiplier *= 1024;
case "GB": $multiplier *= 1024;
case "MB": $multiplier *= 1024;
case "kB": $multiplier *= 1024; break;
}
return $sizeParts[1] * $multiplier;
}

private function getDate($matches) {
$date = $matches[6];
if(preg_match("/(\d+)-(\d+)-(\d+).*?(\d+):(\d+):(\d+)/i", $date, $matchDate)){
$date = sprintf("%04d-%02d-%02d %02d:%02d:%02d", $matchDate[1], $matchDate[2], $matchDate[3], $matchDate[4], $matchDate[5], $matchDate[6]);
}
return $date;
}
}
?>

(#19574) Doink válasza Locsi (#19573) üzenetére


Doink
aktív tag

99. sorba

(#19575) Locsi válasza Doink (#19574) üzenetére


Locsi
senior tag

Köszönöm. Közben megoldódott, kaptam egy újabb verziót, az már leszedi ezt a kulcsot is.

(#19576) bandi0000


bandi0000
nagyúr

Tudnátok abban segíteni, hogy

Megcsináltam egy REST API-t, SlimFramework tutorial alapján, end pointok működnek is, hanem az jutott eszembe, hogy Put és Post kéréseknél kellene ellenőrizni itt a szerver oldalon az adatokat, ezt hogy érdemes megtenni? Szép megoldást akarok, de itt még csak gyakorolgatok, szóval írjak egy osztályt rá, vagy máshogy kellene?

Illetve tutorialba amikor bekérte az adatokat, abból létrehozott egy objektumot, ugye van egy osztály ami megfelelteti az adatbázis egy tábláját, na már most, úgy csinálta, hogy ezt az objektumot dobta tovább a mentést végző metódusnak, és az adatbázis műveletnél használnia kellett az osztály getter metódusait, gondolom ezt az OOP miatt csinálta így, viszont csomó átalakítást és nyűgöt lehetne megspórolni úgy, ha csak egy tömbként adnám tovább az adatokat, ez nem fér bele már az OOP/ szép megoldásba?

Xbox One: bandymnc

(#19577) Gave válasza bandi0000 (#19576) üzenetére


Gave
addikt

Egyből a mély vízbe mentél :).

Melyik tutorialból tanulsz, linky?

(#19578) bandi0000 válasza Gave (#19577) üzenetére


bandi0000
nagyúr

Igen kicsit közepén kezdtem, szakdogához kell majd egy weblapot csinálni, és ezt ajánlották, hogy így csináljam, nekem igazából tetszik, bár a .Net kicsit jobban feküdne, bár azt is most kezdtük :D

Amúgy [ez] a tutorial, bár inkább a githubos megoldás sterint csináltam, mert ez a tutorial annyira nem részletesen írja le

[ez] a githubos link, ticketmapper talán a class neve, amibe van a save metódus, arról beszéltem

[ Szerkesztve ]

Xbox One: bandymnc

(#19579) Gave válasza bandi0000 (#19578) üzenetére


Gave
addikt

Nem használom ezt a framewokot, ami azt illeti a terminológiája már első olvasásra fáj egy kicsit :).

Úgy tűnik, hogy a Slimbe itt lehet bekötni egy validátor objektumot. Itt meg már valaki dolgozott rajta.

(#19580) bandi0000 válasza Gave (#19579) üzenetére


bandi0000
nagyúr

Köszi, jó olvasmány lesz a hideg estékre :D

Xbox One: bandymnc

(#19581) mobal válasza Locsi (#19573) üzenetére


mobal
MODERÁTOR

Van rss direkt download linkkel. Felesleges parzolgatni a dokumentumot. :)

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#19582) GreenIT


GreenIT
tag

Tudna valaki segiteni, hogy erre a hibara mi a megoldas?
win7 prof alatt jott elo, ha szamit es ilyen dll-t win7 alatt nem talaltam.

[ Szerkesztve ]

(#19583) sztanozs válasza GreenIT (#19582) üzenetére


sztanozs
veterán

.NET v1 (vagy 1.1) kell neki.
[link]

JOGI NYILATKOZAT: A bejegyzéseim és hozzászólásaim a személyes véleményemet tükrözik; ezek nem tekinthetők a munkáltatóm hivatalos állásfoglalásának...

(#19584) bandi0000


bandi0000
nagyúr

Nézegetem ezt a SlimFramework-os validációt, ez tényleg ennyire sok és bonyolult, mint ahogy nekem tűnik, vagy csak nekem új ez ennyire? Github-os linken több 100 sor-ban csinálta meg a validálást, már amennyire jól értelmeztem

ezt nézegetem, én sem csináltam nagyon még ilyet, pláne nem PHP-ban, ígyí elsőre megijedtem tőle, azt hittem egyszerűbb

vagy csak én nem találok olyan leírást ami elmagyarázza jól ezt a dolgot

[ Szerkesztve ]

Xbox One: bandymnc

(#19585) GreenIT válasza sztanozs (#19583) üzenetére


GreenIT
tag

:R

(#19586) bandi0000


bandi0000
nagyúr

Kaptam még1 tippet a validációra, mégpedig a GUMP, ezt hogy érdemes beleírni a kódba? Értem ezt úgy, hogy gondolom nem kellene ezeket bele okádni az endpointok közé, hanem kellene egy külön osztály és azt hívogatni mikor validálni akarok?

Xbox One: bandymnc

(#19587) pelyib válasza bandi0000 (#19586) üzenetére


pelyib
tag

Az attól függ, hogy mit akarsz validalni.
Ha a request-t, akkor én a fentebb levő middleware-s megoldást mondanám, azzal az invalid request el se jut a controllerig. De akár saját magad megírt egyszerű class is jó ami csak a Respect\Validation libet használja.
Szóval igen, külön osztály, akár minden endpointhoz egyet-egyet.

Ha meg csak a paraméterét egy metodusnak, akkor meg simán ott helyben: Respect\Validation.

És igen szivás meg idő mindent levalidalni, de utána nyugodtabban alszik az ember.

(#19588) bandi0000 válasza pelyib (#19587) üzenetére


bandi0000
nagyúr

Köszi, gondolom a request-re validálás az, amikor a bejövő adatokat validálom, responsra talán nincs is értelme

Ránézek akkor a middlewarera, csak nem igazán találok értelmes leírást, még a slim honlapján se...

Még egy banális kérdés, felhasználó azonosítást a szerver ordalon kell megcsinálni? Mármint gondolok arra, hogy ha bejelentkezik, akkor maradjon meg a munkamenete, ez PHP ben történik?

Xbox One: bandymnc

(#19589) Doink válasza bandi0000 (#19588) üzenetére


Doink
aktív tag

24, 26, 28 és 29-et nézd meg, minden kérdésedre választ kapsz.

[ Szerkesztve ]

(#19590) bandi0000 válasza Doink (#19589) üzenetére


bandi0000
nagyúr

Köszi, ezzel már én is szemeztem, hogy végigcsinálom

Xbox One: bandymnc

(#19591) bandi0000


bandi0000
nagyúr

Megint kérnék egy kis segítséget

Van egy osztály, abba vannak adattagok, név,email,lakhely... stb, ezekhez van get tulajdonság

Viszont egy ilyen objektum tömböt hogyan tudok vissza adni JSON válaszba?

Egy ideje guglizok, sok mindent találtam, de igazából nem nagyon működnek, gondolom valami komolyabb átalakítás kellene itt

Ami működött, hogy csináltam az osztályba még1 metódust, ami vissza adja tömbként az összes adatot, ez nem is lenne rossz szerintem, de csak 1 objektumra működik, nekem meg egy objektum tömböm van

[ Szerkesztve ]

Xbox One: bandymnc

(#19592) mobal válasza bandi0000 (#19591) üzenetére


mobal
MODERÁTOR

json_encode?

Szerk.: ha jól sejtem van mindent mezőre egy getter / setter, akkor inkább valami ilyesmi kell neked: [link], továbbá [link].

[ Szerkesztve ]

"Ott szimatol a sarkadban vasfogait csattogtatva, minden egyes hétköznapod: kirúzsozott medvecsapda."

(#19593) bandi0000 válasza mobal (#19592) üzenetére


bandi0000
nagyúr

köszönöm, elvileg sikerült
Akkor egy hivatalos json válasz így néz ki ? :
"{\"id\":\"3\",\"firstname\":\"J\\u00e1sz\",\"lastname\":\"Miska\",\"email\":\"misikepower@gmail.com\",\"age\":\"999\",\"postcode\":\"6041\"}",

ráhúztam ezt a json_encode-t, azt írta ki ilyen formába

így állítom össze a választ:

return $response->withJSON(
$json,
200,
JSON_UNESCAPED_UNICODE
);

nem találtam rá megoldást, mit kellene máshogy csinálni, hogy ne tűnjenek el az ékezetek, gondolom rá kellene erőltetni az UTF8-at valahogy

Xbox One: bandymnc

(#19594) bandi0000 válasza bandi0000 (#19593) üzenetére


bandi0000
nagyúr

UPDATE

közben látom, hogy nem json formátum, legalább is egy validátor szerint

végül is az lett a megoldás, hogy az osztályban van egy metódus, ami json formátumban adja vissza az adattagokat, és ezt tudom vissza küldeni a $response-ba

ez mennyire számít jó megoldásnak? mármint ha nem hoki backendet akarok csinálni?

Xbox One: bandymnc

(#19595) DNReNTi válasza bandi0000 (#19594) üzenetére


DNReNTi
őstag

Ha nem hoki backendet akarsz irni, akkor a PHP-t kb el is felejtheted. Nem megoldhatatlan feladat benne REST API-t irni, csak szerintem tulzottan hakolas, meg akkor is ha valami normalis framework-ot hasznalsz, ilyen lehet pl a Lumen vagy a Slim. Szerintem kimondottan API-t irni, sokkal egyszerubb mondjuk NodeJS-ben. Lehet velem van a baj, es csak az en kezem nem allt ra, de en az utobbi par evben a modern igenyek miatt inkabb mar elengedtem a PHP-t. :K

but without you, my life is incomplete, my days are absolutely gray

(#19596) bandi0000 válasza DNReNTi (#19595) üzenetére


bandi0000
nagyúr

Igazából szakdogát csinálgatom, arra javasolták, nem profi alkalmazás kell, slimet használom én is, annyira nem gáz, de gondolom vannak sokkal jobb Api erre

Xbox One: bandymnc

(#19597) Gave válasza DNReNTi (#19595) üzenetére


Gave
addikt

Melyik modern igényre nem volt alkalmas? :D

(#19598) pelyib válasza bandi0000 (#19593) üzenetére


pelyib
tag

Slim-ben a Response::withJson method meg fogja neked csinalni az encode-t. Nem kell kezzel meghivnod.

Az ekezetest (árvíztűrő tükörfúrógép) gyorsan megneztem, nekem mindenfele beallitas nelkul, out of the box mukodott.

(#19599) bandi0000 válasza pelyib (#19598) üzenetére


bandi0000
nagyúr

igen ezt használnám, de objektummal nem működik, legalább is nálam... üres kapcsos zárójelet dob

Xbox One: bandymnc

(#19600) pelyib válasza bandi0000 (#19599) üzenetére


pelyib
tag

Az átadott osztálynak implementálni kell a JsonSerializable interface-t.

Útvonal

Fórumok  »  Szoftverfejlesztés  »  PHP programozás (kiemelt téma)
Copyright © 2000-2024 PROHARDVER Informatikai Kft.