برگزیده های پرشین تولز

میخوام توی textbox فقط حروف فارسی تایپ بشه !

amir_3d_mad

Registered User
تاریخ عضویت
4 ژوئن 2007
نوشته‌ها
98
لایک‌ها
0
من توی سایتم یه جستجوی کوچولو از sql server دارم که برای جلوگیری از خطرات sql injection میخوام بجز حروف فارسی چیز دیگه ای درون textbox قرار نگیره !
یعنی موقع فشاردادن کلید جستجو ، محتویات درون textbox چک بشه و اگر فقط حروف فارسی ( یا انگلیسی ) تایپ شده بود عمل جستجو انجام بشه !
چه راه کاری و یا چه کدی میتونه این کارو انجانم بده ؟ ASP.NET 2
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
این کد رو تو صفحه ای که تکست باکس هست بزار...

<script type="text/javascript" language="javascript">
function keyenter(field,e)
{
var key;
if (window.event)
key = window.event.keyCode;

if (key > 31)
if (key < 128)
{
if (window.event)
window.event.keyCode = ' !"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُيلا÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثبلاهتنمئدخحضقسفعرصطغظ<|>ّ'.charCodeAt(key-32);
}
}
</script>

و این رو هم در خاصیت keypress تکست باکست بزار...

onkeypress="keyenter(this,event)"
 

amir_3d_mad

Registered User
تاریخ عضویت
4 ژوئن 2007
نوشته‌ها
98
لایک‌ها
0
مرسی tabeez عزیز !
از توجهت ممنون .
به خدا تو فروم های دیگه بیشتر از یک هفته است که این سوالو نوشتم ، یکی نیست حتی بگه بلد نیستم . دریغ از یک جواب !
ولی من گفته بودم که نمیخوام با جاوا اسکریپت باشه ! ولی بازم ممنون :)
خب جواب سوالمو تقریبا خودم پیدا کردم :
http://www.codeproject.com/useritems/Alphabets_Checking.asp
ولی این فقط برای حروف انگلیسی کار میکنه ! :(
فکر کنم با کمی تغییرات بشه یه کاریش کرد تا حروف فارسی رو هم قبول کنه .
ممکنه کسی کمک کنه ؟
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
تو اون کدی که در آدرس http://www.codeproject.com/useritems...s_Checking.asp هست،

کافیه این سطر رو

If Mid(C_S, Var_Loop, 1) < Chr(97) Or Mid(C_S, Var_Loop, 1) > Chr(122) Then

اونجائی که اعداد 97 و 122 (بازه حروف انگلیسی در اسکی) هست رو به بازه حروف فارسی تغییر بدی..

الآن بیرونم و دقیقا اون بازه خاطرم نیست...ولی خب اگه خواستی برات میزارم...

مرسی tabeez عزیز !
از توجهت ممنون .

خواهش میکنم امیر جان...
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
فکر کنم همونطور که در کد جاوا هست میتونی کد رو اینطوری استفاده کنی...


If Mid(C_S, Var_Loop, 1) < Chr(97) Or Mid(C_S, Var_Loop, 1) > Chr(122) Then

رو تبدیل کنی به ...

If Mid(C_S, Var_Loop, 1) < Chr(31) Or Mid(C_S, Var_Loop, 1) > Chr(128) Then

اینطوری تمامی کاراکترهای زیر رو میتونی داشته باشی...

!"#$%،گ)(×+و-./0123456789:ك,=.؟@ِذ}ىُيلا÷ـ،/’د×؛َءٍف‘{ًْإ~جژچ^_پشذزيثب لاهتنمئدخحضقسفعرصطغظ<|>

که با یه کمی تغییر میتونی بازه حروفت رو محدودتر کنی...
 

m3hrz4d

Registered User
تاریخ عضویت
21 سپتامبر 2005
نوشته‌ها
620
لایک‌ها
1
محل سکونت
اصفهان
در هر صورت شما باید سمت سرور هم متنی که ارسال شده رو چک کنی چون دور زدن جاوا اسکیپت اصلا کار سختی نیست منظورم اینه که چک ِ اصلی باید سمت سرور باشه ;)
 

amir_3d_mad

Registered User
تاریخ عضویت
4 ژوئن 2007
نوشته‌ها
98
لایک‌ها
0
فکر کنم همونطور که در کد جاوا هست میتونی کد رو اینطوری استفاده کنی...




رو تبدیل کنی به ...



اینطوری تمامی کاراکترهای زیر رو میتونی داشته باشی...



که با یه کمی تغییر میتونی بازه حروفت رو محدودتر کنی...

خب من هم همین کارو میخوام بکنم . ولی نمیدونم دقیقا کدام بازه رو باید انتخاب کنم .
با کمی گشت و گذار در اینترنت اینا رو پیدا کردم :

http://www.alanwood.net/unicode/arabic.html

http://www.payab.com/backup/tounicode.php

http://people.w3.org/rishida/scripts/uniview/conversion.php

ولی بازهم بازه درست رو پیدا نکردم .
ممنون از همگی .
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
این کد میتونه سمت کلاینت تا حدودی پیشگیری کنه. اینکه سمت سرور هم تست شه که 100% واجبه... چون بالاخره کسی پیدا میشه که...
یعنی وقتی کد محدودیت قراره سمت کاربر اجرا شه هر کسی ممکنه اون رو دور بزنه...
شما سمت کلاینت چک کن، سمت سرور هم میتونی کاراکترهای رشته ای رو که دریافت میکنی چک کنی که در بازه حروف فارسی هست یا نه...
 

amir_3d_mad

Registered User
تاریخ عضویت
4 ژوئن 2007
نوشته‌ها
98
لایک‌ها
0
این کد میتونه سمت کلاینت تا حدودی پیشگیری کنه. اینکه سمت سرور هم تست شه که 100% واجبه... چون بالاخره کسی پیدا میشه که...
یعنی وقتی کد محدودیت قراره سمت کاربر اجرا شه هر کسی ممکنه اون رو دور بزنه...
شما سمت کلاینت چک کن، سمت سرور هم میتونی کاراکترهای رشته ای رو که دریافت میکنی چک کنی که در بازه حروف فارسی هست یا نه...

ولی من این کارو بلد نیستم . چطوری میتونم سمت سرور رو تست کنم ؟:)
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
اگه رشته ورودی رو از txtname بگیری..

dim strtxt as integer
For i as integer=1 to len(txtname.text)
strtxt=asc(mid(txtname.text,i,1))
if strtxt >31 or strtxt<128 then
...
else
...
endif
next

قبل هم بازه 31 تا 128 رو ،کاراکترهاش رو گذاشتم...

البته کد رو تو نوت پد تایپ کردم، ولی خب فکر کنم خوانا باشه...(ببخشید اگه خیلی مبتدی کد میزارم اینجا...)
 

amir_3d_mad

Registered User
تاریخ عضویت
4 ژوئن 2007
نوشته‌ها
98
لایک‌ها
0
پس یعنی این کد سمت سروره ؟
ببخشید من اصلا اطلاعی در مورد اینکه کد سمت سرور چیه و کد سمت کاربر چیه ، ندارم !
من فقط میخوام از SQL Injection جلوگیری کنم ! همین !
فکر کردم این که به کاربر اجازه بدیم فقط حروف وارد کنه ، راه خوبی باشه برای اینکار . . .
اگه یک توضیح کوچولو در مورد کدهای سمت سرور و کدهای سمت کاربر بدید ، ممنون میشم .
ممنون از دوستان خوبم .:)
 

tabeez

Registered User
تاریخ عضویت
7 دسامبر 2006
نوشته‌ها
260
لایک‌ها
0
دوست عزیز شما داری سوالت رو کمکم ریشه دار میکنی...
کد سمت کاربر کدی هست که بر روی کامپیوتر کاربر و بیننده سایتت اجرا میشه...
کد سمت سرور هم کدی هست که شما مینویسی و پس از پردازش نتیجه ای رو به کامپیوتر کاربر برمیگردونه ...این یه تعریف ساده بود..
حالا اینکه شما میخوای از sql inje.. جلوگیری کنی لازم نیست فقط حروف رو از فیلتری رد کنی...
میتونی همه حروف رو داشته باشی و چند کلمه خاص که هست رو فیلتر کنی...
 

amir_3d_mad

Registered User
تاریخ عضویت
4 ژوئن 2007
نوشته‌ها
98
لایک‌ها
0
حالا دلیل این کار من فقط این بود که توی سایت من ، کاربر اصلا نیازی به وارو کردن کاراکترهای دیگه بجز حروف فارسی نداره !
فکر کردم راه خوبی باشه و نیز مطمئن تر از راه دیگه برای جلوگیری از SQL Injection !
حالا اگه شما اینکار رو قبول ندارین ، ما هم استفاده نمیکنیم !
بازم مرسی از اینکه وقت میزارین .:)
 
بالا