[PHP] Izločanje pokvarjenih podatkov
 
Javornik 29. jan 2015 18:29:17 Pridružen od:
15. jun 2010
431 objav
375 27 4
#1

Pozdravljeni!



Najprej opravičilo za čuden naslov, ampak nisem vedel kako drugače naj opišem svojo težavo.

Torej na strežnik dobivam podatke. Gre za preproste stringe/stavke, ki jih nato zapisujem v bazo. Težava je, da se ti stavki pogosto na poti do mojega strežnika pokvarijo, zato bi jih rad nekako filtriral in jih ignoriral.



Primer normalnih sporočil ko je prenos OK:

Danes je lep in jasen dan.

Ceste so suhe in normalno prevozne.



Primer pokvarjenih sporočil ko gre pri prenosu kaj narobe:

WHC - 90E??G?(?UUUUUUUUUUUU??8

š?y=E=E

Š466274200 354Š

osJ}QRš - 98E??A??%w

Č"?/?GWHc+dq?rx - 9

Č"?/?GWHs+dyČ"?-svZ?c+d?pž?(.??/fA?rž - 90E?X"?



To je primer dejanskih sporočil iz strežnika, ki se jim želim izogniti.



Kakšna ideja?



Hvala v naprej.


všeč(0) ni všeč(0) spam(0)
 
mraz1337 29. jan 2015 19:13:58 Pridružen od:
29. jun 2014
80 objav
58 2 1
#2

Mogoče kakšna knjižnjica, ki prepoznava human readable tekst, kot npr. nekaj takega.


všeč(1) ni všeč(0) spam(0)
 
sikmajnd 29. jan 2015 19:17:24 Pridružen od:
11. nov 2013
89 objav
156 9 1
#3

Na kakšen način pa pošiljaš podatke, da se ti tako pokvarijo?

Dobiš vsako sporočilo posamezno? Recimo, te čudne znake, ki jih imaš gor so neko enotno sporočilo?



Na tvojem mestu bi zadevo popravil na tak način, da do takih napak pri prenosu nebi več prihajalo. Mogoče base64encode ali kakšna podobna rešitev, odvisno od tega kje pri prenosu se ti podatki takole zmaličijo.



V primeru, da ne moraš vplivati na prenos in da je tisto gori kompletno sporočilo, bi poskusil rešiti zadevo z regexom. Se pravi, da preverjaš čudno kombinacijo znakov ??/, ??%, itd.



Ampak kot sem rekel, najbolj proper bi bilo popraviti prenos, da do tega ne prihaja več :) Povej več :P


všeč(1) ni všeč(0) spam(0)
 
Javornik 29. jan 2015 19:52:35 Pridružen od:
15. jun 2010
431 objav
375 27 4
#4

@mraz1337 hvala, zgleda obetavno!

@sikmajnd če bi se dalo vplivat na sam prenos, bi bilo to super, a žal ne gre (gre za prenos po zraku). Zgornji primeri so vsako sporočilo v svoji vrstici. Razmišljal sem že, da bi preverjal če je v sredini besede vprašaj, saj se ti zelo pogosto pojavljajo v teh pokvarjenih sporočilih, vendar bi rad neko bolj sigurno zadevo.


všeč(0) ni všeč(0) spam(0)
 
HeXeR 29. jan 2015 20:42:02 Pridružen od:
13. dec 2006
3268 objav
122 22 5
#5
$someData = "BlahBlah";
$send = json_encode(array("data"=>$someData, "hash"=>md5($someData))); // pa tole pošlješ...

// ko prejemaš pa preverjaš če se hash ujema s podatki...
$someData = json_decode($send);
if($someData != null && md5($someData->data) == $someData->hash) {
echo 'Yaaay!';
} else {
echo ':(';
}
všeč(4) ni všeč(0) spam(0)
First rule of business, protect your investment.
 
FrEaKmAn 29. jan 2015 20:42:38 Pridružen od:
2. dec 2007
303 objav
175 59 0
#6

ali lahko spremeniš način pošiljanja? če lahko, potem narediš md5, sha ali karkoli podobnega celotnega sporočila in le tega pošlji zraven.



potem pa na strežniku ponovno narediš md5, sha.. sporočila, in še se ne ujema s poslanim, ignore...



edit: HexeR me je prehitel...

edit2: jsonencode in jsondecode odpade, ker če je sporočilo izmaličeno, potem bo vrglo error...


všeč(0) ni všeč(0) spam(0)
 
HeXeR 29. jan 2015 20:46:41 Pridružen od:
13. dec 2006
3268 objav
122 22 5
#7

http://php.net/manual/en/function.json-decode.php




NULL is returned if the json cannot be decoded or if the encoded data is deeper than the recursion limit.




$someData != null



;)


všeč(3) ni všeč(0) spam(0)
First rule of business, protect your investment.
 
FrEaKmAn 30. jan 2015 08:02:02 Pridružen od:
2. dec 2007
303 objav
175 59 0
#8

imaš prav.


všeč(1) ni všeč(0) spam(0)
 
Javornik 30. jan 2015 10:00:09 Pridružen od:
15. jun 2010
431 objav
375 27 4
#9

Bom poskusil tudi to rešitev. Hvala!


všeč(0) ni všeč(0) spam(0)
 
metallon 4. mar 2015 11:10:10 Pridružen od:
28. apr 2012
362 objav
326 70 8
#10

Sicer pozen, ampak mogoce bo komu tole pomagalo. Tole zadevo bi se lahko resilo tudi z kaksnim after insert triggerjem v podatkovni bazi, kateri ti izbrise podatke ce niso pravilni.



Lp.


všeč(1) ni všeč(0) spam(0)
 
 

🔒 Za odgovor na to temo se moraš prijaviti.

Prijavi se