- Samsung Galaxy Z Fold4 - egyre megy, honnan nézed
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Okosóra és okoskiegészítő topik
- Motorola Edge 40 - jó bőr
- Honor Magic5 Pro - kamerák bűvöletében
- A Mobvoi eddigi legkeményebb órája a TicWatch Atlas
- Apple Watch Sport - ez is csak egy okosóra
- Samsung Galaxy Z Fold5 - toldozás-foldozás
- Vodafone mobilszolgáltatások
Új hozzászólás Aktív témák
-
bandi0000
nagyúr
-
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
Paid my dues!
-
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.
aecho $rows['ID'];
-t berakom a while után közvetlen vissza kapom az adatokat.Mit rontok el, hogy nem jelenik meg adatom?
[ Szerkesztve ]
-
veterán
válasz bandi0000 #19559 üzenetére
én már mindenhogy próbáltam
És én minden esetre köszönöm az ötletelés, okoskodásnak biztos nem veszem, mert én mát ötlettelen vagyok
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 ]
-
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 ]
-
veterán
-
#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
-
#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.
-
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
-
bandi0000
nagyúr
válasz supercow #19568 üzenetére
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 átindex.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
-
bandi0000
nagyúr
válasz supercow #19570 üzenetére
basszus minő balga hiba
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
-
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;
}
}
?> -
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
-
bandi0000
nagyúr
válasz #57018880 #19577 üzenetére
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
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
-
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 ]
-
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
-
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
-
pelyib
tag
válasz bandi0000 #19586 üzenetére
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.
-
bandi0000
nagyúr
válasz pelyib #19587 üzenetére
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
-
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
-
MODERÁTOR
-
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
-
bandi0000
nagyúr
válasz bandi0000 #19593 üzenetére
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
-
DNReNTi
őstag
válasz bandi0000 #19594 üzenetére
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.
but without you, my life is incomplete, my days are absolutely gray
-
pelyib
tag
válasz bandi0000 #19599 üzenetére
Az átadott osztálynak implementálni kell a JsonSerializable interface-t.
Új hozzászólás Aktív témák
- Kutya topik
- Apple notebookok
- Milyen monitort vegyek?
- Renault, Dacia topik
- Samsung Galaxy Z Fold4 - egyre megy, honnan nézed
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
- Samsung Galaxy S23 és S23+ - ami belül van, az számít igazán
- Házimozi belépő szinten
- BMW topik
- Politika
- További aktív témák...
Állásajánlatok
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest