• 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
warning:mysql_real_escape_string
#1
سلام . وقتتون بخیر باشه.
من از این تابع برای چک کردن مقادیر ورودی تو چند صفحه استفاده کردم ( فکر میکنم یکی از کاربران این انجمن اینو معرفی کرده بودند )
کد:
<?php
function AntiInject($Source)
{
if(is_numeric($Source)) return $Source;
$Source = htmlspecialchars(trim($Source ), ENT_QUOTES, 'UTF-8');
if(! get_magic_quotes_gpc() ) {
$Source = addslashes($Source);
}
return mysql_real_escape_string(stripslashes($Source));
}
?>
ورودی هام هم به این شکله :
کد:
$article_id =AntiInject($_POST['idhide']);
        $name =AntiInject($_POST['tfname']);
        $site =AntiInject($_POST['tfsite']);
        $ccomment =AntiInject($_POST['tfcomment']);
        $comment_date=AntiInject(pdate('Y-m-d'));
ولی با اینکه درج صورت میگیره اما این وارنینگ اتفاق میفته:
Warning: mysql_real_escape_string() [function.mysql-real-escape-string]: A link to the server could not be established in C:\xampp\htdocs\mycode\My-Site\function\check.php on line 9
اولین ورودی که عددی هست درج میشه ولی مابقی تهی درج میشن.
علت چیه ؟ یعنی چی اتصال به سرور برقرار نیست ؟‍! اگر اتصال برقرار نباشه که درج صورت نمیگیره !!!
من اینو جاهای دیگه هم استفاده کردم ، ولی فقط تو این صفحه اتفاق افتاده.
ممنون.
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#2
قبل از این که ار این تابع استفاده کنید باید یک کانکشن به پایگاه داده ایجاد کنید
pdate را از کار بر نمیگیرید که فکر نکنم نیاز به فیلتر کردن باشه تا جایی که من میدونم ورودی های که از کار بر کرفته میشه رو فیلتر میکنن
  پاسخ
تشکر شده توسط : Reza pary_daryayi undefined
#3
نقل قول:قبل از این که ار این تابع استفاده کنید باید یک کانکشن به پایگاه داده ایجاد کنید
ممنون .. من هم همین کار رو انجام داده بودم. فایل config رو قبل از این تابع فراخوانی کردم.
نقل قول:pdate را از کار بر نمیگیرید که فکر نکنم نیاز به فیلتر کردن باشه تا جایی که من میدونم ورودی های که از کار بر کرفته میشه رو فیلتر میکنن
یعنی نباید هر چی که قراره تو دیتابیس ذخیره بشه فیلتر بشه ؟
یعنی شما متغیرهایی که با $_get که توسط کاربر هم مقداری دهی نشده ( مثلا توسط برنامه نویس مقداردهی شده) چک نمیکنید ؟
جایی خونده بودم که هر چی که قراره تو دیتابیس ذخیره بشه باید فیلتر بشه .. اگر اشتباهه بگید ممنون میشم.
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#4
ببینید ما بعضی وقت ها میایم از کاربر مقدار میگیرم مثل فرم ثبت نام که باید فیلتر بشه بعضی وقت ها میایم یک مقداری رو از طریق URL میفرستیم مثل یک ID که با GET_$ میفرستیم که باید فیلتر بشه ولی بعضی وقت ها مخوایم مثل شما یک تاریخ رو در پایگاه داده ذخیره کنیم که این مقدار رو خودمان ایجاد میکنیم و در پایگاه داده ذخیره میکنیم البته این مقادیر رو اگر از طریق URL بفرستی باید فیلتر بشه.
درکل ضرری نداره فیلتر بکنی خیالت راحت میشه که نقطه ضعفی نداری
  پاسخ
تشکر شده توسط : Reza pary_daryayi
#5
در تکمیل حرفهای هیچکس :
فقط داده هایی که از سمت کاربر میان نامطمئن هستن .
همچنین نوع فیلد دیتابیس هم میتونه کمک کنه .
مثلاً یه فیلدی که قرار است مبلغ عددی باشه از نوع int تعریف بشه .
  پاسخ
تشکر شده توسط : pary_daryayi
#6
دوستان ، این مشکل حل نشد .. این خطا در چه حالت هایی رخ میده .. شاید اینطور بتونم رفع کنم. ممنونم.
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#7
مشکلی در اتصال به دیتابیس وجود داره.

نقل قول:
Note: A MySQL connection is required before using mysql_real_escape_string() otherwise an error of level E_WARNING is generated, and FALSE is returned. If link_identifier isn't defined, the last MySQL connection is used.
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط : pary_daryayi
#8
ممنونم. تو اولین پست هم گفتم ، مشکل اینه که با این که میگه مشکل در اتصال هست ، اما درج به صورت تهی اتفاق میفته!!!
ممنونم .. بازم امتحان میکنم ..
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :
#9
سورست رو بذار اینجا
هر چیزی که در جستن آنی آنی...
غایب
  پاسخ
تشکر شده توسط :
#10
مرسی آقا احسان . سعی میکنم با راهنمایی هایی که کردید حل کنم . آخه کدهام وابسته هستند به کد صفحات دیگه و اینطور باید همه رو بزارم که فکر میکنم خیلی زیاد بشه.ممنون
آرام باش ؛ توكل كن ؛ تفكر كن و سپس آستينها را بالا بزن , آنگاه دستان خداوند را خواهي ديد كه زودتر از تو دست به كار شده است.امام علي عليه السلام.
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان