PHP Beginner: هل يستخدم الممارسة القياسية لأمر EXEC؟
سؤال
أنا فقط بدأت PHP. أنا فضولي فقط إذا كانت هناك طريقة أفضل للقيام بذلك. هذا يعرض جميع البرامج النصية الخاصة بي في نفس المجلد مثل هذا البرنامج النصي.
لست متأكدًا مما إذا كان من المعتاد استخدام الأمر EXEC. لا يبدو محمولًا جدًا.
<html>
<head>
<title>My PHP Practice Scripts</title>
</head>
<body>
<center><h1>PHP Scripts</h1></center>
<?php
exec("ls -1 *.php", $output);
foreach ($output as &$tmp){
echo "<a href=\"$tmp\">$tmp</a><br>";
}
?>
</body>
</html>
المحلول
هناك وظائف دليل لمثل هذه العمليات: http://www.php.net/manual/en/ref.dir.php
نصائح أخرى
"exec" محمول beacuse هو واجهة برمجة التطبيقات! :-) ما هو غير محمول هو السلسلة التي تمثل سطر الأوامر الذي تستدعيه من خلال "exec".
في هذه الحالة ، يمكنك استخدام API PHP لقراءة الدليل. هذا محمول على كل نظام تشغيل تستخدمه على الخادم الخاص بك.
السابق: فئة دير في PHP
هل استخدام الممارسة القياسية لأمر EXEC؟
رقم باستخدام exec
إن التفاعل مع نظام التشغيل المضيف هو ممارسة غير محمولة للغاية. بالنسبة لأي موقف تقريبًا ، هناك حل مستقل لنظام التشغيل ؛ في هذه الحالة بالذات ، يمكنك العثور على جميع الملفات في الدليل الحالي مع glob
, readdir
أو scandir
.
استخدام eval
في برنامج يقبل أي شكل من أشكال مدخلات المستخدم يؤدي أيضًا إلى مخاطر أمنية خطيرة. لا يعاني برنامجك من مثل هذه المخاطر حاليًا ، لكنه أيضًا تافه للغاية.
نعم ، هناك طريقة أفضل لفعل ما تتبعه. هناك العالم أو Readdir للمبتدئين.
بقدر "الممارسة القياسية" ، سترى الكثير من هذا في PHP Land. إذا كان المطور لا يعرف قاعدة الكود الضخمة الخاصة بـ PHP جيدًا ولكنها تعرف القشرة التي سينتهي بها الأمر باستخدام exec و backticks (``) في كل مكان لإنجاز وظيفتهم. إنها ممارسة قياسية أن بعض النسبة المئوية لمطوري PHP يكرهون ، ولم تستطع النسبة المئوية الأخرى العيش بدونها. تعتاد على رؤيته.