- Honor 200 - kétszázért pont jó lenne
- Honor 200 Pro - mobilportré
- Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- Yettel topik
- Huawei Watch GT 5 Pro - egészség + stílus
- Samsung Galaxy S21 és S21+ - húszra akartak lapot húzni
- iPhone topik
- Apple Watch
- Mi nincs, grafén akku van: itt a Xiaomi 11T és 11T Pro
- Samsung Galaxy S24 Ultra - ha működik, ne változtass!
Új hozzászólás Aktív témák
-
nevemfel
senior tag
-
-
nevemfel
senior tag
válasz
lanszelot #21434 üzenetére
46 sor - ezt nem tudom miért.
Mert ha a json_decode-nak nem adsz második paraméterként true-t, akkor a JSON objektumot a php-ban stdClass objektumként kapod meg, míg a második esetben asszociatív tömbként.
<?php
function mivanbenne($variable) {
echo '<pre>';
echo htmlspecialchars(var_export($variable, true));
echo '</pre>';
}
$data = '
{
"google": {
"kep": "google.jpg",
"link": "https:\/\/www.google.co.uk\/"
},
"youtube": {
"kep": "youtube.jpg",
"link": "https:\/\/www.youtube.com\/"
}
}';
$data_array = json_decode($data);
mivanbenne($data_array);
/*
(object) array(
'google' =>
(object) array(
'kep' => 'google.jpg',
'link' => 'https://www.google.co.uk/',
),
'youtube' =>
(object) array(
'kep' => 'youtube.jpg',
'link' => 'https://www.youtube.com/',
),
)
*/
$data_array = json_decode($data, true);
mivanbenne($data_array);
/*
array (
'google' =>
array (
'kep' => 'google.jpg',
'link' => 'https://www.google.co.uk/',
),
'youtube' =>
array (
'kep' => 'youtube.jpg',
'link' => 'https://www.youtube.com/',
),
)
*/Ha csak ki akarod írni a tartalmat, akkor nincs nagy különbség,
$row->kep
helyett$row["kep"]
-ben kapod az adatot, de ha hozzá akarsz nyúlni, pl. hozzáfűzni új elemet, akkor objektummal macerásabb, nehezen olvashatóbb:$data_array = json_decode($data);
$data_array->{'gmail'} = (object)[
"kep" => "gmail.jpg",
"link" => "https://gmail.com/"
];Asszociatív tömbnél egyszerűbb az egész:
$data_array = json_decode($data, true);
$data_array['gmail'] = [
"kep" => "gmail.jpg",
"link" => "https://gmail.com/"
]; -
nevemfel
senior tag
válasz
liksoft #21378 üzenetére
Arra emlékszem, hogy a 32 bites PHP-nak voltak mindenféle memória korlátai, de már olyan régen nem használtam 32 bitest, hogy nem emlékszem a részletekre.
Először azért ellenőrizd, hogy tényleg 32 bites PHP-ról van-e szó esetedben, vagy sem. A phpinfo kiír részletesen mindent, és az első sorban ha x86 van AMD64 vagy x86_64 helyett, akkor az 32 bites platform.
-
nevemfel
senior tag
Példának okáért, ha felrakok egy alap wordpresst, és semmit nem változtatok, akkor alapból a "twenty-twenty-three" beépített sablont használja, az pedig a
wp-includes/block-template.php:250
sorban található
_block_template_viewport_meta_tag()
függvényt használja a meta viewport tag beállítására.
-
nevemfel
senior tag
Hali, esetleg kérdezd meg a Wordpress topikban a szakikat.
Én is kapásból a header.php módosítását ajánlottam volna. Talán valami cache plugin bekavarhat, azért nem látszik a módosítás, de az is lehet, hogy ha pl. felraktál valami más Wordpress sablont, akkor nem az a header.php van használatban, amibe belenyúltál.
-
nevemfel
senior tag
válasz
magortaltos #21336 üzenetére
Nem tudom, Windowst használok.
-
nevemfel
senior tag
válasz
magortaltos #21333 üzenetére
mondjuk már megszoktam, hogy a php-ban minimális a hiba informávció és nulla a debug
Nálam mindent loggol a PHP az error logba, és van xdebug is debuggoláshoz.
-
nevemfel
senior tag
válasz
magortaltos #21330 üzenetére
<?php
$t = [];
$t[0][0]='Józsi';
$t[0][1]='2';
$t[1][0]='Sári';
$t[1][1]='5';
$t[2][0]='Kata';
$t[2][1]='1';
$t[3][0]='Laca';
$t[3][1]='3';
echo '<pre>';
print_r($t);
echo '</pre>';
file_put_contents("alma.aaa", serialize($t));
$t2 = unserialize(file_get_contents("alma.aaa"));
echo '<pre>';
print_r($t2);
echo '</pre>'; -
nevemfel
senior tag
válasz
hellsing71 #21326 üzenetére
Ahogyan azt írtam, ez nem aposztróf ( ' ), hanem az ún. backtick karakter ( ` ).
-
nevemfel
senior tag
Azért kérdeztem ezt a select count(*) from ( bla-bla) as x -as megoldást.
Én is a subselectes megoldásra gondoltam, hogy teljesen jó.
Kár, hogy kivették a sql_calc..-t. Egy query-vel megvolt minden.
Nem láttam, hoy túl sok helyen alkalmazták volna. Talán amiatt, mert mysql specifikus volt. -
nevemfel
senior tag
válasz
hellsing71 #21315 üzenetére
WHERE
'shop_id'='ABC123'Ez nekem hibásnak tűnik (a mező neve aposztrófok között van?). Csoda, hogy eddig működött.
-
nevemfel
senior tag
válasz
Panhard #21276 üzenetére
A mysql időzóna alapbeállítása UTC, és alapból a PHP-é is, viszont a Xampp php.ini-ben a timezone át van állítva Europe/Berlin-re.
Próbáld ki ezt:
$timezone = 'UTC';
$dateTimeString1 = "2022-10-30 02:04:23" . ' ' . $timezone;
$dateTimeString2 = "2022-10-30 01:59:23" . ' ' . $timezone;
echo strtotime($dateTimeString1) - strtotime($dateTimeString2);
-
nevemfel
senior tag
-
nevemfel
senior tag
Egyáltalán nem értem (még?)a működését, és a próbálkozásaim sorra kudarcba fulladtak (a MariaDB szintaktikai hibára hivatkozva eldobta).
Wordpresshez nem igazán értek, de PHP, SQL, MariaDB fronton tudok segíteni. Ha beírod a queryt, megpróbálhatom kihámozni, hogy mi baja lehet.
-
nevemfel
senior tag
Bocs, most nézem, hogy elírtam. Nem * és _, hanem % és _.
Egyébként itt azt írják, hogy LIKE condition esetén a WP automatikusan a value elé és mögé teszi a % wildcardot. Ha ez nem jó (elég nagy hülyeségnek tűnik, hogy a WP magától odateszi, pont amiatt, hogy mi van akkor, ha csak az elején vagy a végén van rá szükség), akkor filter functionnel vagy egyedi query-vel kell megoldani a lekérdezést:
-
nevemfel
senior tag
Nem tudom, hogy tud-e egyáltalán a wp_meta_query regexpeket használni, szerintem nem. Viszont a 'compare' helyén használhatsz 'LIKE' ot is, és akkor feltételezem, tudod használni az SQL wildcard karaktereket, * és _;
-
nevemfel
senior tag
Csináltam én is már hasonló próbafeladatot, hasonló feltételekkel. Én valami ilyesmit csináltam, szétválasztva a view-t és a html kódot:
index.php
<?php
require_once('App.php');
$app = new App();
$app->run();App.php
<?php
class App {
public function run() {
$viewParams = [
'list' => [
'egy',
'ketto',
'harom'
]
];
$this->display($viewParams);
}
public function display($viewParams) {
extract($viewParams);
require('index.tpl.php');
}
}index.tpl.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="shortcut icon" href="#">
<title>Document</title>
</head>
<body>
<ul>
<?php foreach($list as $item): ?>
<li><?=htmlspecialchars($item) ?></li>
<?php endforeach ?>
</ul>
</body>
</html> -
nevemfel
senior tag
MVC-nél a Viewnál szokás classba tenni a renderelni kivánt HTML-t? (Semmilyen frameworköt nem használok.)
Nem szokás, mindenhol templatekezelőt (Smarty, Twig) használnak. Leszámítva a kőegyszerű projekteket, nem ajánlatos a html-t php kódba belekeverni, csak ha nincs más megoldás.
Ezek a templatekezelők nem lassítanak a program futásán. Van saját gyorsítótárjuk, ahol a templatekből gyártott php fájlokat tárolják, futásidőben ezeket a php fájlokat használják.
-
nevemfel
senior tag
Az alap Laravel 47MB-ot, a Lumen 36MB-ot foglal el a lemezen, egy symfony/skeleton 5.x mindössze 9,6MB. Nyilván ha kell bele ez meg az, templatekezelő, ORM, akkor azt hozzá kell adni, és akkor nagyobb lesz a mérete.
A Lumen oldalán is ezt írják:
Note: In the years since releasing Lumen, PHP has made a variety of wonderful performance improvements. For this reason, along with the availability of Laravel Octane, we no longer recommend that you begin new projects with Lumen. Instead, we recommend always beginning new projects with Laravel.
Szóval szerintem nem érdemes a Lumennel, vagy más micro frameworkkel szórakozni, a Laravel vagy a Symfony már egész jó. Nem monstrum egyik sem, mindkettő rugalmas, van hozzá egy rakat komponens, és rengeteg doksi a neten.
-
nevemfel
senior tag
-
nevemfel
senior tag
válasz
sztanozs #21108 üzenetére
password_hash + password_verify. Nem kell se salt, se MD5, se SHA, elintézi belül.
-
nevemfel
senior tag
válasz
sztanozs #21105 üzenetére
Jelenleg ott tartunk, hogy prepared statement sincs a kódban, úgyhogy talán nem az a legnagyobb probléma, hogy nem elég erős a hash függvény. Ha nem plaintextben lesznek eltárolva a jelszavak, az már jó irány.
Egyébként én inkább a php password hash függvényeit ajánlanám. Nagyon egyszerű használni őket, és elég biztonságosak. Lényegében a pasword_hash és a password_verify függvényt kell használni, és nagyjából ennyi.
-
nevemfel
senior tag
válasz
hellsing71 #21074 üzenetére
Valami konkrét példa nem ártana, mert ez
$var = "valami";
nem produkál semmiféle notice-t vagy warningot egyik php verzió alatt sem. -
nevemfel
senior tag
Ha egy változót simán csak szögletes zárójelbe teszel
$likes = [$_POST['likesinput']]
, akkor a PHP egy egyelemű tömböt csinál a stringből.
Ha a string tartalmát fel akarod dolgozni, pl. hogy a megadott stringet bontsa szét tömbelemekre a vesszők mentén, akkor az explode-ot kell használni.$likesArray = explode(",", $_POST['likesinput']);
-
nevemfel
senior tag
Illetve a konkrét példában a negyedik sort is át kell írni, mert az eredeti kódban, a negyedik sorban a
'likes'=>[$likes]
egy tömböt kreál a $likes stringből, és így végülis tömb lesz belőle, de csak egyetlen elemű. PHP 5.4-től az array() helyett használhatsz []-t, mindkettő tömb létrehozására való.$name = 'Philip';
$age = 18;
$likes = ["Sport cars", "Football", "Tennis", "Women"];
$jsonfile[] = [
'name'=>$name,
'age'=>$age,
'likes'=>$likes
];
-
nevemfel
senior tag
Mindenképp az első opció, a következők miatt:
Kiíratásnál kontextusfüggő, hogy hogyan kell escapelni az adatot. Másképp kell escapelni, ha a string a html törzsbe kerül, másképp kell escapelni, ha egy html tag attribútum értéke kapja meg a stringet, másképp kell escapelni, ha css blokkba teszed be, és másképp kell escapelni, ha egy javascript változó kapja meg értéknek. Illetve másképp kell escapelni, ha logfileba, CSV exportfileba kerül az adat. És az általad leírt probléma miatt is (adatbázis indexelés, satöbbi.)
-
nevemfel
senior tag
Most akkor hogy tud elküldeni egy formot,
Bárki bárhonnan küldhet egy requestet a form feldolgozó oldalára. Megformáz egy ilyet, belerakja a paramétereket, és elküldi:
POST /post.php HTTP/1.1
Host: example.com
subject=subject&content=content
Ezek a védelmek nem arra szolgálnak, hogy ne lehessen post requestet küldeni, hanem hogy a requestet idejekorán kukázni lehessen, mert nincs captcha, nincs token, invalid a tokenérték, stb.
-
nevemfel
senior tag
mint írtam, paraméteres query előtt is volt élet
Persze, hogy volt élet, tele óriási security hole-okkal. Nem véletlen az, hogy az sql injection a toplista élén van a biztonsági hibák listáján. Másrészt a prepared stmt max. a PHP-ban új. Mármint amennyiben a PHP 5.0 - 5.1 újnak számít.
-
nevemfel
senior tag
Egyébként _minden_ query paramétert parametrizálni kell, vagy ha nincs más lehetőség (pl. az említett példádban a táblanévnél nem tudom, működik-e a dolog), akkor az adott driver escape/quote metódusával kell escapelni a változó értékét. Saját konfig változó is tartalmazhat olyan értéket, amit escapelni kell (', ", \, * satöbbi).
-
nevemfel
senior tag
Használj paraméterezhető queryket, kész passz. A query stringbe csak placeholderek kerülnek, az értékeket külön adod át, akár sqlsrv_query-t használsz, akár sqlsrv_prepare-t és sqlsrv_execute-ot, akár PDO::prepare + (opcionális bind_) + execute-ot, vagy a mysqli hasonló metódusait.
Mindenféle mágikus escape-t használni amiatt, hogy az sql injectiont elkerüld: fundamentális hiba.
-
nevemfel
senior tag
Viszont ha már eleve
"
-tal kerül be, akkor"
-ot is ír ki a böngésző.Hát ne kerüljön bele eleve "-tal. htmlescapeelni akkor kell, amikor html-be ágyazod bele a tartalmat. Ha például logfile akarnád kiírni, már akkor sem így kell escapelni. Ha egy javasscipt változóba kerül bele a tartalom, vagy CSS-be, ott is másképp kell escapelni a tartalmat.
-
nevemfel
senior tag
Nem tudom, mi ez a desktopwebszerver, de a honlapjuk nem valami bizalomgerjesztő. Sehol nem találom, hogy mégis milyen komponensekből áll, azt meg pláne nem, hogy melyik verzió. Én a helyedben XAMPP-ot használnék.
Ami a tartalomlehúzás problémát illeti, talán jobb lenne, ha curlt használnál, nem a php url wrapperjeit. Jobban paraméterezhető, és talán loggolni is egyszerűbb, ha elemezni kell a hálózati forgalmat.
-
nevemfel
senior tag
Több oka is lehet. Nem írtad, milyen webszervert használsz, az is elcseszheti. Ezen kívül a PHP 7.3.1 elég régi, a 7.3 vonalon a legfrissebb verzió a 7.3.27 . Amint láthatod, a 7.3.1 óta igen hosszú a javított bugok listája.
Aztán az sem mindegy, hogy állítod be az utf8 charsetet. A dokumentumba belerakott meta charset tagot ugyanis a webszerver vagy a php által kiküldött content-type ....; charset=.... felülbírálja.
-
nevemfel
senior tag
válasz
Bzozoo #20431 üzenetére
Tokennek nem sok értelmét látom. Ha valaki lehallgatja a kliens-szerver kommunikációt, és így megszerzi a session azonosítót, akkor a tokent is ugyanúgy le tudja menteni, és fel tudja használni. Erre a fajta man in middle hekkelésre a hálózati végpontok közti kommunikáció titkosítása a megoldás, jelen esetben a https protokoll.
-
nevemfel
senior tag
A laravel trükkjét viszont nem ismerem. Nem értem az utalást a public/ mappára. Valami gyakorlati rávilágítás jól jönne.
Egyszerűbb a document_root-ot egy public almappára állítani, a publikus fájlokat pedig abba rakni, mint magára a teljes projekt könyvtárszerkezetére megadni, hogy aztán egyenként kelljen beállítani htaccessel a hozzáférési jogokat bizonyos fájlokhoz és folderekhez.
-
nevemfel
senior tag
válasz
don_peter #20265 üzenetére
Itt valami szerveroldali query optimalizáció kavarhat be. Az egyetlen különbség, amit látok, az annyi, hogy a második lekérdezésnél, a belső query-ben szerepel egy GROUP BY fu.id, aminek önmagában nem látom értelmét, hiszen a fu.id egyedi azonosító minden üzenetre (már ha jó a sejtésem a táblaszerkezetet illetően).
A külső lekérdezésnél a GROUP BY id-nál nincs t. előtag, ami, talán, jóég tudja persze, de akár többféleképpen is értelmezhető a mysql által.
-
nevemfel
senior tag
válasz
radi8tor #20182 üzenetére
Nekem elemi szinten mondd el mit csináljak.
Az eredeti kódban ennek a helyére:
$banned_cats = $this->config->get('full_product_path_categories');
Ezt tedd be:$banned_cats = $this->config->has('full_product_path_categories')
? $this->config->get('full_product_path_categories')
: []; -
nevemfel
senior tag
válasz
radi8tor #20178 üzenetére
Ha ez nem saját program, akkor lehetőség szerint ne nyúlj bele a kódba, mert ha esetleg a jövőben frissítenétek ezt a plugint, akkor a módosítások felülíródnak. Inkább állítsd be valahogy ezt a config paramétert, hogy egy üres tömb legyen a tartalma.
Nem ismerem sem az Opencartot, sem ezt a plugint, úgyhogy nem tudom, hogyan lehet ennek a pluginnek paramétereit beállítani, szóval konkrétumokkal nem tudok szolgálni, mindenesetre azt kell elérni, hogy a
full_product_path_categories
létezzen, de üres tömb legyen. -
nevemfel
senior tag
válasz
sztanozs #20157 üzenetére
de ha mindig array, akkor figyelmen kívül hagyhatod a warningot.
Nem lehet mindig array. Ha az lenne, nem lennének a warningok.
Feltételezem, hogy a változók nem is léteznek, ha amúgy nem lenne tömbelemük, úgyhogy így látatlanban, hogy nem tudjuk, milyen típusú változók, én isset vizsgálattal fejelném meg a feltételvizsgálatokat.
Új hozzászólás Aktív témák
Hirdetés
- Tarr Kft. kábeltv, internet, telefon
- Wise (ex-TransferWise)
- Honor 200 - kétszázért pont jó lenne
- Revolut
- Hálózati / IP kamera
- Kamionok, fuvarozás, logisztika topik
- Építő/felújító topik
- Honor 200 Pro - mobilportré
- E-roller topik
- Youtube Android alkalmazás alternatívák reklámszűréssel / videók letöltése
- További aktív témák...
- Eladó konfig! Ryzen 7 7800X3D 2TB SSD 64GB DDR5 RX9070XT 16GB!
- Új, makulátlan állapotú Samsung Galaxy Buds FE, fehér, fél év garancia
- Új, makulátlan állapotú Samsung Galaxy Watch7 44mm ezüst, 2 év garancia
- Új, makulátlan állapotú Samsung Z Fold 6 256GB Tengerészkék, független, 2 év garancia
- Használt TP-Link Deco M4 - AC1200 Router (Mesh-ként is használható)
- Tablet felvásárlás!! Samsung Galaxy Tab A8, Samsung Galaxy Tab A9, Samsung Galaxy Tab S6 Lite
- ÁRGARANCIA! Épített KomPhone Ryzen 5 4500 16/32/64GB RAM RTX 3060 12GB GAMER PC termékbeszámítással
- Bomba ár! Dell Latitude E7240 - i7-4GEN I 16GB I 256SSD I 12,5" HD I HDMI I Cam I W10 I Garancia!
- Telefon felvásárlás!! iPhone 13 Mini/iPhone 13/iPhone 13 Pro/iPhone 13 Pro Max
- DELL Thunderbolt Dock - WD19TB modul 02HV8N (ELKELT)
Állásajánlatok
Cég: Promenade Publishing House Kft.
Város: Budapest
Cég: CAMERA-PRO Hungary Kft
Város: Budapest