Webprogramozás arr PHP info Reg Tiltott nevek
(#2) Geeb válasza erre: (#1) onlyteszt 2012.09.12. 12:43

Geeb
Geeb
Kezdő

cenzúraként nem találtál semmit?
Most találtam munjkahelyen vagyok:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
 
A szotar.txt tartalma:
 
<iframe>:&#
<script>:##
.
.
.
és így tovább...
 
Tehát esetünkben az <iframe> taget lecseréljük egy "&#"-re.   
Ennek a megoldásnak nagy előnye - mármint, hogy egy fájlból olvassa be ezeket az
értékeket -  az, hogy
nagyon könnyen, bárki által egyszerűen módosítható/testreszabható az, hogy ki
mit szűr. Így aztán ezt lehet
éppúgy tagek szűrésére használni mint egy üzenőfal cenzúrázására, vagy egy
kezdetleges titkosításra. 
És akkor jöjjön a lényeg a script, amit igyekeztem a lehető legrövidebben
megírni.
 
<?php
$text=$_GET['text'];
//első rész
$fajl="szotar.txt"; 
$file=fopen($fajl, "r");
while(!feof($file))
{
$sor=fgets($file,1024);
$szotar[]=$sor;
}
//második rész
For ($x= 0; $x <= count($szotar)-1; $x=$x+1)
{
$text2=explode(":", $szotar[$x]);
$text3[]=$text2[0];
$text4[]=$text2[1];
}
//harmadik rész
$text5 = str_replace($text3, $text4, $text);
print $text5;
?>
 
Magyarázat:
A script egy form által, GET metódussal küldött text input tartalmát elhelyezi
egy $text nevű változóban.
Értelem szerűen ezt a változót szeretnénk megtisztítani a különböző kódoktól. 
 
Első rész: Itt beolvasásra kerül a szotar.txt fájl tartalma. A fájl teljes
tartalmát
ezután soronként beleírjuk egy $szotar nevű tömbbe.
 
második rész: Szétszedjük a $szotar tömben található sorokat ":" mentén. 
Itt kezd egy kicsit bonyolodni a dolog . Miután szétszedtük az adot sort
pl.: <iframe>:&# 
ebből lesz egy <iframe> és egy &# .
Tehát esetünkben a $text2[0] értéke <iframe>, míg $text2[1] &# lesz.
Ezen értékeket külön-külön behelyezzük megint egy tömbe azért, hogy aztán 
az összes kiolvasott sor [0] és [1] elemére hivatkozhassunk. 
 
Harmadik rész: Itt történik meg a karakterlánc lecserélése, tehát itt lesz az
<iframe> -ből &#. Majd kiiratjuk az egészet a képernyőre. 
 
 
Amennyiben nem teljesen világos, hogyan is működik a script nem kell kétségbe
esni.
Ebben az esetben ajánlom az explode(), str_replace() függvények alaposabb
megismerését
illetve a tömbökkel való műveletek elsajátítását. 
 
Felhasználás:
 
//egy fórum űrlapja//---(method=GET)--->//cenzura.php//=>//kiiratás, vagy
továbbadás//
 
 
űrlap:
 
<form action=cenzura.php method=GET>
Üzenet: <input type=text name=text>
<input type=submit value=mehet>
</form>
 
Jelen esetben ezaz űrlap elküldi a text nevű input tartalmát a cenzura.php-nek,
ami elvégzi rajta a szűrést,
a szotar.txt fájlt beállításától függően, majd az kiírja a márt
megszűrt/cenzurált stringet a képernyőre.
 
pl.: szotar.txt tartalma
 
<:#
>:##
":&
':&&
_:,
%:.
/:-
\:--
 
 
Összefoglalás:
 
A cenzura.php modult tudom ajánlani azoknak, akik egy valamennyire
automatizált moderációs üzenőfalat/fórumot/vendégkönyvet akarnak csinálni.
Egy olyan szotar.txt fájl összeállítását javaslom mellé, amiben szűrésre kerülnek 
az általunk veszélyesnek talált tagek, illetve metakarakterek, és mellette
esetlegesen a ronda szavak is.