- Bemutatkozott a Transcend SSD-inek zászlóshajója
- Sugárhajtómű ihlette a Zalman CPU-hűtőjét, de nem az üzemzaj tekintetében
- Félreértések az FSR 4 és a PlayStation 5 Pro körül
- Nem tetszik a Procon-SP-nek, hogy a Nintendo távolról kivégezheti a Switch 2-t
- Megcélozta az NVIDIA-t a 2 nm-es node-jával a Samsung
Új hozzászólás Aktív témák
-
sztanozs
veterán
válasz
lanszelot #21651 üzenetére
MI a a php verzio?
As of PHP 7.4.0 » libsqlite ≥ 3.7.4 is required. Formerly, the bundled libsqlite could have been used instead.plusz:
Note: Additional setup on Windows as of PHP 7.4.0
In order for this extension to work, there are DLL files that must be available to the Windows system PATH. For information on how to do this, see the FAQ entitled "How do I add my PHP directory to the PATH on Windows". Although copying DLL files from the PHP folder into the Windows system directory also works (because the system directory is by default in the system's PATH), this is not recommended. This extension requires the following files to be in the PATH: libsqlite3.dll. -
sztanozs
veterán
válasz
lanszelot #21496 üzenetére
Nem igazan ertem a hisztit, foleg php iranybol.
- Nem talatal az adatforrasodhoz API-t - segitettunk
- Nem tudtad hasznalni az API-t - segitettunkA tobbi egyaltalan nem PHP kerdes. Ha nem tetszik a szolgaltatas, akkor:
1) keress masikat, vagy
2) csinalj masikat.
3) az hogy egy masik oldal adatbazisat lemasolod az nem "csinalas", sot az adott oldal TOS-e kifejezetten tiltja... -
sztanozs
veterán
-
sztanozs
veterán
válasz
lanszelot #21482 üzenetére
https://api.themoviedb.org/3/discover/tv?api_key=***API-KEY***&language=hu-HU&sort_by=release_date.desc&page=1&with_origin_country=HU
{
"page":1,
"results":[
{
"backdrop_path":"/oJULkY4ItbuLVk8dDLyAfc53rFf.jpg",
"first_air_date":"2023-10-18",
"genre_ids":[35,18],
"id":237415,
"name":"Valami Amerika",
"origin_country":["HU"],
"original_language":"hu",
"original_name":"Valami Amerika",
"overview":"A Valami Amerika sorozat, amely a filmekből megismert világban játszódik, de ezúttal egy új testvér-trió történetét ismerhetjük meg: Marciét (Ember Márk), Zitáét (Trill Beatrix) és Balázsét (Király Dániel). A középpontban a legfiatalabb testvér, Marci és Bala közötti konfliktus áll, pontosabban az a pénzösszeg, amivel a fiú tartozik a rettegett maffiavezérnek. Mivel a testvérek, mindenben támogatják egymást, így megpróbálják kihúzni öccsüket a csávából, ezáltal belekerülve Bala hálójába, ahonnan csak egy módon szabadulhatnak, egy nagyszabású és látványos tehetségkutatón keresztül.",
"popularity":15.924,
"poster_path":"/cEMzFi0g7E7zkHaoJUZfpjKkfe9.jpg",
"vote_average":2,
"vote_count":1},
...
],
"total_pages":15,
"total_results":300
} -
sztanozs
veterán
válasz
sztanozs #21480 üzenetére
ha alapon (en-US) hagyod a nyelvet, akkor is megtalaja, csak akkor angol nyelvu lesz az eredmeny:
{
"page": 1,
"results": [
{
"adult": false,
"backdrop_path": "/3HqYJYPMvpkDTaPTTGJFAMUo3bE.jpg",
"genre_ids": [
10759,
10751
],
"id": 70371,
"origin_country": [
"HU"
],
"original_language": "hu",
"original_name": "A Tenkes kapitánya",
"overview": "During the Rákóczi's War of Independence in South Baranya, in Vienna, Colonel Eberstein is assigned by the Council of Warriors to dispose of the Kuruc army operating in the vicinity of Siklós.",
"popularity": 7.121,
"poster_path": "/bNElDStJNFol3wh0vZLQ0CGGCh7.jpg",
"first_air_date": "1964-01-11",
"name": "Captain Tenkes",
"vote_average": 6.3,
"vote_count": 3
}
],
"total_pages": 1,
"total_results": 1
} -
sztanozs
veterán
válasz
lanszelot #21478 üzenetére
peldakod az oldalrol:
<?php
$curl = curl_init();
curl_setopt_array($curl, [
CURLOPT_URL => "https://api.themoviedb.org/3/search/tv?query=tenkes%20kapit%C3%A1nya&include_adult=false&language=hu-HU&page=1",
CURLOPT_RETURNTRANSFER => true,
CURLOPT_ENCODING => "",
CURLOPT_MAXREDIRS => 10,
CURLOPT_TIMEOUT => 30,
CURLOPT_HTTP_VERSION => CURL_HTTP_VERSION_1_1,
CURLOPT_CUSTOMREQUEST => "GET",
CURLOPT_HTTPHEADER => [
"Authorization: Bearer ***token***",
"accept: application/json"
],
]);
$response = curl_exec($curl);
$err = curl_error($curl);
curl_close($curl);
if ($err) {
echo "cURL Error #:" . $err;
} else {
echo $response;
}valasz:
{
"page": 1,
"results": [
{
"adult": false,
"backdrop_path": "/3HqYJYPMvpkDTaPTTGJFAMUo3bE.jpg",
"genre_ids": [
10759,
10751
],
"id": 70371,
"origin_country": [
"HU"
],
"original_language": "hu",
"original_name": "A Tenkes kapitánya",
"overview": "Béri Balogh Ádám kuruc brigadéros parancsára a furfangos Eke Máté összegyűjti a szegényeket. A tenkeshegyi várban felütött tanyájukról indulnak a labancok elleni portyákra, sok borsot törnek a siklósi labanc ezredes orra alá, majd a várat is elfoglalják. Máté a siklósi vár kuruc kapitányaként folytatja tovább a harcot a labancok ellen.",
"popularity": 7.121,
"poster_path": "/bNElDStJNFol3wh0vZLQ0CGGCh7.jpg",
"first_air_date": "1964-01-11",
"name": "A Tenkes kapitánya",
"vote_average": 6.3,
"vote_count": 3
}
],
"total_pages": 1,
"total_results": 1
} -
sztanozs
veterán
válasz
lanszelot #21475 üzenetére
Itt mindent le is tudsz tesztelni, es meg peldakodot is general...
https://developer.themoviedb.org/reference/search-keyword -
sztanozs
veterán
válasz
lanszelot #21429 üzenetére
probald meg akkor hozzaadni, nem merge-elni:
//
$file = "study.json";
$backup = "study_old.json";
$kep = "youtube.jpg";
$link = "youtube.com";
$eredetijson = json_decode($file);
$tomb = array("kep" => $kep, "link" => $link);
$eredetijson["gmail"] = $tomb;
$ujjson = json_encode($res, JSON_PRETTY_PRINT);
copy($file, $backup);
file_put_contents($file, $ujjson); -
sztanozs
veterán
válasz
lanszelot #21427 üzenetére
En nem latom a kodban, hogy barmit barhova elmentenel... A json_decode csak beolvassa a fajl tartalmat, nem tartja nytva a fajlt vagy ir oda vissza barmit...
Ez hianyzik a visszairashoz (a sima json_encode sor helyett):file_put_contents('study_new.json', json_encode($res));
vagy ha a regi fajlt akarod atnevezni:
copy('study.json','study_old.json');
file_put_contents('study.json', json_encode($res)); -
sztanozs
veterán
válasz
lanszelot #21425 üzenetére
Nem gondolom, hogy tamado voltam, de ha ugy erzed akkor bocsanatot kerek erte...
Egyebkent, meg, hogy mit es hogyan probaltal ki (milyen verzioju php fut egyebkenet a szervereden?) azt nem tudja senki (meg azt sem tudom, van-e valahol kep/screenshot, mert lehet, hogy a ceges proxy miall nem latom), de te magad irtad:
Hello,
Még nagyon kezdő vagyok, ezt nem értem.
Nagyon sok minden van ott, és nem értem mi az ami rám vonatkozik.
Azt láttam, hogy ott van object, olyan ami nekem kell, de a sok minden között elveszek.
Ennek ellenere kototted az ebet a karohoz, hogy marpedig az nalad nem fog menni, amit javasolt, meg hogy ami neked kell, az objektum, nem lista... pedig neked nem is egy objektum kell, hanem egy string (szoveges json reprezentacio), amit akar kezzel is ossze tudnal ollozni, de persze konnyebb a rendelkezesre allo eszkozokkel:
json string -> asszociativ tomb -> ujabb elem hozzaadasa -> json szovegge visszaalakitas -
sztanozs
veterán
válasz
lanszelot #21416 üzenetére
Such wow...
<?php
$myObj = new stdClass();
$myObj->kep = "john.jpg";
$myObj->link = "john.com";
$foObj = new stdClass();
$foObj->gmail = $myObj;
$myJSON = json_encode($foObj);
echo $myJSON;
?>
<br>
<?php
$myArray = array("gmail"=>array("kep"=>"john.jpg", "link"=>"john.com"));
$myJSONArray = json_encode($myArray);
echo $myJSONArray;
?> -
sztanozs
veterán
válasz
Gardaai #21354 üzenetére
a rel attribútummal rendelkező elemeket rendszerint másik fájlból huzza be, esetleg lehet meg az a probléma hogy iframe-ben vannak az elemek - de mivel ahogy nézem szerveroldalon akarod feldolgozni (betöltöd az oldalt valahonnan?) így nem szabadna problémát okozzon.
Melyik oldalról van szó amúgy?
-
sztanozs
veterán
válasz
magortaltos #21309 üzenetére
ha nem response alapon futtatod (oldalbetoltesre), hanem schedulerbol meghivod akkor siman lehet. Persze ettol meg a kliens oldalon nem fog frissulni a tartalom. Kliens oldali JS kell a folyamatos ujratolteshez (de ez meglehetosen nagy forgalmat generalhat).
Kliens oldali JS-bol a setTimeout fuggvennyel tudsz idozitetten oldalbetoltest (vagy barmi egyebet) csinalni. -
sztanozs
veterán
Vagy alternativakent betoltheted DOM-ba es a getElementById-val megkeresed, ha pont id attributumot keresel...
Raadasul az XML-ed nem compiant, mivel nincs root element, igy kellene kinezzen:
<root>
<adat>
<dt id="11">egy</dt>
<dt id="22">ketto</dt>
</adat>
<adat>
<dt id="11">haron</dt>
<dt id="22">negy</dt>
</adat>
</root>
Innen igy tudod megkapni a kivan elemet:$xpath = new DOMXpath($document)
$xpath->evaluate('string(/root/adat[position()=1]/dt[@id = "11"])')
//egy
$xpath->evaluate('string(/root/adat[position()=2]/dt[@id = "11"])')
//harom -
sztanozs
veterán
válasz
hiperFizikus #21243 üzenetére
Hosszabban: igen, félreértetted
-
sztanozs
veterán
válasz
hiperFizikus #21241 üzenetére
Röviden: igen
-
sztanozs
veterán
válasz
hiperFizikus #21222 üzenetére
A szerver is használhatja a keresőt, csak kell hozzá API hozzáférés
-
sztanozs
veterán
válasz
hiperFizikus #21220 üzenetére
Ha van otthon egy folyamatosan futó gép (router, raspberry, vagy akármilyen számítógép), akkor arra simán fel tudsz húzni egy webszervert.
Ezen kívül van egy csomó szolgáltató is, akik adnak szervert és minimális tárhelyet ingyenesen vagy nagyon olcsón: [link] -
sztanozs
veterán
válasz
hiperFizikus #21150 üzenetére
Fejlessz állaptgépet és kezelj mindent kézzel. Nem tudom, most hol tart a kódod, de a regex-szel csak szívni fogsz, ha még mindig azzal próbálkozol.
-
sztanozs
veterán
válasz
lanszelot #21060 üzenetére
Oké, megpróbáltam összedobni W3-ban, de nem jó ott a callback, viszont ez alapján látnod kellene mit kell csinálni:
<!DOCTYPE HTML>
<html>
<head>
<style>
.error {color: #FF0000;}
</style>
</head>
<body>
<?php
// betöltés szimulálása
$array = array();
$array["google"] = ['kep' => "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", 'link' => "www.google.com"];
$array["startlap"] = ['kep' => "https://lap.hu/images/startlap-logo.png", 'link' => "www.lap.hu"];
// betöltés vége
// define variables and set to empty values
$nameErr = $kepErr = $linkErr = "";
$name = $kep = $link = "";
if ($_SERVER["REQUEST_METHOD"] == "POST") {
if (empty($_POST["name"])) {
$nameErr = "Name is required";
} else {
$name = test_input($_POST["name"]);
// check if name only contains letters and whitespace
if (!preg_match("/^[a-zA-Z_]*$/",$name)) {
$nameErr = "Only letters and underscore allowed";
}
}
if (empty($_POST["kep"])) {
$kepErr = "Email is required";
} else {
$kep = test_input($_POST["email"]);
// check if e-mail address is well-formed
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$kep)){
$kepErr = "Invalid URL format";
$kep = "";
}
}
if (empty($_POST["link"])) {
$link = "";
} else {
$link = test_input($_POST["link"]);
// check if URL address syntax is valid (this regular expression also allows dashes in the URL)
if (!preg_match("/\b(?:(?:https?|ftp):\/\/|www\.)[-a-z0-9+&@#\/%?=~_|!:,.;]*[-a-z0-9+&@#\/%=~_|]/i",$link)) {
$linkErr = "Invalid URL";
$link = "";
}
}
if ($name > "" && $kep > "" && $link > "") {
$array[$name] = ['kep' => $kep, 'link' => $link];
}
}
function test_input($data) {
$data = trim($data);
$data = stripslashes($data);
$data = htmlspecialchars($data);
return $data;
}
?>
<h2>PHP Form Validation Example</h2>
<form method="post" action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>">
Name: <input type="text" name="name" value="">
<br><br>
Kep: <input type="text" name="kep" value="">
<br><br>
Link: <input type="text" name="link" value="">
<br><br>
<input type="submit" name="submit" value="Submit">
</form>
<span class="error"><?php echo $nameErr;?></span>
<br><br>
<span class="error"><?php echo $kepErr;?></span>
<br><br>
<span class="error"><?php echo $linkErr;?></span>
<br><br>
<textarea>
<?php
var_dump($array);
?>
</textarea>
</body>
</html> -
sztanozs
veterán
válasz
lanszelot #21058 üzenetére
Ez csak egy példa kód, ráadásul amit becsatoltál példa-json-t az nem is felel meg annak, amit szeretnél (nem azonosak az asszociatív nevek)...
Nem tudom, hogy és honnan állítódnak elő ezek a változók, szóval csak összedobtam pár sort, hogy ugyanolyan kimenetű JSON-t kap, mint ami a példában volt.
---
De bocs, én néztem el, neked ez kéne:{
"google" => {'kep' => "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", 'link' => "www.google.com"},
"LapHu" => {'kep' => "https://lap.hu/images/startlap-logo.png", 'link' => "www.lap.hu"}
}Akkor itt a módosított kód:
$array = array();
$array["google"] = ['kep' => "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", 'link' => "www.google.com"];
$array["mail"] = ['kep' => "https://lap.hu/images/startlap-logo.png", 'link' => "www.lap.hu"];
for ($x = 0; $x <= 10; $x++) {
$array["oldal$x"] = ['kep' => "www.oldal.hu/kep/linkje/$x.png", 'link' => "www.oldal.hu"];
}
var_dump($array);Mivel a külső tömb is asszociatív, így ha ugyanazzal a névvel akarsz felvinni egy új oldalt akkor a régit felülírja - és 13 helyett csak három tömbelem lesz:
$array = array();
$array["google"] = ['kep' => "https://www.google.com/images/branding/googlelogo/1x/googlelogo_color_272x92dp.png", 'link' => "www.google.com"];
$array["mail"] = ['kep' => "https://lap.hu/images/startlap-logo.png", 'link' => "www.lap.hu"];
for ($x = 0; $x <= 10; $x++) {
$array["oldal"] = ['kep' => "www.oldal.hu/kep/linkje/$x.png", 'link' => "www.oldal.hu"];
}
var_dump($array); -
sztanozs
veterán
válasz
lanszelot #21056 üzenetére
Gyorsan kipróbáltam, ez adni fogja a megadott struktúrát:
$array = array();
$array[] = ["google" => ['name' => "Google", 'link' => "www.google.com"]];
$array[] = ["mail" => ['name' => "Mail", 'link' => "www.mail.com"]];
for ($x = 0; $x <= 10; $x++) {
$array[] = [ "link$x" => ['name' => "Site$x", 'link' => "www.site$x.com"]];
}
var_dump($array); -
sztanozs
veterán
válasz
Winner_hun #21043 üzenetére
Igen, kliens oldali javascripttel:
https://developer.mozilla.org/en-US/docs/Mozilla/Add-ons/WebExtensions/Interact_with_the_clipboardKonkrét megvalósítások:
https://stackoverflow.com/a/30810322/8154543 -
-
sztanozs
veterán
-
sztanozs
veterán
ÁÁÁ, a forráskódot senki nem fogja látni, az a szerver oldalon "átalakul" HTML-lé és a kliens csak azt látja, amit a PHP létrehoz. Szerintem tényleg olvass utána a kliens-szerver architektúrának és session kezelésnek.
Ezek a dologok egyáltalán nem úgy történnek, ahogy te azt elképzeled (a válaszod alapján).Egyszerűen a folyamat:
1) Kliens lekéri az oldalt (URL, COOKIE-k, GET paraméterek, POST tartalom)
2) szerverhez megérkezik a kérés, az URL alapján meghívja a megfelelő oldalt (PHP kód a te esetedben)
3) a COOKIE, GET és POST tartalom vezérli a PHP kódot a teljes lefutásig, miközben legyártja a kliensnek visszaadandó tartalmat (HTTP HEADER + HTML + beágyazott JS + beágyazott CSS - vagy egyéb tartalom, pl bináris fájl)
4) kliens feldolgozza a választ, megjeleníti a tartalmat és futtatja a JS kódokat
5) felhasználói tevékenységre vagy JS akciókra újabb oldallekérések -> 1) pont -
sztanozs
veterán
Minden egyes kattintás külön lekérés az oldalra külön adatokkal. A HTTP alapból állapotmentes, tehát a szerver nem tudja, hogy ez hányadik lekérés, és hogy az oldalnak (vagy a szervernek) mi volt az előző állapota. Alapból még azt sem tuja, hogy te ugyanaz a kliens volt, mint akit az előző kéréssel kiszolgált. Ezeket neked minden alkalommal a szerver tudtára kell adni, pl:
- a korábbi állapotot hidden mezőbe belerakva, amit mindenden lekérésnél ellenőrzöl
- session azonosítót átadva (cookie vagy hidden field), és a szerver kliensenként tárolja az előző álapotot és az alapján szolgálja ki a következőt -
sztanozs
veterán
Gondolom az eredeti fájlt töltöd vissza és nem állítos be azokat az opciókat, ami alapján az első php a másodikat beinclude-olná, a harmadik meghívásra.
Szvsz egyébként ez nem egy szép módszer, inkább XHR-rel kellene csinálni és az oldal részét dinamikusan változtatni (pl egy DIV tartalmát). -
sztanozs
veterán
Igen, az in_array sinám végigiterál, amíg meg nem találja, míg a másik változat (key_exists) esetében azt a tulajdonságot abuzáljuk, hogy a kulcsok hash-elve vannak tárolva és sokkal gyorsabban kereshetők, mint maga az adat.
Mivel nincs rendes Set megoldás (illetve a DS/Set nincs alapból telepítve), így a tömb asszociatív kulcs keresés megoldását lehet abuzálni, hogy sebességben sikert érjünk el.
Ezzel a módszerrel tárolhajuk az összefüggéseket két irányból is:<?php
$kategoriak = array(
'szorakozas' => ['elozetes', 'film', 'sorozat', 'hbo', 'mozi'],
'kultura' => ['mozi', 'szinhaz', 'múzeum', 'koncert', 'film'],
'masszázs' => ['eufória']
);
$kulcsok = [];
foreach($kategoriak as $kat => $v) {
foreach($v as $kulcs) {
if (key_exists($kulcs, $kulcsok)) {
$kulcsok[$kulcs][] = $kat;
} else {
$kulcsok[$kulcs] = array($kat);
}
}
}
var_dump($kulcsok); -
sztanozs
veterán
válasz
sztanozs #20895 üzenetére
és egy némileg lassabb implementáció PHP-ben:
<?php
$A = [];
$B = [];
foreach (range('A', 'Z') as $a){
foreach (range('A', 'Z') as $b){
foreach (range('A', 'Z') as $c){
$A[] = $a.$b.$c;
$B[$a.$b.$c] = 0;
}
}
}
echo count($A).'<BR>';
echo count($B).'<BR>';
$time_start = microtime(true);
for($i=0; $i<10000; $i++){
in_array('ZZZ', $A);
}
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
echo $execution_time.'<BR>';
$time_start = microtime(true);
for($i=0; $i<10000; $i++){
key_exists('ZZZ', $B);
}
$time_end = microtime(true);
$execution_time = ($time_end - $time_start);
echo $execution_time.'<BR>';
?>A különbség 1 sec vs 0.5 milisec.
-
sztanozs
veterán
Különbség a full list scan (foreach) és hashset között:
>>> # 456.976 elem listában
>>> A = ['AAAA', ..., 'ZZZZ']
>>> # 456.976 elem hasset-ben
>>> B = set('AAAA', ..., 'ZZZZ')
>>> # 2000 elem egy listában ami random négy karakter (~85% találati valószínűséggel)
>>> C = ['@ABC', ..., 'XYZ@']
>>> # keresés eredmények másodpercben
>>> timeit.timeit("[c in A for c in C]",number=1,globals=globals())
10.154
>>> timeit.timeit("[c in B for c in B]",number=1,globals=globals())
0.000786
Azaz míg 2000 elem megkeresése végigiterálva a félmilliós listában 10 másodpercig tart, addig ugyanannyi idő alatt 20.000.000 (húszmillió) elemet le lehet ellenőrizni egy félmilliós adattartalmú hashset-ben. -
sztanozs
veterán
Ezért is kell a kulcsszavakat és a kategóriákat táblázatban tárolni.
Ha táblázatban tárolod indexelve, akkor nem full table search lesz (azaz nem három egymásba ágyazott foreach), hanem Hash/B-Tree search, ami sokkal jobb.
De még két hashset/dictionary is jóval gyorsabb lenne, mint két lista.
https://www.php.net/manual/en/book.ds.php
http://docs.php.net/manual/en/class.splobjectstorage.php -
sztanozs
veterán
Ezt simán meg lehet csinálni SQL alapon mindenféle plusz kalkuláció nélkül is. Kellenek a következők:
- KATEGORIA tábla (ID, MEGNEVEZES)
- KULCSSZO tábla (ID, KULCS)
- M:N kötőtábla a Kulcsok és Kategóriák között (KUKA - KAT_ID, KULCS_ID)
- REKORDOK tábla (ID, ... mindenféle mezők ... )
- M:N kötőtábla a rekordok és kulcsok között (REKU - REKORD_ID, KULCS_ID)
Ezekkel simán SQL alapon lehet kimutatni a kategóriákat, mindenféle külön szenvedés nélkül:SELECT
R.*,
GROUP_CONCAT(KAT.MEGNEVEZES)
FROM REKORDOK AS R
JOIN REKU ON R.ID=REKU.REKORD_ID
JOIN KUKA ON REKU.KULCS_ID = KUKA.KULCS_ID
JOIN KATEGORIA AS KAT ON KUKA.KAT_ID = KAT.IDKb fejből, de lehet, hogy kell egy nested select:
SELECT
R.*
RK.KATEGORIAK
FROM REKORDOK JOIN
(SELECT
R.ID,
GROUP_CONCAT(KAT.MEGNEVEZES) AS KATEGORIAK
FROM REKORDOK AS R
JOIN REKU ON R.ID=REKU.REKORD_ID
JOIN KUKA ON REKU.KULCS_ID = KUKA.KULCS_ID
JOIN KATEGORIA AS KAT ON KUKA.KAT_ID = KAT.ID
GROUP BY R.ID) AS RKAT ON R.ID = RKAT.ID -
sztanozs
veterán
válasz
#45252096 #20878 üzenetére
Nem kell ehhez job szerintem, csak az adott mezőt nem kell tárolni, hanem kalkulálni - pontosabban az elkezdődött az az, ha a lekérdezés dátuma és ideje a kezdés dátuma és ideje után van. A befejeződött-et lehet kézzel állítani, mert adott meccseknél nem lehet tudni, mennyi a hosszabbítás, illetve adott esetben idő előtt is befejeződhet a meccs.
-
sztanozs
veterán
De itt a tökéletes regex, amiben jó a negative-backtest is:
\(&#(?:X[0-9a-f]+|\d*)(?![^&]*;))\i
itt a kód:
http://sandbox.onlinephpfunctions.com/code/ac08ec9ed305bfa1d881ddbaec58f8b58ab35cc8 -
sztanozs
veterán
Elméletileg a #&0 az oct kódolás lenne, de ezek szerint nem jól van implementálva abban a böngészőben, amit használsz. akkor csak simán kel kell venni az oct részt és hagyni, hogy decimálisba kódolja át és a kódodat használni. Így is - úgy is, de megszünteted az injection lehetőségét...
-
sztanozs
veterán
Igen igazából csak az számít, hova rakja a pontosvesszőt, a tiéd rossz helyre fogja, ha pl egy ilyen jön:
ϻblabla -> ϻblabla
ebből a böngésző ezt fogja értelmezni: A9;blabla
viszont a _decode nem fogja elkapni és te ezt látod: ϻblabla
vs
ϻblabla -> e9blabla
ebből a böngésző ezt fogja értelmezni: A9blabla -
sztanozs
veterán
Igen, elírtam a regex-et több helyen...
Először a parse-olható entity-ket el kell távolítani, majd javítani, majd még egyszer eltávolítani:<?php
$link='jAvAsCript';
echo $link . "\r\n";
// parse proper entities
$link = html_entity_decode($link, ENT_QUOTES);
echo $link . "\r\n";
$pattern = '/(&#(?:X[0-9a-f]+|0[0-7]+|[1-9]\d*)(?!;))/i';
$replacement = '${1};';
// add missing semicolon
$link = preg_replace($pattern, $replacement, $link);
echo $link . "\r\n";
// parse fixed entities
$link = html_entity_decode($link, ENT_QUOTES);
echo $link . "\r\n";
?> -
sztanozs
veterán
ha egyszer jól van kijelezve, és használva is.
Pont az a lényeg, hogy nincs jól (szabványosan) használva. Azért jelenik csak meg "helyesen", mert a böngészőmotorok direkt úgy vannak megírva, hogy a lehető legfospumpább módon összehányt html forrást is "helyesen" meg tudják jeleníteni. Ezt használják ki ezek az exploitok, és ezért kell ilyen extra lépéseket berakni az ellenőrzésekbe.
nem voltam elég gyors a válasszal...
Sőt, ae
is helyes -
sztanozs
veterán
Akkor regex-el kapd el: [link]
$link='jAvascript';
echo $link . "\r\n";
$pattern = '/(&#(?:X[0-9a-f]*|0{0-8}*|{1-9}{0-9}*)(?!;))/i';
$replacement = '${1};';
$link = preg_replace($pattern, $replacement, $link);
echo $link . "\r\n";
$link = html_entity_decode($link, ENT_QUOTES);
echo $link . "\r\n"; -
sztanozs
veterán
Mondjuk megnézem, hogy egy base64-encode-olt sztringben kogy keresel LIKE kulccsal...
Tablescan 4 president...
Amúgy nem értem ezt a JSON parát, simán lehet JSON mezőben még tagra is keresni, ráadásul még index is építhető rá (ha tudod, hogy pontosan mi alapján akarsz később keresni)... -
-
-
sztanozs
veterán
Amennyiben a 23-féle forrás 24 féle képen állítja elő a dolgokat, úgy célszerű bevezeti egy abszrakciós szintet és írni minden forásra egy-egy feldolgozót az absztrakciós szint (illetve néhány kulcs-feldolgozó-függvény) újrafelhasználásával. Persze meg lehet oldani egyetlen giga-feldolgozóval is, de ebben az esetben, ha bármelyik forrás változik, akkor a feldolgó fércelése kihatással lehet más (nem érintett) forrás rutinjának a szétesésével.
-
-
sztanozs
veterán
1) The difference between utf8 and utf8mb4 is that the former can only store 3 byte characters, while the latter can store 4 byte characters. In Unicode terms, utf8 can only store characters in the Basic Multilingual Plane, while utf8mb4 can store any Unicode character.
Ez alapján a kiterjesztett karakterkészletbe tartozó unicode karakterek (vsz emoji, extended chinese meg más távolkeleti nyelvek) támogatottak pluszban.2) karakterszám nem változik, a tábla mérete fog nőni (bájtban), de jelentősen csak akkor, ha ki is használod.
A SO-s probléma pedig ez volt:Mistery solved! There was a bad installation/upgrade/config with mysql and utf8mb4 was not properly installed.
...
Sorry for the delay, I was enjoying my holidaysMySQL (in my case MariaDB) was lacking the neccesary files so the encoding didn't exist. The files need to be compiled (I think recompiling with necessary flags) or reinstall a recent version. This happened on an old cent os 5 server, so in more recent versions this shouldn't happen, in fact I installed cent os 6.7 and utf8mb4 was detected without problems.
3) ez jó, de ha _as keresést akarsz, akkor kénytelen leszel mégiscsak a _bin-t használni, ha az általad használt verzió még nem támogatja az _as_ci-t, és a _bin meg ugye nem _ci. Szóval azt kell eldöntened melyik fáj kevésbé.
Új hozzászólás Aktív témák
Hirdetés
- Steam, GOG, Epic Store, Humble Store, Xbox PC Game Pass, Origin Access, uPlay+, Apple Arcade felhasználók barátságos izgulós topikja
- OpenMediaVault
- Telekom otthoni szolgáltatások (TV, internet, telefon)
- Parkside szerszám kibeszélő
- Gaming notebook topik
- BGA-zók, ReWork-ösök szakmai topic-ja
- Konteó topic
- Könyvajánló
- Sorozatok
- Vélemény: nem úgy tűnik, de Lip-Bu Tan most menti meg az Intelt
- További aktív témák...
- Dell Latitude 7410 Strapabíró Ütésálló Profi Ultrabook Laptop 14" -80% i7-10610U 16/512 FHD IPS MATT
- Eladó Lian Li O11D MINI-X gépház
- Lenovo ThinkPad P17 Tervező Vágó Laptop -50% 17,3" i7-10750H 32/512 QUADRO T1000 4GB
- FSP DAGGER PRO ATX3.0(PCIe5.0) 850W Sfx tápegység
- Eladó PNY GeForce RTX 4070 Ti SUPER 16GB OC XLR8
- Apple iPhone 13 128GB, Kártyafüggetlen, 1 Év Garanciával
- Telefon felvásárlás!! Xiaomi Redmi Note 13, Xiaomi Redmi Note 13 Pro, Xiaomi Redmi Note 13 Pro+
- ÁRGARANCIA! Épített KomPhone i5 14400F 32/64GB RAM RTX 5060Ti 8GB GAMER PC termékbeszámítással
- BESZÁMÍTÁS! MSI B550 7 5800X 16GB DDR4 512GB SSD RTX 3070 8GB Rampage SHIVA Enermax 750W
- Epson Expression 12000 XL Nagyformátumú A3 szkenner
Állásajánlatok
Cég: CAMERA-PRO Hungary Kft
Város: Budapest
Cég: Promenade Publishing House Kft.
Város: Budapest