Showing posts with label PHP. Show all posts
Showing posts with label PHP. Show all posts

Thursday, March 29, 2007

Pattern

Хэрэглэгчийн оруулсан мэдээллийг Regexp-д pattern гэнэ. Pattern гэдэг нь тоо, vг (ар араасаа дараалсан vсэгнvvд ), эсвэл vсэг, тооны холимог байж болно.

Pattern жирийн хялбархан, эсвэл нvсэр том, боловсронгуй байж болно.


Pattern- г тодорхойлох эхний тєрєл тэмдэгтvvдийг ( vсэг, тоо, vг гэх мэт ) Literal гэнэ. Literal бол яг яаж бичигдсэн тэр хэлбэрээрээ утгаа хадгалдаг.

Иймээс literal -аар бид тодорхой хайлт явуулж уг pattern -д таарсан бvх vр дvнг хvлээж авдаг. Жишээ нь "бар" гэсэн literal pattern зєвхєн "бар" гэсэн vгийг олоход хэрэглэгдэх мэт.

Дaрaaгийн тєрєл болох Metacharacters буюу "хувьсагч тэмдэгтvvд" бол єєрийн жинхэнэ утгаасаа цааш олон утга агуулж болох тэмдэгтvvд.

Эхний Metacharacter бол єгvvлбэрийн эцэст ордог цэг. Цэг нь ( "." ) ямарваа хайлтаас ганцаараа байгаа тэмдэгтvvдийг олно. Жишээ нь хайлтын эцэст: a, b, c, d, x, y, z гэх мэт ганц vсгээс ( тэмдэгт ) бvтсэн бvх биетийг гаргаж ирнэ. Дараачийн гурван Metacharacter нь олон тохиолдол бvхий хариу гаргадаг. Эхний "n*" Metacharacter зєвхєн n тэмдэгтvvдийг олно. n, nn, nnn, nnnn гэх мэт. Дараачийн "n+" нь "n*" -тэй тєстэй гэхдээ багаар бодоход нэг хариу олохыг шаарддаг. Дараачийн

"n?" Metacharacter нь ганцхан n олохыг шаардана.

Хэрвээ хайлтын тэмдэгтvvдийн тоог мэдэж байвал тэр тоог нь муруй хаалтын тэмдэгт ( {} ) оруулаад болоо. Жишээ нь "n{3}" хайлтаар nnn гэсэн тэмдэгтvvд олдоно. Хэрвээ "n{3,}" гэвэл ( 3-ын ард байгаа таслалыг анхаар ) nnn, nnnn, nnnnn гэх мэтээр гурваас дээш тооны n гэсэн тэмдэгтvvдийг олно. Харин "n{3,5}" гэвэл гурваас тавын хоорондох n тэмдэгтvvдийг олно. nnn, nnnn, nnnnn гэх мэтээр. Эцэст нь ( ^ ), энэ тэмдэгтийн араас нь бичсэн vсгээр эхэлсэн бvх хоёр тэмдэгтээс бvтсэн string- г олоход хэрэглэнэ. Жишээ нь "^n" гэвэл na, nf, n5, np, nr, nx гэх мэт. Харин "n$" гэвэл n -ээр дууссан бvх хоёр тэмдэгтээс бvтсэн string олдоно. Жишээ нь an, en, 5n, jn гэх мэт.

Бас нэг тэмдэгт бол босоо зураас ( | ). Босоо зураасаар хоёр тусдаа тэмдэгт хайхад хэрэглэнэ. "n|m" гэсэн Metacharacter хайлтаар n ба m гэсэн бvх string олдоно.


Functions

РНР-д string дотроос ямар нэг тэмдэгтийг сонгоход хэрэглэдэг 2 functions байдаг. Эдгээрийг дурдвал
ereg(),
eregi().

eregi() нь string -ээс том жижиг ялгаагvй тэмдэгтээс бvтсэн тэмдэгт сонгодог байхад ereg() нь том жижиг тэмдэгтийн ялгааг хамаардаг. ereg() нь гол тєлєв нууц vг шалгах мэтийн нарийвчилсан vйлдэлд хэрэглэгдэнэ. Энгийн хайлт хийхэд eregi() нь голчлон хэрэглэгддэг

И-мэйл шалгах

$Pattern = ".+@.+\..+";
if (eregi($Pattern, $Array["E-mail"])) {
print "Зєв И-мэйл хаяг орсон!
";
} else {
print "Буруу И-мэйл хаяг орсон!
";
}
?>

$Pattern = ".+@.+\..+"; энэ юу гэсэн утгатай вэ?

"." нь ямарч хамаагvй тэмдэгт сонгоно, "+" тэмдгээр дараачийн тэмдэгттэй холбоно. "+"-н дараа нь "@" тэмдэгт байна. Энэ нь ямарч хамаагvй тэмдэгтийн араас "@" тэмдэгт зайлшгvй байна гэсэн vг. "@" -н араас нь "." байна. "."-н араас нь "+" байна. Энэ нь "@" -н араас ямар нэг тэмдэгт зайлшгvй байхийг заана. Дараа нь "+" -ээр дараагийн тэмдэгттэй холбоно. Дараачийн тэмдэгт нь "." байх болно гэдгийг "\." зааж єгж байна. Эцэст нь "." тэмдгийн араас ".+". Энэ нь "." -н араас ямар ч хамаагvй тэмдэгт байхийг заана.

Тэгэхээр eregi() function нь И-мэйл цонхонд хэрэглэгчийн оруулсан pattern-г дээрх нєхцєлтэй ( ".+@.+\..+" ) тулгаад хэрвээ vнэн бол TRUE худлаа бол FALSE гэсэн хариу буцаана.

Tuesday, March 13, 2007


Monday, March 12, 2007

Хэрэглэгийн IP хаяг олох

Тухайн хэрэглэгчийн IP хаягыг шалгаж мэдсэнээр аль улсаас холбогдож байгааг мэдэж болдог. Мөн шаардлагатай бол дэлгэрэнгсй бусад мэдээлэлийг нь олж болно.

$ip = getenv("REMOTE_ADDR");

print "Taны ip хаяг: ".$ip."";


$REMOTE_ADDR, $_SERVER["REMOTE_ADDR"];, getenv("REMOTE_ADDR"); эдгээр нь бvгд ижилхэн хэрэглэгчийн IP хаягийг олох vvрэгтэй.

Хуудас автоматаар шилжvvлэх

window.location="(http://javascriptkit.com"

//change below target URL to your own
var targetURL="http://namkhai.blogspot.com/"
//change the second to start counting down from
var countdownfrom=10


var currentsecond=document.redirect.redirect2.value=countdownfrom+1
function countredirect(){
if (currentsecond!=1){
currentsecond-=1
document.redirect.redirect2.value=currentsecond
}
else{
window.location=targetURL
return
}
setTimeout("countredirect()",1000)
}

countredirect()

IP хаягаар нь шvvж хандах эрхийг нь хаах

Манай компани ажилчдынхаа pc- г зарим сайтруу, мөн yahoo мессенжер лүү орох эрхийг нь хаагсан байдаг.Бvр мэдээллийн технелогийн хэлтсийнхээ хүмүүсийнхээ мессенжерийг хvртэл хаадаг шүү. Доорхи PHP код нь таны вэб сайтыг хэрэглэгчдээс хэн нэг нь таалагдахгvй байгаа бол IP хаягаар нь шvvж хандах эрхийг нь хязгаарлах болно


$filename = "blocked.txt" // 1

$handle = fopen($filename, "r"); // 2
$addr = fread($handle, filesize($filename));
fclose($handle);

$ip = $REMOTE_ADDR; // 3

if(eregi("|".$ip."|", $addr)){ // 4

echo "Та хандах эрхгvй. Таны сайтруу хандах эрхийг хаасан байна.";

exit(); // 5

}else{

echo "Тавтай морилно уу."; // 6

}


Эхлээд та ямар нэгэн .TXT (жишээ нь blocked.txt) төрлийн файл нээж vvсгээд тэр дотроо хаах IP хаягнуудаа |192.168.1.1| гэх мэт бvтэцтэй бичих хэрэгтэй. Мэдээж олон хаягыг vргэлжлvvлэн бичиж болно. / Ж.нь: |127.168.1.1||255.255.255.255||192.168.1.255|/


1 - Хаагдсан IP хаягнуудыг бичиж хадгалсан TXT файлын нэр / өөр директорт байгаа бол замыг нь цуг бичнэ/

2 - Энэ хэсэгт "blocked.txt" файлын агуулгыг $addr хувьсагчид олгож байна.

3 - Хэрэглэгчийн IP хаягыг олж байна.

4 - eregi(); функц нь тэмдэгт мөр дундаас зааж өгсөн тэмдэгтийг /мөр байж болно/ хайж шалгадаг ба хэрэв байвал TRUE байхгvй бол FALSE утга буцаадаг.
Манай энэ тохиолдолд Хэрэглэгчийн IP хаяг "blocked.txt" бичигдсэн эсэхийг шалгаж байна.

5 - IP хаяг "blocked.txt" файлд бичигдсэн байгаа болохоор цааш хандах эрхийг хааж байна. exit(); функц нь vйлдлийг шууд зогсоодог ба энэ мөрөөс цааш хуудас уншигдахгvй шууд зогсоно. IP нь хаагдсан хэрэглэгч энэ мөрөөс цаашхи ямарч мэдээлэл vзэж чадахгvй гэсэн vг.