এসকিউএল প্রদর্শন করা থেকে ত্রুটি বার্তা প্রতিরোধ করুন


10

আমার সারণীতে আমি 'ডাবলিকেট এন্ট্রিগুলি ভাল কাজ করে যা প্রতিরোধ করতে' কল 1 'তে একটি সূচক তৈরি করেছি তবে ফলস্বরূপ ত্রুটি বার্তাটি যখন কোনও ব্যবহারকারীর নকল এন্ট্রি যুক্ত করার চেষ্টা করে তখন এটি আমার কাছে সুরক্ষা উদ্বেগ বলে মনে হয় কারণ এটি এসকিউএল সহ প্রদর্শন করে including টেবিল উপসর্গ।

জুমলা ত্রুটি বার্তায় এসকিউএল প্রদর্শন করা থেকে বিরত করার কোনও উপায় আছে কি?

আমি গ্লোবাল কনফিগারেশনে ত্রুটি প্রতিবেদন করার সেটিংস পরিবর্তন করার চেষ্টা করেছি তবে যতদূর আমি বলতে পারি এর কোনও প্রভাব নেই ...

উদাহরণ বার্তা:

ত্রুটি

নিম্নলিখিত ত্রুটির সাথে সংরক্ষণ ব্যর্থ হয়েছে: কী 'টেস্টকি' এসকিউএল = INSERT INTO `jML_mycomp_tbl1` (` id`, `col1`,` অর্ডারিং`, `state`,` নির্মিত_by`) ভ্যালু ('0' এর জন্য সদৃশ এন্ট্রি 'পরীক্ষা' , 'টেস্ট', '2', '1', '730')


1
আমি জুমলার কাছে নতুন, তবে আপনি একদম ঠিক বলেছেন, উত্পাদন পরিবেশে যে কোনও ইউজারল্যান্ডের ত্রুটিগুলিতে কোনও এসকিউএল থাকা উচিত নয়। কেবল সুরক্ষার জন্য নয়, কারণ এটি ব্যবহারকারীদের কাছে অর্থহীন এবং একটি খারাপ ব্যবহারকারীর অভিজ্ঞতা দেয়। উত্পাদনের পরিবেশে, display_errors(পিএইচপি সেটিং) বন্ধ করা উচিত এবং এই জাতীয় ত্রুটিগুলি কেবল আপনার সার্ভার-সাইড ত্রুটি লগটিতে লগ করা উচিত।
মিঃ হোয়াইট

কেবল কৌতূহলী, আপনি সম্ভবত এটি ইতিমধ্যে চেক করেছেন তবে কোনও ডিবাগ সেটিংস আপনার সক্ষম করে না এমনটি ঘটবে না? চেক করুন: গ্লোবাল কনফিগারেশন> ডিবাগ সিস্টেম সেটিং। চেক করুন: গ্লোবাল কনফিগারেশন> ত্রুটি প্রতিবেদন করার স্তরের। চেক করুন: প্লাগইনস> ডিবাগ প্লাগইন আপনার যদি কিছু অদ্ভুত কিছু ঘটে থাকে তবে কৌতূহলী। আমি জিজ্ঞাসা, কারণ আমি এই পড়া ছিল learn.theartofjoomla.com/developing-extensions/...
চাদ Windnagle

@ চাদউইন্ডনাগল হাই চাদ, হ্যাঁ আমি এটিকে বন্ধ করে দেওয়ার চেষ্টা করেছি কিন্তু কোন ফল
হচ্ছিল

দুঃখিত শুধু সম্পাদিত, আপনি কি আমাকে জানাতে পারবেন যে আপনি আপডেট করা সামগ্রীগুলি দেখেছেন? thnx!
চাদ উইন্ডনগেল

@ চাদউইনডনগল না আমি আপনার সম্পাদনাটি দেখিনি! আমি ত্রুটি প্রতিবেদন করার চেষ্টা করেছি তবে আমি প্লাগইন (টিপটির জন্য ধন্যবাদ) অক্ষম করার কথা ভুলে গিয়েছিলাম যা এখনই চেষ্টা করেছি কিন্তু এখনও কার্যকর হয়নি!
ডুভারগুলি

উত্তর:


6

হতে পারে আপনি ট্রাই ক্যাচ কমান্ডটি ব্যবহার করতে পারেন:

try
{
//Your code to run the SQL here 
}
catch (Exception $e)
{
$this->setError('The error message you want');
return false;
}

পরামর্শের জন্য ধন্যবাদ তবে যেহেতু আমি JTableসেরা সমাধানটি ব্যবহার করছিলাম তা হ'ল checkআমার উত্তরের মতো পদ্ধতিটি ওভাররাইড করা ।
ডুভারগুলি

এটি উত্তম উত্তর
ডেভিড অ্যাডোটয়ে

3

যেহেতু এই আচরণটি প্রতিরোধ করা সম্ভব বলে মনে হচ্ছে না, তাই আমি নিম্নলিখিত সমাধানটি প্রয়োগ করেছি। কোনও JTable checkপদ্ধতির ওভাররাইডে একটি সদৃশ চেক যুক্ত করুন :

// Check for duplicate entry
$db = JFactory::getDbo();
$query = $db->getQuery(true);

$query->select('COUNT(*)');
$query->from($this->get('_tbl'));
$query->where($db->quoteName('col1') . ' = ' . $db->quote($this->col1));

$db->setQuery($query);
$result = $db->loadResult();

if ($result) 
{
    $this->setError(" Duplicate entry for col1 = '" . $this->col1 . "'");
    return false;            
}

1

আপনার কোডটি পরিবর্তন করা উচিত যা সুনির্দিষ্টভাবে প্রথমে সদৃশটি পরীক্ষা করতে এবং ব্যবহারকারীর কাছে একটি সঠিক ত্রুটি (যা আপনি লিখেছেন) ফিরিয়ে দেয় এবং মাইএসকিউএল দ্বারা প্রত্যাবর্তিত প্রকৃত ত্রুটিটি দেখানোর উপর নির্ভর করে না।


হ্যাঁ আমি ভেবেছিলাম আমাকে এটি করতে হবে তবে আমি এখনও উদ্বিগ্ন যে জুমলা ব্যবহারকারীকে প্রদর্শিত একটি ত্রুটি বার্তায় এসকিউএল প্রদর্শন করে খুশি। নিশ্চয়ই এটি একটি সুরক্ষা উদ্বেগ ?? আমি ভাবলাম এলোমেলো টেবিল উপসর্গের পুরো পয়েন্টটি কোনও সুরক্ষা ব্যবস্থা হিসাবে? সম্ভবত সেরা অনুশীলন হ'ল আপনার নিজের ত্রুটি পরিচালনার কাজ করা কিন্তু এমন পরিস্থিতিও হতে পারে যা আপনি আগেই ভাবতে পারেন না ... আমার কাছে কিছুটা অদ্ভুত বলে মনে হচ্ছে!
ডুভারগুলি

ভাল, জুমলা! আপনার কোডটি ব্যবহারকারীকে এসকিউএল ত্রুটি বার্তাটি প্রদর্শন করে না does
আইভো

আমি একমত নই, আমার কোড ত্রুটি বার্তাটি দেখায় না তবে জুমলা কোর কোডটি এটি দেখানোর অনুমতি দেয়। আমার মতে, মূল কোডটি কোনও পরিস্থিতিতে টেবিলের উপসর্গটি প্রদর্শন করা উচিত নয় কারণ এটি একটি সুরক্ষার উদ্বেগ ...
ডুভারগুলি

আপনি কেন ইনসার্টের পরিবর্তে ইনসার্ট ইগনোর ব্যবহার করবেন না?
আইভো

ভাল পরামর্শ এবং আমি এটি করতে পারতাম তবে যেহেতু আমি ব্যবহার JTableকরছি আমি সেই checkপদ্ধতিটিকে ওভাররাইড করতে এবং সেখানে একটি সদৃশ পরীক্ষা করার জন্য আরও ঝোঁক হতে চাই । আমি ব্যবহারকারীর কাছে একটি ত্রুটি বার্তা প্রদর্শন করতে চাই, এটিতে এসকিউএল দিয়ে নয়!
ডুভারগুলি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.