PDA

View Full Version : سوال: سوال در مورد توابع و sprintf , mysql_real_escape_string



sayres
چهارشنبه 05 آبان 1389, 18:10 عصر
$sql = "SELECT * FROM $table_name ";
$where = sprintf("WHERE id = '%d'",mysql_real_escape_string($_GET[id]));
$chk_id =$sql.$where;
$result = @mysql_query($chk_id, $connection) or die(mysql_error());



mysql_real_escape_string , sprintf استفاده کردم درسته؟؟
خوب این چه کاریه! ما id را با get به این صفحه میفرستیم و با $_GET هم دریافتش میکنیم...


SELECT * FROM $table_name WHERE id = '$_GET[id]';
الان نقش mysql_real_escape_string چیه؟؟؟؟؟


sprintf("WHERE id = '%d'",mysql_real_escape_string($_GET[id]));


میشه یک توضیحی راجب این ۲تابع بدین....؟من مرجعاشونو خوندم اما چون اینگلیسیم خیلی بد چیزی نفهمیدم؟؟


بک سوال دیگه!!!!
مثلا من یک تابع نوشتم که یک مقدار x بعنوان آرگمان میگیره function name(x)کار این تابع
وارد کردن مقدار x به داخل mysql باشه ....اگه من بخوام مقدار بیشتری داده واسه تابه بفرستم
خوب آرگمان های تابع بیشتر میکنم مثل function Name (x,y,z) اما مثلا تعداد داده هایی که میخوایم
واسه تابع بفرستیم مشخص نیست یا زیادن چطور میتونم واسه تابع این داده هارو بفرستم؟؟
مثلا میخوام نام و نام خوانوادگی و ش ش وش ملی و آدرس منزل و آدرس محل کار و ش ت و ش مبایل و
غیره واسه تابع بفرستم و اون هم insert کنه تو mysql ....
اگه امکانش هست با مثال توضیح بدین...ممنون..

binyaft
چهارشنبه 05 آبان 1389, 18:49 عصر
mysql_real_escape_string

برای جلوگیری از SQL injection هست

تعداد ارگومان هایی که یک تابع میگیره + مقدار انها را میتونید با http://php.net/manual/en/function.func-get-args.php بدست اورید

موفق باشید

funpatogh
چهارشنبه 05 آبان 1389, 20:59 عصر
توی php5 به صورت خودکار این کار انجام میشه اما خوب برای مطمئن شدن میتوانید از این تابع استفاده کنید
که برای جلوگیزی از تزریق کدهای مخرب استفاده میشود
کار اصلی این تابه اینه که هر جا که ' و یا "" باشه یک \ قبلش میگزاره
توی php 5
اگر توی url


index.php?id='1'

داشته باشید برای تست


echo $_GET['id];

کنید این شکل خروجی میدهد


'\مقدار'\

که کار همین تابع هم همین هست

sayres
پنج شنبه 06 آبان 1389, 13:27 عصر
کار mysql_real_escape_string فقط واسه حملات sql injection
این تابع چطور بانک چک می کنه؟اصلا با بانک کار داره؟

binyaft
پنج شنبه 06 آبان 1389, 13:36 عصر
اگر ما در url صفحه ' رو به صورت خام وارد دیتابیس کنیم امنیت دیتابیس میاد پایین و هکر میتونه سایت رو هک کنه
برای جلوگیری از ورود خام ' به دیتابیس از این تابع استفاده میشه

http://www.google.com/search?sourceid=chrome&ie=UTF-8&q=sql+injection

funpatogh
پنج شنبه 06 آبان 1389, 21:50 عصر
mysql_real_escape_string این تابع دقیقا باید یه دیتابیس کانکت باشید تا عمل کنه اما این
mysql_escape_string بدون اتصال به دیتابیس هم عمل escape را انجام میدهد