PDA

View Full Version : mysql_real_escape_string()



هزاره سوم
پنج شنبه 13 شهریور 1393, 16:53 عصر
سلام
وقتی پروژه رو اجرا گرفتم موقع لاگین یا رجیستر یا... زمانی که دیتا فیلتر میشه این ارور میاد


Warning: mysql_real_escape_string(): Access denied for user 'root'@'localhost' (using password: NO) in /home/u628806663/public_html/includes/inc_functions.php on line 14 Warning: mysql_real_escape_string(): A link to the server could not be established in /home/u628806663/public_html/includes/inc_functions.php on line 14 Warning: mysql_real_escape_string(): Access denied for user 'root'@'localhost' (using password: NO) in /home/u628806663/public_html/includes/inc_functions.php on line 14 Warning: mysql_real_escape_string(): A link to the server could not be established in /home/u628806663/public_html/includes/inc_functions.php on line 14


وقتی این تابع رو حذف میکنم اکی میشه : mysql_real_escape_string()

چرا ؟؟

arash691
پنج شنبه 13 شهریور 1393, 17:10 عصر
سطح دسترسی root تو هاست اشتراکی !

حالا این به کنار باید کدها رو بذاری ... البته فکر میکنم مشکل از یک جای دیگه باشه

هزاره سوم
پنج شنبه 13 شهریور 1393, 23:23 عصر
سطح دسترسی root تو هاست اشتراکی !

حالا این به کنار باید کدها رو بذاری ... البته فکر میکنم مشکل از یک جای دیگه باشه

متوجه منظورتون نشدم!

این تابعی هست که باهاش دیتا فیلتر میشن


function filter($data,$name)
{
$data = trim($data);
$data = htmlspecialchars($data, ENT_QUOTES, 'UTF-8');
$data = strip_tags($data);
//$data=filter_input(INPUT_POST,$name, FILTER_SANITIZE_STRING);
$data = mysql_real_escape_string($data);
$data = htmlentities($data);
$data = nl2br($data);

return $data;
}

arash691
پنج شنبه 13 شهریور 1393, 23:43 عصر
به احتمال زیاد اتصال برقرار نیست ...

MMSHFE
جمعه 14 شهریور 1393, 00:30 صبح
فایل تنظیمات پروژه خودتون رو چک کنید. اتصال به دیتابیس برقرار نیست. احتمالاً با همون تنظیمات localhost دارین کار میکنید و روی هاست، تغییرشون ندادین.

هزاره سوم
جمعه 14 شهریور 1393, 00:35 صبح
خیر این خط از کد رو کامنت میکنم
و با همون تنظیماتی که قبلا بود ( مربوط به هاست) سایت رو چک میکنم همه چی درسته
ولی بعد که از حالت کامنت در میارم ارور میده!

MMSHFE
جمعه 14 شهریور 1393, 00:50 صبح
دقت کنید که این دستور نیاز به اتصال داره و اگه اتصالی وجود نداشته باشه سعی میکنه با فراخوانی mysql_connect بدون پارامتر (یعنی شناسه کاربری root و رمز خالی و سرور localhost) وصل بشه:

The MySQL connection. If the link identifier is not specified, the last link opened by mysql_connect() (http://ir1.php.net/manual/en/function.mysql-connect.php) is assumed. If no such link is found, it will try to create one as if mysql_connect() (http://ir1.php.net/manual/en/function.mysql-connect.php) was called with no arguments. If no connection is found or established, an E_WARNING level error is generated.
پس قبل از استفاده از این دستور همیشه مطمئن بشین که اتصال به MySQL برقرار شده باشه.

هزاره سوم
جمعه 14 شهریور 1393, 01:04 صبح
نکته خوبی فرمودین
چک کردم بخش اتصال به دیتابیس قبلش انجام میشه
راستش از PDO برای اتصال به دیتابیس استفاده کردم..
الان از این لینک (http://stackoverflow.com/questions/18378976/php-mysql-real-escape-string-access-denied-for-user-www-datalocalhost) یک چیزی رو متوجه شدم ...ظاهرا این تابع توی اتصال از طریق PDO کار نمیکنه و دیتا از طریق توابع پی دو فیلتر میشن!
درسته؟

MMSHFE
جمعه 14 شهریور 1393, 08:52 صبح
اوه! خوب مسلمه کار نمیکنه. این تابع حتی توی اتصال ازطریق MySQLi هم کار نمیکنه. توی PDO اگه از Parameterized Query و Prepered Statement استفاده کنید، نیاز به Escape نیست ولی اگه کوئری دستی میزنید، با دستور PDO::quote (http://ir2.php.net/manual/en/pdo.quote.php) مقادیر موردنظر رو Escape کنید.