توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : کد فیلتــــر . . .
warpro
October 20th, 2013, 01:26
با سلام . . .
دوستان کدی می خواهم از php باشه ، که اجازه کاربرد از یک کلمه یا حرف مانند @ رو نده و اگر کسی برای مثال @ را در فیلد خالی تایپ یا کپی ، پِیست کند ، اجازه اجرا آن را ندهـــد . . .
با تشکـــر . . .
Mohammad_reza
October 20th, 2013, 01:35
این جور چیزها رو معمولاً با جاوا اسکریپت انجام میدن. خیلی هم کاربر پسند تر هست و باعث کاهش فشار رو سرور هم میشه.
با php کاربر باید فرم رو ثبت کنه ، فرم به سرور ارسال بشه ، بررسی بشه و درصورت وجود خطا به کاربر اعلام بشه
اما با جاوا اسکریپت به محض اینکه کاربر اقدام به ثبت فرم کنه ، قبل از ارسال به سرور ، داده وارد شده کاربر بصورت کلاینت ساید بررسی میشه و بصورت آنی نتیجه آن (درصورت وجود خطا) به کاربر اعلام میشه.
و البته این برای مواردی بود که بخواهید به کاربر اخطار داده شود ، درصورتی که بخواهید کلاً کاربر نتواند حرف مورد نظرش را داخل کادر وارد کند (حرف مورد نظر اصلاً تایپ نشود) حتماً نیاز به جاوا اسکریپت هست...
warpro
October 20th, 2013, 01:40
با ســلام . . .
جاوا رو که می دانیم اما در مرورگر موزیلا جاوا رو میشه غیر فعال کرد ، پس به درد نمی خورد . . .
اما php عالی است ، بنده نمی خواهم اصلا نشه تایپ کرد ؛ اصلا شخصی بیاید کلمه ای را که بنده ***** کرده ام را تایپ کند اما در زمان تایید آن کلمه اجرا نشود و یا خطا را نشان دهد . . .
برای برنامه نویســان حرفه ای فــکر نکنم سخـــت باشــد . . .
با تشــکر . . .
Mohammad_reza
October 20th, 2013, 01:40
...
warpro
October 20th, 2013, 01:41
این کد جاوا اسکریپت شاید به دردتون بخوره :
Preventing Character Input Using Javascript - Troy Grosfield (http://blog.troygrosfield.com/2010/12/01/preventing-character-input-using-javascript/)
با ســلام . . .
جاوا رو که می دانیم اما در مرورگر موزیلا جاوا رو میشه غیر فعال کرد ، پس به درد نمی خورد . . .
اما php عالی است ، بنده نمی خواهم اصلا نشه تایپ کرد ؛ اصلا شخصی بیاید کلمه ای را که بنده ***** کرده ام را تایپ کند اما در زمان تایید آن کلمه اجرا نشود و یا خطا را نشان دهد . . .
برای برنامه نویســان حرفه ای فــکر نکنم سخـــت باشــد . . .
با تشــکر . . .
Mohammad_reza
October 20th, 2013, 01:44
برای php هم می تونید از این کد استفاده کنید :
$var = preg_replace("/[^A-Za-z0-9]/", "", $var);
این کد تمام حروف غیر از a تا z و اعداد رو از ورودی کاربر حذف می کنه ، خودتون این عبارت رو می تونید بصورت دلخواه تغییر بدید.
warpro
October 20th, 2013, 01:48
با سلام عالی است اما میشه الان شما در این کد خودتان کاری کنید تا از @ جلوگیری بشه ؟! . . .
با تشکر . . .
2- اینکه شاید بخواهیم کلمه a را جلوگیری کنیم آن موقع چی ؟
از دوستان که کد دادند خواهش دارم در کد خودشان @ را ف ی ل ت ر نمایند تا کاربر هنگام تایید ، @ اجــرا نشود . . . و در فایل زید به صورت صحیح قرار دهند تا کار بکند . . .
var $showList = NULL;
var $selectedTabIndex = NULL;
var $errorText = NULL;
var $receiver = NULL;
var $subject = NULL;
var $body = NULL;
var $messageDate = NULL;
var $messageTime = NULL;
var $showFriendPane = NULL;
var $friendsList = NULL;
var $viewOnly = NULL;
var $isInbox = NULL;
var $sendMail = NULL;
var $dataList = NULL;
var $pageSize = 10;
var $pageCount = NULL;
var $pageIndex = NULL;
var $seckeyB = NULL;
var $time = 0;
var $seckey;
public function GPage( )
{
parent::securegamepage( );
$this->viewFile = "msg.phtml";
$this->contentCssClass = "messages";
}
از دوستان که کد دادند خواهش دارم در کد خودشان @ را ف ی ل ت ر نمایند تا کاربر هنگام تایید ، @ اجــرا نشود . . . و در فایل زید به صورت صحیح قرار دهند تا کار بکند . . .
var $showList = NULL;
var $selectedTabIndex = NULL;
var $errorText = NULL;
var $receiver = NULL;
var $subject = NULL;
var $body = NULL;
var $messageDate = NULL;
var $messageTime = NULL;
var $showFriendPane = NULL;
var $friendsList = NULL;
var $viewOnly = NULL;
var $isInbox = NULL;
var $sendMail = NULL;
var $dataList = NULL;
var $pageSize = 10;
var $pageCount = NULL;
var $pageIndex = NULL;
var $seckeyB = NULL;
var $time = 0;
var $seckey;
public function GPage( )
{
parent::securegamepage( );
$this->viewFile = "msg.phtml";
$this->contentCssClass = "messages";
}
حالا یک سوال داشتم خدمتتون ، الان ممکنه یک شخصی بخواهد با زدن < یا > یک باگی را در ورودی وارد نماید و با تایید آن باگ را انجام دهد . . .
اگر از این کد شما استفاده شود ، شخصی که مثلا < را در ورودی وارد کرده است تا باگ بزند ، جلوی باگ زدن گرفته می شود و < کاربردی ندارد ؟! . . .
با تشکر . . .
be099
October 20th, 2013, 03:08
بله قرار دادم عالی بود . . .
حالا یک سوال داشتم خدمتتون ، الان ممکنه یک شخصی بخواهد با زدن < یا > یک باگی را در ورودی وارد نماید و با تایید آن باگ را انجام دهد . . .
اگر از این کد شما استفاده شود ، شخصی که مثلا < را در ورودی وارد کرده است تا باگ بزند ، جلوی باگ زدن گرفته می شود و < کاربردی ندارد ؟! . . .
با تشکر . . .
متوجه نمیشم ! شما میخاید < و > هم فیلـــتر بشن ؟
warpro
October 20th, 2013, 04:00
نه عزیز ، بنده دارم میگم اگر کسی مثلا در جایی خواسته بود باگ بزنه یا شلی را با استفاده از دستور < یا > آپلود کند بر روی سرور از طریق فایلی ، ما اگر با کد شما < یا > را ف ی ت ل ر نماییم ، جلوی زدن باگ یا شل گرفته می شدو دیگر و دستور های < یا> اجرا نمی گردد . . .
درست است ؟! . . .
با تشکر . . .
camelian77
October 20th, 2013, 06:31
به این سادگی هم نیست. به طور کلی بهتر هست که متغیر های ورودی از $_GET , $_POST را همیشه sanitize کنیم با ***** های مختلف. دیگه بستگی به منطق برنامه نویسی داره.
اینجا سه مثال از این روند زده که به طور ساده توضیح می دم:
مثال. برنامه ی پی اچ پی ما از ورودی GET یا POST یک ورودی را می خواند و سپس در رابطه با آن ورودی کاری را انجام می دهد. همانطوری که این توضیحی که لینک کردم هم اشاره می کند بهترین کار ***** کردن و sanitize (فارسی ش رو نمی دونم پاکسازی احتمالا یا عفونت زدایی!) در محل استفاده هست. سه سناریو:
در اینجا کد نام یک فولدر یا چیزی شبیه اون هست که به یک برنامهی خارجی خرونده شده. در اینجا چون چیزی رو در شل اجرا کردیم با استفاده از دستور escapeshellargs مطمئن می شیم که چیز بدی به ترمینال پی اچ پی نمی ره!
$safe_category_name = mysql_real_escape_string ($unsafe_category_name);
mysql_query("SELECT * FROM items WHERE category_name = '$safe_category_name'");
در این حالت که عمومیت بیشتری داره چیزی رو از پایگاه داده فرا خوندیم. این جا هم با mysql_real_escape_string مطمئن میشیم که کسی چیز تاجوری رو به کوئری وارد نمی کنه! SQL Injection
$safe_category_name = htmlspecialchars($unsafe_category_name);
echo "<span>$safe_category_name</span>";
در این حالت با استفاده از اون متغیر چیزی رو به مرورگر فرستادیم. چرا این ممکنه خطرناک باشه؟ XSS ! برای اینکه ممکنه ما همین رو یه روزی به دیتابیس بفرستیم و برای کاربری «دیگری» فراخونی کنیم! سپس کد مخرب از طریق سرور ما روی کامپیوتر طرف اجرا می شه از طریق javascript! دنگ!
و به طور کلی همونطور که همیشه رعایت می کنیم: magic_gpc = off همیشه و استفاده نمی کنیم از eval یا include uploaded file
warpro
October 20th, 2013, 10:27
نه قربـــان ، والا مـــن فقط می خواهم بــدانم ::
ببینـــید ما بازی آنلایــن داریم ، در قســمت پــروفایل بازی ما ، در قسمتــ تعویــض نـــام امپراطـــوری ، اگر در فیلد خالی که جای نوشتن نام جدید است <s> وارد کنیم - امپراطوری شما بی نام می شود و کسی نمی تـــواند به شما حمله کند . . .
حال با این کد وقتــی < یا > یا <s> را ف ی ل ت ر ، جلوگیــری نماییم ازش شخصی که می خواهــد بــاگ بزنــد تا نام خود را بی نام کنـــد ، جای کاراکـــتر هـــای بــاگ * می آیــد و بــاگ اجـــرا نمی گـــردد . . .
درســـت است ؟! . . .
be099
October 20th, 2013, 15:32
نه قربـــان ، والا مـــن فقط می خواهم بــدانم ::
ببینـــید ما بازی آنلایــن داریم ، در قســمت پــروفایل بازی ما ، در قسمتــ تعویــض نـــام امپراطـــوری ، اگر در فیلد خالی که جای نوشتن نام جدید است <s> وارد کنیم - امپراطوری شما بی نام می شود و کسی نمی تـــواند به شما حمله کند . . .
حال با این کد وقتــی < یا > یا <s> را ف ی ل ت ر ، جلوگیــری نماییم ازش شخصی که می خواهــد بــاگ بزنــد تا نام خود را بی نام کنـــد ، جای کاراکـــتر هـــای بــاگ * می آیــد و بــاگ اجـــرا نمی گـــردد . . .
درســـت است ؟! . . .
بله هر چیزیو که میخاید میتونید فیلـتر کنید و ثبت نمیشه
توی همون قسمت کاراکترای که میخاید فیلـتر بشه با | از هم جدا کنید