Hirdetés
- Yettel topik
- Google Pixel topik
- Az iPhone 17 gáncsolta el a Galaxy S26 Prót?
- Okosóra és okoskiegészítő topik
- Samsung Galaxy A54 - türelemjáték
- „Új mérce az Android világában” – Kezünkben a Vivo X300 és X300 Pro
- iPhone topik
- Külföldi prepaid SIM-ek itthon
- Hivatalos a OnePlus 13 startdátuma
- Ezek a OnePlus 12 és 12R európai árai
Új hozzászólás Aktív témák
-
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. -
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... -
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
} -
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
} -
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
} -
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); -
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)); -
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 -
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;
?> -
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?
-
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. -
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 -
válasz
hiperFizikus
#21243
üzenetére
Hosszabban: igen, félreértetted

-
válasz
hiperFizikus
#21241
üzenetére
Röviden: igen
-
válasz
hiperFizikus
#21222
üzenetére
A szerver is használhatja a keresőt, csak kell hozzá API hozzáférés
-
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] -
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.
-
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> -
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); -
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); -
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 -
-
-
ÁÁÁ, 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 -
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 -
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). -
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); -
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.
-
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. -
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 -
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 -
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.
-
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...
-
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 -
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";
?> -
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, aeis helyes
-
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"; -
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)... -
-
-
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.
-
-
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 holidays
MySQL (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
- BESZÁMÍTÁS! MSI B450 R5 5600X 32GB DDR4 512GB SSD RTX 3080 10GB RAMPAGE Shiva Cooler Master 750W
- BESZÁMÍTÁS! MSI B450 R5 5600X 32GB DDR4 512GB SSD RTX 3080 10GB Zalman Z1 Plus Cooler Master 750W
- Huawei P30 Lite / 4/128GB / Kártyafüggetlen / 12Hó Garancia
- Macbook Air 13" M1 A2337 (2022.07.04.) 81 ciklusos 98% akku
- Yamaha FG700MS Akusztikus Gitár
- ÁRGARANCIA!Épített KomPhone i5 10400F 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Bomba ár! HP EliteBook 830 G8 - i7-1185G7 I 16GB I 512SSD I HDMI I 13,3" FHD I Cam I W11 I Gari!
- Bomba ár! Lenovo ThinkPad L580 - i5-8350U I 8GB I 256GB SSD I 15,6" FHD I Cam I W11 I Garancia!
- Azonnali készpénzes AMD CPU AMD VGA számítógép felvásárlás személyesen / postával korrekt áron
- HIBÁTLAN iPhone 13 mini 256GB Pink -1 ÉV GARANCIA - Kártyafüggetlen, MS3440, 90% Akkumulátor
Állásajánlatok
Cég: Laptopműhely Bt.
Város: Budapest
Cég: PCMENTOR SZERVIZ KFT.
Város: Budapest



MySQL (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.

