Hirdetés

2024. április 19., péntek

Gyorskeresés

Útvonal

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

Hozzászólások

(#19001) trisztan94


trisztan94
őstag

Sziasztok

Két szöveget kell összehasonlítanom. Az első szöveg a második egy részlete (általában), de ahhoz, hogy tovább lépjen a progi, legalább 80%-os egyezésnek (vagy tolerancia itt a megfelelő szó?) kell lennie. Az is lehet, hogy az első szövegben el van írva valami.

Pl:

$szoveg1 = "hello darkness my old friend";
$szoveg1_elirva = "helo drakness my old friend";
$szoveg2 = "Hello darkness, my old friend   I've come to talk with you again   Because a vision softly creeping   Left its seeds while I was sleeping   And the vision that was planted in my brain
Still remains";

Ha jól gondolom, nekem valami olyasmi kéne, mint a LIKE operátor SQL-ben - valamilyen szinten legyen köze $szoveg1-nek $szoveg2-höz, de nem kell 100%-osnak lenni.

Nagyon bután tehát:

if ($szoveg1 LIKE(80) $szoveg2) {
return true;
}

Hogyan kezdjek ennek neki, minek nézzek utána?

[ Szerkesztve ]

https://heureka-kreativ.hu

(#19002) sztanozs válasza trisztan94 (#19001) üzenetére


sztanozs
veterán

Ezt találtam neked - nem egy mai cikk, de indulásnak talán jó lesz: [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...

(#19003) DNReNTi válasza sztanozs (#19002) üzenetére


DNReNTi
őstag

Ez zsir, el is bukmarkozom. Thx!

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

(#19004) SUPREME7 válasza trisztan94 (#19001) üzenetére


SUPREME7
őstag

Ez egy nagyon jó kis összehasonlító cucc, kicsit bele kell piszkálni, hogy tudja ami neked kell, de kiindulásnak jó.
[http://www.raymondhill.net/finediff/viewdiff-ex.php]

(#19005) trisztan94 válasza sztanozs (#19002) üzenetére


trisztan94
őstag

+ (#19004) supreme7

Köszönöm a tippeket, mindkettő jó kiindulási alapnak néz ki, megnézem őket! :) :R

https://heureka-kreativ.hu

(#19006) supercow válasza trisztan94 (#19001) üzenetére


supercow
őstag

Esetleg a beépített levenshtein() függvény?
http://php.net/manual/en/function.levenshtein.php

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

(#19007) bucihost


bucihost
senior tag

Sziasztok.

Van egy chat, amiben van smiley feltöltési funkció ami nem "eszik meg" minden smileyt.

A log szerint a 40 es sorban van a hiba:
$is_image = getimagesize($_FILES['smiliefile']['tmp_name']);

PHP Warning: getimagesize(): Filename cannot be empty

holott az feltöltő form szerint, a betallózott kép neve ott van (xyz.gif)

Mi lehet a gond?

itt a teljes insert kód

<?php
class AdminInsertSmilies extends DbConectionMaker
{
public function __construct (){

// call parent Constructor from class DbConectionMaker
parent::__construct();

session_start();

header('Cache-Control: no-store, no-cache, must-revalidate, pre-check=0, post-check=0, max-age=0');
// Sets charset and content-type for index.php
header('content-type: text/html; charset=utf-8');

// create new LangXml Object
$langObj = new LangXml();
$lang=$langObj->getLang()->admin[0]->admin_smilies[0];


if ($_SESSION['etchat_'.$this->_prefix.'user_priv']=="admin"){

$uploaddir = './smilies/';
$checkfile = "./smilies/".$_FILES['smiliefile']['name'];

if(file_exists($checkfile)){
$nowname = time()."_".$_FILES['smiliefile']['name'];
$notes ="".$lang->file_exists[0]->tagData." ".time().".".$_FILES['smiliefile']['name']."<br>";
}else{
$nowname = $_FILES['smiliefile']['name'];
$notes ="";
}

// Test if the sign exists in the DB
$res = $this->dbObj->sqlGet("select etchat_smileys_id FROM {$this->_prefix}etchat_smileys where etchat_smileys_sign = '".$_POST['sign']."'");
if (is_array($res)){
$print_result.= $lang->sign_exists[0]->tagData."<br>";
$print_result.= "<a href='./?AdminSmiliesIndex'>".$lang->back[0]->tagData."</a>";
}else{

$is_image = getimagesize($_FILES['smiliefile']['tmp_name']);
if (is_array($is_image)) {
move_uploaded_file($_FILES['smiliefile']['tmp_name'], $uploaddir . $nowname);
$this->dbObj->sqlSet("INSERT INTO {$this->_prefix}etchat_smileys(etchat_smileys_sign,etchat_smileys_img) VALUES ('".$_POST['sign']."', 'smilies/".$nowname."')");
$print_result.= $lang->isupload[0]->tagData."<br>";
$print_result.= $notes;
$print_result.= "<br><a href='./?AdminCreateNewSmilies'>".$lang->smilie[0]->tagData."</a>";
$print_result.= "<br /><a href='./?AdminSmiliesIndex'>".$lang->back[0]->tagData."</a>";
} else {
@unlink($_FILES['smiliefile']['tmp_name']);
$print_result.= $lang->noupload[0]->tagData;
//print_r($_FILES);
$print_result.= "<br /><br /><a href='./?AdminSmiliesIndex'>".$lang->back[0]->tagData."</a>";
}
}
// Include Template
include_once("styles/admin_tpl/insertSmiliesMessage.tpl.html");
}else{
echo $lang->error[0]->tagData;
return false;
}
}
}

(#19008) Lacc válasza bucihost (#19007) üzenetére


Lacc
aktív tag

Szia.

Szerintem a előbb dump-old ki a $_FILES értékét a 40. sor előtt. Nekem úgy tűnik, mintha mégsem sikerült volna a fájl feltöltése.

A $_FILES['smiliefile']['tmp_name'] azt csinálja, hogy a szerveren a temp mappából próbálja a fájlt elérni, olyan mintha nem lenne ott a temp mappában.

(#19009) bucihost válasza Lacc (#19008) üzenetére


bucihost
senior tag

Megnézem majd köszi. Csak azt furcsálom, hogy pl:

ezt feltölti: 1234.gif , 100*120 , 10,2 KB
ezt nem: 2345.gif > 173*84 , 54,4 KB

gondoltam rá, talán a php limitál, de nem:

upload_max_filesize = 10M
post_max_size = 10M

és .htaccess ben sincs file méret limit. :F

(#19010) Lacc válasza bucihost (#19009) üzenetére


Lacc
aktív tag

Gif az neccess, mindig szívás van vele. Bár személyes tapasztalatom nincs vele, de sok helyen olvastam.

Esetleg van valahol másik php.ini fájl? a phpinfo() ha jól tudom kiírja. Azért a weboldaladba nyomj egy phpinfo()-t ha úgy érzed, hogy valahol valamiben kétséged van.

(#19011) bucihost válasza Lacc (#19010) üzenetére


bucihost
senior tag

megvan a hiba....
includezik össze vissza, és az egyik fileban megtaláltam ezt a sort:
echo "<input type='hidden' name='MAX_FILE_SIZE' value='30000'>"; :W :W

Gondoltam hogy valahol limitál, na de....
Köszi a helpet :R

[ Szerkesztve ]

(#19012) Lacc válasza bucihost (#19011) üzenetére


Lacc
aktív tag

Ez meg mi a ? :D Azért ez elég durva, hogy valaki ilyen input-ba tolja fel.

Sejtettem, hogy valahol máshol van még korlátozás, a leggyakoribb ilyen a hiba, hogy van még egy php.ini fájl valahol, ami ezt befolyásolja (egy központ php.ini és minden webalkalamzás könyvtárában még egy, ami specifikusan az adott weboldalhoz köthető), na de egy html-es inputra, sosem gondoltam van.

Grat, hogy megtaláltad! :C

(#19013) bucihost válasza Lacc (#19012) üzenetére


bucihost
senior tag

hát én se... német fejlesztésű chat. tudnak valamit..... :DDD

(#19014) DNReNTi válasza bucihost (#19011) üzenetére


DNReNTi
őstag

Epic. Gondolom persze szerver oldalon nincs validalva, szoval ha parasztba atirod kliens oldalon, akkor mehet fel az 50 gigas BD lemez is akar. :DDD

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

(#19015) Lacc válasza DNReNTi (#19014) üzenetére


Lacc
aktív tag

A php.ini úgy is megfogja.

(#19016) DNReNTi válasza Lacc (#19015) üzenetére


DNReNTi
őstag

De gondolom eppen azert ment a form adatokkal egyutt ez az ertek, hogy az felulvagja mondjuk egy ini_set(); tehat tokmindegy mi az alapertek. Viszont az lehet, hogy van olyan felso korlat amit mar nem lehet atlepni.

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

(#19017) Z$OLTI1988


Z$OLTI1988
csendes tag

Sziasztok!

Egy nagy segítségre lenne szükségem.

A vizsga weboldalamba szeretnék egy egyszerű rendelés menüpontot készíteni. Nem szeretnék egy komplett webshop motort ezért letölteni.

Csak annyi kellene,hogy adatbázisból betudná olvasni a termékeket,kosárba lehessen rakni,a vásárló meg tudja adni az adatait,illetve a rendelését eltudná küldeni egy adatbázisba.

Sajnos tudásom nem nagy a php-ban,ezért megköszönném,ha valaki tudna benne segíteni.

Köszönettel: Zsolt :R

Üdv.: Zsolt

(#19018) supercow válasza Z$OLTI1988 (#19017) üzenetére


supercow
őstag

bocs ha durvának hangzik de én biztosan nem fogok segíteni, elmondom miért: "csak annyi kellene..." és leírod egy majdnem komplett webshop funkcióit. Szerinted ki fog időt és energiát fektetni abba, hogy a te vizsgádra megcsinálja neked, ingyen? Máshogy megfogalmazva: te foglalkoznál valaha olyasmivel, amit idegenek kérnek és nincs semmi hasznod belőle, ráadásul az illetőnek ez vizsgafeladata lenne, vagyis tudnia kellene? Gondolom a vizsga után is majd másvalaki végzi el a munkát helyetted :(((

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

(#19019) Z$OLTI1988 válasza supercow (#19018) üzenetére


Z$OLTI1988
csendes tag

Nem azt kértem,hogy programozzon nekem valaki egy komplett motort,csak maximum egy linkre lett volna szükségem,ahol elérhető ilyesmi. Kb 4 félét szedtem le ,egyik sem működik. Egyébként nulláról szívesen megcsinálnám,csak az oktatóm olyan link,hogy vizsga előtt 3 héttel kezdett azzal foglalkozni,hogy dobjunk össze egy weboldal,amiben rengeteg php funkció van. Természetesen ezt úgy ,hogy a 4-5 órás oktatási idő alatt kb 1 fél órát tartózkodik a teremben. :F :F :DD :DD

Üdv.: Zsolt

(#19020) biker válasza Z$OLTI1988 (#19017) üzenetére


biker
nagyúr

"Nem szeretnék egy komplett webshop motort ezért letölteni.
Csak annyi kellene,hogy adatbázisból betudná olvasni a termékeket,kosárba lehessen rakni,a vásárló meg tudja adni az adatait,illetve a rendelését eltudná küldeni egy adatbázisba."

Szerinted mi a webshop? Ha nem az, hogy termékeket kosárba raksz, és megrendeled?

Egyébként meg ha a tanár 4-5 órából felet van az órán, akkor szólni kell a felettesének. De lehet hogy épp ti nem vagytok bent....

Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |

(#19021) fordfairlane válasza supercow (#19018) üzenetére


fordfairlane
veterán

Pedig most ilyen kéréseknek lesz szezonja. Január és június, jellemzően.

x gon' give it to ya

(#19022) DNReNTi válasza fordfairlane (#19021) üzenetére


DNReNTi
őstag

Lehet le kellene csapni ezekre. Konnyupenz. ;]

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

(#19023) Z$OLTI1988 válasza biker (#19020) üzenetére


Z$OLTI1988
csendes tag

Akkor én kérek elnézést ,hogy mertem írni ide,mert úgy látom,hogy ez a "megmondó" emberek topicja.

Mindegy,felejtsétek el amit írtam... :DD :DD :DD

További szép estét!

[ Szerkesztve ]

Üdv.: Zsolt

(#19024) trisztan94


trisztan94
őstag

Sziasztok,

Egy elég komplex Laravel alapú WebApp-ot készítünk. Szükségünk lenne egy sok-sok tapasztalattal rendelkező Laravel fejlesztőre, aki átnézné Nekünk az adatbázis szerkezetet amit megterveztünk hozzá, hátha valamit elfelejtettünk/rosszul csináltunk, esetleg a keretrendszer konvenciói másképp követelnek valamit stb.

Lényeg, hogy egy külsős áldását, javaslatait szeretnénk kérni rá.

7 táblás MySQL-ről lenne szó, de kb mind össze van kapcsolva valamivel foreign key segítségével.

Privibe dobjatok kérlek egy árat, ha érdekes lehet! :)

[ Szerkesztve ]

https://heureka-kreativ.hu

(#19025) biker válasza Z$OLTI1988 (#19023) üzenetére


biker
nagyúr

Szeretnék egy autót, de igazából nem kell autó, csak legyen négy kereke, legyen kormánya, meg ülés amibe be lehet ülni. Ja meg motor ami hajtja.

Bocs, nem mi vagyunk a hülyék, hidd el. Nem fogsz hiányozni a kutyának se, majd gyere vissza ha legalább azt érted, amit leírsz. Utána fogunk segíteni a programozásban.

Elektromos autó töltő berendezések | Mesterséges növényvilágítás | Mai ajánlatunk: www.gerisoft.hu | www.e-autotoltokabel.hu | www.agrar-vilagitas.hu |

(#19026) Zedz válasza DNReNTi (#19022) üzenetére


Zedz
addikt

Mindjárt írok egy crawlert ami folyamatosan monitorozza a fórumokat ilyen melók után kutatva.. nyugdíjas évekre már most el kell kezdeni gyűjteni. :DDD

(#19027) adika4444


adika4444
addikt

Sziasztok!

Hogy tudnék titkosítani egy stringet majd azt utána visszafejteni?
$_GET tömbbel küldenék adatot, de örülnék ha az user csak krixkrax-ot látna amit nem olyan egyszerű pl. átírni egy kis adminszivatás kedvéért...
Köszi!

üdv, adika4444

(#19028) DNReNTi válasza adika4444 (#19027) üzenetére


DNReNTi
őstag

Egeszen biztos hogy nincs jobb modszer erre? :)

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

(#19029) Zedz válasza adika4444 (#19027) üzenetére


Zedz
addikt

Mi a végső cél?
Ezzel biztosítani tudod, hogy amit leküldtél és visszakaptál, abba nem nyúltak bele.

(#19030) Lacc válasza adika4444 (#19027) üzenetére


Lacc
aktív tag

Két megoldás van: $_POST-tal vagy alapból nem is küldöd le azt a stringet a Usernek. Vagy User által bevigt adatot akarsz titkosítani? Nekem így első blikkre úgy tűnik, hogy olyan adatról van szó aminek semmikép nem kellene a front-end layerre kimennie.

(#19031) adika4444


adika4444
addikt

Igazatok van ha leírom eleinte mit akarok akkor lehet van jobb megoldás is...
Tehát adott egy lista bejegyzésekkel. Szeretnék lehetőséget válaszadásra rájuk...
Jelenleg úgy csinálom, hogy MYSQL-ből lekérek 25 bejegyzést (utána lapozás van ha van több), lekérés után tömbbé alakítom aminek altömbjeivel dolgozok (mysqli_fetch_all)
Ezt a tömböt for ciklussal járom be, révén hogy a főtömb altömbjei számozva vannak, tehát nincs egyedi nevük csak számok. Azon belül már az értékek persze el vannak nevezve a MYSQL táblában használt nevekkel...
Na most úgy csinálom, hogy post-tal küldöm el hogy reply.php?replyto=5 tehát az az 5-ös az a szám amely bejegyzésre megy a válasz... Ha ezt átírja valaki az 5-öt 6-ra akkor a 6-os bejegyzésre fog menni a válasz.
Ezt akarom elkerülni, és ezért jutott eszembe a titkosítás.

üdv, adika4444

(#19032) DNReNTi válasza adika4444 (#19031) üzenetére


DNReNTi
őstag

Ezzel szerintem nincs igy semmi gond, nem olyan kritikus dolog, de ha teged zavar, kuldd el POST-tal (nem mintha az nem lenne "hekkelheto"). Sokkal fontosabb lenne azt vizsgalni mentes elott, hogy adott user-nek van e joga valaszolni adott hozzaszolasra.

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

(#19033) Zedz


Zedz
addikt

Szerintem DNReNTi kollégának lesz igaza, ez már inkább jogosultság kezelés, mint titkosítás. Ki kell találnod egy olyan rendszert, ami backend oldalon eldönti, hogy a usernek van-e joga az adott tevékenységhez vagy nincs. Aztán ő azt hekkelget kliens oldalon amit csak akar, backenden nem fogod átengedni.

Titkosítás az ugye inkább az, hogyha van a kliens és a szerver gép, akkor egy harmadik fél ne tudja csak úgy sniffelni az adatot, vagy akár beletúrni az adatokba.

(#19034) Lacc válasza adika4444 (#19031) üzenetére


Lacc
aktív tag

"post-tal küldöm el hogy reply.php?replyto=5" -> ez GET és nem POST :))

DNReNTi leírta, hogy jogosultság kezelés. Viszont a jogosultság kezelés nem ér sokat, ha a bejegyzés #5 és #6, na meg a többit is ugyanúgy lekérheti a felhasználó, és módosíthatja, az az joga van neki az összes bejegyzést módosítani, mert akkot tényleg tud hülyéskedni :D.

Ezt meg lehet előzni az XSS-hez hasonló technikákkal. A legegyszerűbb egy random Token készítése hash függvénnyel. Elmenteni Session-be, illetve, hogy melyik bejegyzéshez lett generálva (IP cím-et is lehet menteni, mint a Session kulcs) és azt egy hidden input mezőbe leküdeni a front-endbe. Amikor a User POST-tal, vagy GET-tel visszaküldi a szerver felé az adatot, akkor lecsekkolni, hogy az adott Token az adott Bejegyzéshez lett-e generálva? Ha igen, akkor elmented a User válaszát, ha nem, dobsz neki egy hibát, hogy ejnye-bejnye.
Ez egy aránylag gyors és jó megoldás, ha nincs jogosultság kezelésed.

Van, ennek valami speckó neve is, de nem jut eszembe.

(#19035) fordfairlane válasza Lacc (#19034) üzenetére


fordfairlane
veterán

Van, ennek valami speckó neve is, de nem jut eszembe.

CSRF + CSRF token

x gon' give it to ya

(#19036) Lacc válasza fordfairlane (#19035) üzenetére


Lacc
aktív tag

Ez az. Kösz :R

(#19037) Pulsar


Pulsar
veterán

Sziasztok,

Nem vagyok egy nagy php mágus, nagyon alap dolgokkal elboldogulok.
Jelen esetben van egy mysql adatbázisom, amiből ki szeretném olvasni az adatokat php-val. Vagyis ez a része működik is while($row = $result->fetch_assoc()) szépen kapom az a sorokat egymás után.
A gondom az, hogy az tblában közel 20.000 sor van, és nem kívánnék ennyi adatot kiírni.
Mi a metódusa egy pl 1000/lap-os kódnak?
Van erre valami egyszerű megoldás? Egyáltalán hogy induljak el ezzel? :)
Segítségeteket előre is köszi

(#19038) adika4444 válasza DNReNTi (#19032) üzenetére


adika4444
addikt

Azt nézem, de ha user tehát válaszolhat simán hsz-re akkor még nem védtem ki hogy átírja a címsort. De látom itt is hogy úgy van hogy a topic id és a mire id van megadva, talán ha két feltételnek kell egyeznie akkor nehezebben törik, aki meg törni akarja az úgy is megoldja...
(#19033) Zedz:
Olyan tervben van, az alapja is megvan hogy csak admin topikok és akkor ott a hsz-ket látni, válaszolni csak admin tudja. De amit fenntebb írtam az főleg a gondom, a jogosultságos rész az olyan hogy az adott trükkök ellen nem véd. De lehet cisnálom úgy mint itt van...
(#19034) Lacc:
Látszik hogy rohantam és úgy írtam meg:DDD
Meg fogom nézni amit írtál. Jogosultságkezelés alatt lehet nem teljesen ugyanarra gondolunk:D, de akkor futok a session-nal egy kört. Az igazándiból a baj, hogy nem tudom mennyire terhelné meg a webszerót ha pl. egy oldalra (ahol 25 hsz-t jelenítek meg (már ha van annyi)) minden hsz-hez csinálnék hash-t, és azt küldeném get-tel. A post nem játszik, erre rájöttem mert azt jelölőnégyzetezgetéshez használom, hogy több hsz-t is lehessen egyszerre (jelenleg csak) törölni...
És űrlapot űrlapba nem tudok rakni hidden mezőkkel, mert akkor elég bizonytalan. Pedig úgy lenne a legjobb, hogy lenne a nagy űrlap ahol be lehetne jelölgetni a kommenteket és minden kommenthez kisűrlap (for ciklus) ahol az id-t letárolom rejtve majd submit-tal elküldöm...

üdv, adika4444

(#19039) adika4444 válasza Pulsar (#19037) üzenetére


adika4444
addikt

Limit parancs a select-ben:) ha jól értem valami ilyesmi kellene neked... Például:
select * from `termekek` limit 25;
Ha a limitet x,25 formában adod meg akkor x-től a következő 25 bejegyzést fogja mutatni. Ha viszont (mint a példámban is) nem rakod ki a vesszőset akkor 0-tól indul. Ahonnan indul, azt is belefoglalva 25 sort mutat. Ezzel meg már tudsz dolgozni PHP-ban, például berakni egy tömbbe (mysqli_fetch_all()) majd azt egy for ciklussal bejárni...

üdv, adika4444

(#19040) Pulsar válasza adika4444 (#19039) üzenetére


Pulsar
veterán

ő, aha, lehet :D
Szóval az szeretném, hogy kiolvassa a (gondolom a sorok számát, de van auto increment ID sorom is), és mondjuk ha én szeretnék oldalanként 500 sort, akkor gondolom a kapott eredményt elosztva megtudom mennyi "oldalam" lesz. A választott oldal száma pedig megadja a tól -ig-et is. Vagy rosszul gondolom? :)

(#19041) Lacc válasza adika4444 (#19038) üzenetére


Lacc
aktív tag

Így értem. Igazából, ezt Ajaxxal is meglehet csinálni ha ügyes vagy :P
"mennyire terhelné meg a webszerót ha pl. egy oldalra (ahol 25 hsz-t jelenítek meg (már ha van annyi)) minden hsz-hez csinálnék hash-t, és azt küldeném get-tel." - csak akkor döglik bele, ha rosszul csinálod ;].
Alapból nem a titkosítás a cél, hanem egy egyszerű hash sztring generálása. Az MD5 elég gyors, de az egyik leggyorsabb CRC32 (de tényleg cask a hash generálás a cél)
Hát, nézd... 10.000-es Loopban a CRC32 metódus 0.03 másodperc alatt végez, szóval 25-ös loopban, ez jelentősen kisebb :P, az MD5-re meg 0.07-et látok kiírva természetesen itt is 10.000 loop.

"A post nem játszik, erre rájöttem mert azt jelölőnégyzetezgetéshez használom, hogy több hsz-t is lehessen egyszerre (jelenleg csak) törölni."
Hát szerintem jobb, lenne azt az egész felületet újratervezni. Ne haragudj az őszinteségemért, de ez így nagyon nem jó megoldás, és most nehéz is javítani rajta. Túl van tolva szerintem a kontrollok kezelése.

"Pedig úgy lenne a legjobb, hogy lenne a nagy űrlap ahol be lehetne jelölgetni a kommenteket és minden kommenthez kisűrlap (for ciklus) ahol az id-t letárolom rejtve majd submit-tal elküldöm."
De, lehet, lásd Symfony keretrendszer, beágyazott kollekciók. Egyébként meg ja, ezt kellene csinálnod, esetleg Ajaxxal.

Jól gondolom, hogy nem használsz PHP-s keretrendszert? :)
Én Symfony-val vagy Yii-vel elég egyszerűen megtudnám csinálni.

Én a te helyedben, a nagy űrlapos megoldást választanom, ahogy írtad. Hosszabb távon is jobban jársz, főleg ha később kell még hozzá nyúlni, módosítani valamit a felületen, vagy ezen a logikán.

[ Szerkesztve ]

(#19042) Lacc válasza Pulsar (#19040) üzenetére


Lacc
aktív tag

Igen, de 1 hónap PHP-zás után, lehet keretrendszert tanulni, megkönnyíti az életet, és közben lehet tovább mélyítni a PHP tudást.

Amit már a kolléga is mondott, ezt két SQL paranccsal lehet megoldani.
1. COUNT() metódus megszámolja az összes rekordot a táblában.
2. LIMIT és OFFSET használata, hogy mindig csak 30, 50 vagy amennyi sort akarsz, kérdezzen le egyszerre.

Ez a GRID táblázatos megjelenítők alapja is lapozással.

A COUNT() lehozza, hogy 20.027 sorod van, ezt osztod 500-al, plusz hozzáadsz egyet, ha a maradék nagyobb mint 0. Ezzel kitudod írni, hogy hány oldal lesz összesen a lista felületen.

Utána meg csak szimplán SELECT * FROM tábla LIMIT 500 OFFSET 0; Ha a user lapoz, Get-tel kiszeded, hogy melyik lapra lapozz, ha csinálsz számozást 1, 2, 3, 4, 5 ... lapszámok.

Akkor mondjuk azt mondja, hogy ő lapozott a 2. lapra. Get-tel ez megvan, erre végzel egy egyszerű -1 -es matematikai kivonást. 2-1 = 1.

Ekkor fogod és 1x500-at szorzod, így az új OFFSET az 500 lesz, ami azt jelenti, hogy az 500-ik sortól kezdje.
SELECT * FROM tábla LIMIT 500 OFFSET 500;

Ha a user a lapozó számokon, a 4-est választja ki, akkor ugyanúgy jársz el, 4-1=3, ezt felszorzod 3x500, az új offset 1500 lesz:
SELECT * FROM tábla LIMIT 500 OFFSET 1500;

Ennyi a logika.

(#19043) Pulsar válasza Lacc (#19042) üzenetére


Pulsar
veterán

köszönöm szépen :R . Asszem ezzel el leszek egy darabig, de így tanul az ember :)

(#19044) adika4444 válasza Lacc (#19041) üzenetére


adika4444
addikt

Értem... Akkor a hash készítés nem lesz egy nehéz történet... Az milyen ötlet lenne ha nem is hashelnék hanem csak ellenőrizném hogy létezik-e a topic, és a hsz amire megy a válasz?
Ahogy látom itt PH!-n sincs túlbonyolítva. Csak a topicot, hogy mire megy a válasz (ha válasz) és az url-t tartalmazza hogy hová küldjön vissza...

A felület nem egy nagy durranás jelenleg, így újratervezéssel sincs nagy gond... Hogy lenne érdemes megoldani?

Symfony meg ez a keretrendszeres dolog nekem magas, és ezért ilyesmit nem használok...
HA nagyűrlapozok akkor viszont marad az a törlési megoldás egy adott hsz-re hogy delete.php?comment=x, és itt is az a gond hogy könnyen lehet manipulálni. Vagy ha ellenőrzöm a topikot és a hsz-t akkor is. De itt mondjuk ellenpélda hogy olyat rakok csak be adminnak akiről feltételezem hogy nem tervezi szétlökni a fórumot... Vagy csak elrejteni tudja a kommentet amit meg én tudok törölni vagy visszaállítani...

Ajax-xal hogy lehetne megoldani?

üdv, adika4444

(#19045) Lacc válasza adika4444 (#19044) üzenetére


Lacc
aktív tag

A leggyengébb láncszem mindig a Felhasználó lesz.

"HA nagyűrlapozok akkor viszont marad az a törlési megoldás egy adott hsz-re hogy delete.php?comment=x" -de miért mindig GET-ben gondolkodsz egy nagy POST helyett?
Egyébként a törlést lehetne Ajax-xal megoldani a legjobban. És pont ezért lenne jó a keretrendszer, mert ott látná ilyen bevált és "Standard" megoldásokat.

Az Ajax-hoz átkéne venni egy tutorialt.

Én most a többiekre bízlak, ne haragudj, ha nyers vagyok/voltam, de nekem most nincs időm olyan részletes választ adni minden kérdésedre. (Munka, Egyetem - levelező tagozaton, mert miért ne belevágtam az MSc-be is).

Egy keretrendszer, mint a Yii vagy Laravel-nek vannak beépített vagy 3rd party Grid nézetei, azok lazán eltudják ezt intézni, hogy törlés funkciót generál le, meg minden nyalánkság, én elsőkörben a Yii-t javaslom, mert az jobban használja a tömböket, nem annyira OOP-s mint a Laravel. Ez most így nem igaz, de akik dolgozott vele az érti, hogy a Yii-sek tömbmániásak.

Szerintem neked az Egy nagy POST jó lesz. Egy nagy <form>, a törlés meg egyszerű csak egy <input> checkbox. Szerver oldalon leellenőrözd, hogy ez be van-e csekkolva. Ha igen, akkor lefutattod a törlés parancsot.
Ha nincs becsekkolva, egész egyszerűen a többi választ végig járod, és update-eled az adatbázis rekordot.
Nagy vonalakban így mondanám, hogy ha csak egyszerű PHP skillel oldanám meg.

(#19046) Lacc válasza Pulsar (#19043) üzenetére


Lacc
aktív tag

Én anno ebből a könyvből tanultam meg PHP-t programozni 1 hónap alatt, aztán felvettek.
Igaz én közben vidéki egyetemen voltam és a Java alapokat ismertem.

A könyv angol nyelvű, de kezdésnek szerintem tökéletes, nincs felesleges sok rizsa, és a példa programok egy kezdésnek teljesen jók, már csak azért is mert magabiztosságot adnak. Igaz, az még a régi PHP5, de szerintem jó.
(Lehet van újabb, jobb is tőle, de már vagy 3-4 éve nem követem a PHP-s könyv vonalat)

(#19047) adika4444 válasza Lacc (#19045) üzenetére


adika4444
addikt

Azért mert több űrlap nem lehet egymásba, máshogy meg pl. <a href-fel nem tudom kezelni a postot...
Yii-t meg fogom nézni...
Jelenleg is az a megoldás van, a checkbox amit írsz, csak van egy egyesével törlős funkció hogy ráklatty és töröl... De a ráklattyosat akkor kiveszem, és akkor marad a törlésre jelöltek bepipálgatása (nagy post).
Viszont én nem update-lek és hasonlók, hanem a törlést úgy csinálom, hogy a post tömb checked tömbjén végigmegyek és mindegyik-re lefuttatok egy delete-t. Mondjuk az igaz hogy ez több lekérés több bejegyzésnél, annak utánanézek hogy egy lekérésben lehet-e többet törölni, bár nem hiszem...
Egyáltalán nem voltál nyers:), köszi nagyon a segítséget, a kapott infók alapján fogom folytatni a fejlesztést. A keretrendszert is meg fogom hamarosan nézni, különösképp Yii-t, az objektumorientált megoldás az egyellőre nagyon nagyon távol áll tőlem...

üdv, adika4444

(#19048) Lacc válasza adika4444 (#19047) üzenetére


Lacc
aktív tag

Még annyit, hogy én szarnék rá. Ha tényleg csak azért akarod, csinálni, hogy bolond biztos legyen a rendszer, akkor legyen. De ha azt akarod megelőzni, hogy valaki direkt - az admin maga - piszkálja az url-ben a paramétereket, akkor hagyd a picsába, mert az már az admin felelősége.

Ez még a Wordpress-ben is megtudja csinálni az admin, hogy megnyit egy bejegyzést, módosítja, aztán utólag átírja az url-ben a paramétert és mást modósít.

Ez nem a rendszer felelősége. Bár meglehet oldani, de nem a te felelőséged elsősorban.

(#19049) adika4444 válasza Lacc (#19048) üzenetére


adika4444
addikt

Ez igaz. PHP Fusion 7 kódját nézegettem, és ott elég lazán vannak az ilyesmik megoldva. Ebből gondoltam azt hogy ez így nem teljesen jó, mert a fusion 7 az szerintem finoman szólva nem a legbiztonságosabb...

Más kérdés:
Hogy tudnám az SQL-ben titkosítani a mail címeket? Van erre egyáltalán szükség? Mert jelszónál tiszta sor, ott titkosítom aztán belépésnél ha egyezik belép ha nem akkor nem, de a mail kiolvasására is szükség lehet.
Milyen lépéseket érdemes tehát tenni a MYSQL tárolási oldalon?

üdv, adika4444

(#19050) Tapsi válasza adika4444 (#19049) üzenetére


Tapsi
addikt

Szerintem felesleges.

Útvonal

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