PHP $_POST $_GET unset stb stb

Indította Meli, 2018-01-08, 16:48:22

Üdv!

Észrevettem, hogy többnyire a magyar szerverek weboldalánál használat után
nem törlődnek ezek:

$_POST
$_GET

Nos, hogy ezzel mi a probléma?
A probléma az, hogyha regisztrálsz vagy belépsz és nyomsz egy F5 öt újra megpróbálná a kódot lefuttatni.
Az rendben van, hogy létrehoz pl a regisztráció egy accountot és utána már nem fogja engedni vagy loginnál úgyis minden adat ugyan az nem lehet belépni 2x.
Na de mi van, ha valaki itemshoppból rendel? (Igaz saját hibája, ha 2x frissíti le) Mi van akkor, ha pont megszakad vásárlás közbe az internet 1-2 mp re? Duplán küldi a vásárlást azaz duplán mínusz sé.
Vagy vegyük például azt, hogyha valaki a weboldal felületéről akar E-Mailt küldeni a szerver üzemeltetőknek?
Azt is duplázza és itt már közrejátszhat sok rosszakaró is. Kihasználnák és floodolnák az emailt..

Ha valaki tudna segíteni, hogy lehetne ezeket töröltetni használat után azt megköszönném, illetve szerintem nem csak én :)

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”

Szerintem már a megközelítés rossz.

De ha erre a problémára keresel megoldást akkor lehet egy ellenőrző oldal amin meg kell erősíteni a rendelést.
Csak PHP-ról van szó egyébként?

Idézetet írta: Gabo Dátum 2018-01-08, 17:04:30
Szerintem már a megközelítés rossz.

De ha erre a problémára keresel megoldást akkor lehet egy ellenőrző oldal amin meg kell erősíteni a rendelést.
Csak PHP-ról van szó egyébként?

Csak php igen.

“Majdnem minden tudásunkért nem azoknak tartozunk, akik egyetértettek, hanem azoknak, akik nem.”


2018-01-08, 17:16:15 #4 Utolsó szerkesztés: 2018-01-08, 17:49:37 Szerző: udvatt108
Ez nem így müködik, hogy törlöm a "POST" vagy "GET" fejléc tömböket.

Ha frissíti a látogató az oldalt, akkor újra elküldi a headerben a böngésző által már eltárolt tartalmat, és mivel az egy teljesen új elhatárolt kérés lesz, ezért külön dolgozza fel a webszerver.

Erre az a megoldás, ha "Session", az-az munkamenetekben dolgozol és ezzel együtt végzel fontos műveleteket, mint például a SÉ rendelés és a tárgy vásárlás ItemShop-ban.

Valamint regisztrációnál, MySQL Insert-nél vagy egyéb szervert terhelhető kérésnél használj "Captcha checker"-t a Floodolás ellen.

De megoldás ha a művelet végrehajtása után a "Header"-ben átirányítást csinálsz, így resetelve a mentett fejléc tartalmat. Viszont ez nem feltétlen megoldás, ha mint említetted töltés közben megy el a nete az illetőnek, így nem tud a szerver válaszolni, hogy kérje a böngészőt az átirányításra.

És még egy kis tipp, hogy hajts végre esetleg Javascript-ben (Cross Browser - Ajax - JQuery) űrlap feldolgozásokat, vagy egyéb művelet végrehajtásokat, itt még az oldalt látogató böngészőjében tudsz esetleg olyan ellenőrzést végrehajtani, hogy ha a szerver nem válaszol, akkor üríti a felvett adatokat és akár milyen más műveletet végre hajtathatsz a webszerver kapcsolata nélkül is, valamint egy hiba jelentéssel tér vissza a látogató részére.

Ezek a járható utak.

Nyilván tájékoztató jellegű volt a hozzászólásom, tehát ha valamelyiket meg akarod valósítani, akkor ismered már a hozzászólásból a szükséges kulcs szavakat amiket használhatsz a Google-ban. :)





Üzenet összefésülés: 2018-01-08, 17:49:37

Annyit füznék még a Javascript-tel való művelet feldolgozáshoz, hogy nagy részben elhatárolódik a böngésző irányításától, mivel a Javascript funkciók nyilván nem hívódnak meg az oldal frissítésére (ha csak nem azt akarjuk), csak ha azokat mi adott környezetben meghívjuk (például a regisztrációs gombra kattintva újra küldi a kérést, amit újra ellenőrizhetünk immár az új adatokkal) és esetleg azokból indítjuk az előbb említett műveleteket (SÉ rendelés), mivel ott is ugyan úgy küldhetünk kéréseket a webszerverhez.

És egy fontosat meg kell említenem, ami a "START TRANSACTION, COMMIT, ROLLBACK Syntax'.
Ezeket használják a bankok is, mivel ez a legbiztonságosabb mysql kezelési struktúra abban az esetben, ha fontos értékeket akarunk úgy kezelni, hogy az csak akkor véglegesedjen, ha a művelet minden tekintetben teljesen végig futott a webszerver és az adatbázis részéről.

Tehát elmélet:
Ha én veszek egy itemet a shop-ban a weboldalon és levonom a SÉ-t, de közben valami oknál fogva (lassú szerver válasz miatt idő túllépés, megszakad internet kapcsolat) megszakad a művelet és lehet, hogy a mysql kérés végbe ment (levonta a SÉ-t), de az itemet nem tudta már feljegyezni VAGY esetleg hiányos adatot kapott a webszerver az itemel vagy a játékos azonosításával kapcsolatban és lehet hogy az egyik művelet végbe ment, de a másik nem (SÉ levonás, ITEM vásárlás), akkor a webszerver és az adatbázis közöz munkával a te beavatkozásod nélkül vissza állítja az eredeti állapotot még a művelet előttire, tehát vissza kapod a levont SÉ-t, mivel a tárgyat nem kaptad meg. És ez persze viszont is igaz, ha tárgyat kapsz, de SÉ-t nem vont le.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

PHP - Javascript (Cross Browser - Ajax - JQuery)

Ebből lesznek a jó oldalak :D

Idézetet írta: Gabo Dátum 2018-01-08, 17:50:38
PHP - Javascript (Cross Browser - Ajax - JQuery)

Ebből lesznek a jó oldalak :D

Iróniát érzek...

Igen abból, a jelenlegi weboldalak 80%-a legalább használja a Javascriptet valamilyen formában. De hát nyílván úgy szóltál hozzá, hogy fogalmad sincs róla. :)

Nyilván te nem használtad még a Facebook-ot, Google-t és a Youtube-t sem, mivel ezek is mind brutális mértékben Javascript alapúak az interakciót illetőleg. :D Pedig a világ legnagyobb weboldalai. Biztos ők is hülyék, a hozzászólásod alapján.  :'(

Istenem, én olyan jót nevetem. :)
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

2018-01-08, 17:58:55 #7 Utolsó szerkesztés: 2018-01-08, 18:10:37 Szerző: Gabo
https://github.com/facebook/react

Idézetet írta: udvatt108 Dátum 2018-01-08, 17:58:00
Igen abból, a jelenlegi weboldalak 80%-a legalább használja a Javascriptet valamilyen formában. De hát nyílván úgy szóltál hozzá, hogy fogalmad sincs róla. :)

Ja jó bocs :(
(nem ezt mondtam)
Igen, de nem gányolt java, jquery ahogy megszokhattuk.

Idézetet írta: Gabo Dátum 2018-01-08, 17:58:55
https://github.com/facebook/react

Igen, de nem gányolt java,jquery ahogy megszokhattuk.

De még mindig nem értem az előző hozzászólásod...

Idézetet írta: Gabo Dátum 2018-01-08, 17:50:38
PHP - Javascript (Cross Browser - Ajax - JQuery)

Ebből lesznek a jó oldalak :D

IdézPHP - Javascript (Cross Browser - Ajax - JQuery)
- Ebből hogy szürted le hogy ez is gányolás???
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Eltudod képzelni ahogy szép scripteket írnak a metin szerverek üzemeltetői?

Igen én eltudom képzelni, mert vannak még igényes emberek. Részben igazad van, de te véletlen sem rájuk gondoltál amikor az emlegetett hozzászólást írtad. Annak semmi köze nem volt ehhez.

De lényegtelen.

A lényeg, hogy remélem valamit sikerül az információkkal kezdenie, leszámítva az Offokat.
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.

Udvat egy jó tanács Gabo-nak ne írj ilyet mielőtt nem ismernéd ha valaki ért hozzá akkor ő az.


Akkor már értem mikee0121.
Elnézést kérek.  :-\
Egy programozási nyelv akkor alacsony szintű, ha arra kényszeríti az embert, hogy az érdektelen dolgokra is odafigyeljen.