كنت أبرمج وأضع ملفات في مشغل AppServ واضطررت لأن أبدل السيرفر (طبعا المحلي الذي في جهازي) إلى wampserver فتخرج لي أخطاء كثيرة جدا
فهل هناك اختلاف في البرمجة ؟؟؟؟
شكرا لكم
كنت أبرمج وأضع ملفات في مشغل AppServ واضطررت لأن أبدل السيرفر (طبعا المحلي الذي في جهازي) إلى wampserver فتخرج لي أخطاء كثيرة جدا
فهل هناك اختلاف في البرمجة ؟؟؟؟
شكرا لكم
السلام عليكم ... طبعا قواعد البرمجة نفسها لن تتغير و لكن الذي يتغير معك هو
الاعدادت الخاصة بالويب سيرفر (Apache) و محرك البي اتش بي (PHP Engine)
على سبيل المثال : في الـ AppServ توجد خاصية مفتوحة و هي الـ register_globals و
هذه الخاصية تمكنك من الوصول الى المباشر الى Global Arrays ... غير ان هذه الخاصية
مغلقة في الـ WAMP ... و تستطيع ان تراجع الملف php.ini داخل كلا من الـ AppServ و
الـ WAMP و تحديد تحت مجلد الـ PHP حتى تعرف الفوارق ... مثلاً في الـ WAMP تجد :
register_globals = Off
لكن في الـ AppServ تجد :
register_globals = On
السبب في ذلك ان الـ WAMP يتبع قواعد عالية في الأمنية و هو ما انصحك ان تستخدمه ...
بالتوفيق
لا اله الا الله .. محمد رسول الله
(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)
يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين
بنت اليمن كتب:السلام عليكم ... طبعا قواعد البرمجة نفسها لن تتغير و لكن الذي يتغير معك هو
الاعدادت الخاصة بالويب سيرفر (Apache) و محرك البي اتش بي (PHP Engine)
على سبيل المثال : في الـ AppServ توجد خاصية مفتوحة و هي الـ register_globals و
هذه الخاصية تمكنك من الوصول الى المباشر الى Global Arrays ... غير ان هذه الخاصية
مغلقة في الـ WAMP ... و تستطيع ان تراجع الملف php.ini داخل كلا من الـ AppServ و
الـ WAMP و تحديد تحت مجلد الـ PHP حتى تعرف الفوارق ... مثلاً في الـ WAMP تجد :
register_globals = Offلكن في الـ AppServ تجد :
register_globals = Onالسبب في ذلك ان الـ WAMP يتبع قواعد عالية في الأمنية و هو ما انصحك ان تستخدمه ...
بالتوفيق
بارك الله فيك يعني إذا ما المطلوب فعله إذا كنت مبرمج على AppServ وودت نقله على WAMP هل فقط register_globals = On
لا تؤاخذني فأنا اللغة الانكليزية لدي ضعيفة
طبعاً تستطيع ان تعدل في الاعدادات .. لكن هذا غير منصوح به ابدا ...
الافضل ان يحل هذا برمجياً ...
مثلاً الـ register_globals يفضل ان يكون Off .. السبب انه لاحقا عند رفع الموقع سيكون
في السيرفر المستضيف Off (كونه آمن اكثر) ..
لحل هذا برمجياً فإننا نستخدم المصفوفات GET او POST للوصول الى بعض الـ Global Arrays
كخلاصة : هناك حلول برمجية و من الافضل عدم تعديل بعض الخاصيات ... (يعتمد على الخاصية) :)
لا اله الا الله .. محمد رسول الله
(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)
يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين
انصحك باستخدام العملاق xampp فهو عملاق بمعنى الكلمة وعن تجربه وخبره سنه wamp هو اسوء سيرفر محلى استخدمه فى حياته يكفى اخطاءة القاتله والمستفزه مع session
جميل اخي vendetta_v25 .. لكنك تنسى هنا ان البرامج WAMP MAMP LAMP XAMP هي فقط مجرد حزم
للبرامج الثلاثة Apache, PHP Engine, and MySQL و بالتالي اذا وجهت مشكلة فهي ليست من البرنامج نفسه بمقدر
ما هي من اعدادات البرامج الثالثة ... انا لا ادري ما هي الأخطاء التالي واجهتها ، لكن اعتقد ان كل هذه المشاكل يتم حلها
برمجياً ... و بالذات اذا كانت مشاكل مع الجلسات ... هذا فقط من خلال تجاربي ... :)
بالتوفيق ...
لا اله الا الله .. محمد رسول الله
(* ربِ اجعلني مقيم الصلاة و من ذريتي ، ربنا و تقبل دعـاء *)
يا حيّ يا قيـوم ... برحمتك استغيث ... اصلح لي شأني كله و لا تكلني الى نفسي طرفة عين
السلام عليكم
بخصوص
اقتباسوعن تجربه وخبره سنه wamp هو اسوء سيرفر محلى استخدمه
بالطبع لا ، فاى اخطاء تظهر غالبا لا تكون من السيرفر المحلى ولكن تكون من الاكواد البرمجية التى تستخدمها
وكلما كثر التنبيه عن الاخطاء كلما كان افضل لك كمبرمج : حيث مع ظهور كل خطا تقوم بالبحث عن سببه لتصحيحه مما يجعل برنامج - بإذن الله تعالى - خالى من جميع الاخطاء الصغيرة والكبيرة
وبخصوص صاحب السؤال : يرجى ارفاق بعض رسائل الاخطاء لتحديد سببها
" وما توفيقى إلا بالله عليه توكلت وإليه أنيب "
-------------------------------------------------
قل : " لا حول ولا قوة إلا بالله "
-------------------------------------------------
اا الفاروق اا كتب:السلام عليكم
بخصوص
بالطبع لا ، فاى اخطاء تظهر غالبا لا تكون من السيرفر المحلى ولكن تكون من الاكواد البرمجية التى تستخدمها
وكلما كثر التنبيه عن الاخطاء كلما كان افضل لك كمبرمج : حيث مع ظهور كل خطا تقوم بالبحث عن سببه لتصحيحه مما يجعل برنامج - بإذن الله تعالى - خالى من جميع الاخطاء الصغيرة والكبيرة
وبخصوص صاحب السؤال : يرجى ارفاق بعض رسائل الاخطاء لتحديد سببها
رائع كلامك لكن حتى لا أصاب أنا الآخر بالإبتعاد عن wamp
عندي مشكلة بسيطة في هذا الكود على wamp فقط
<?php
if ($_POST['submit']!=''){
include_once('class.php');
$view = new calculator($_POST['n1'],$_POST['n2']);
if ($_POST['submit']=='+'){
echo $view->add();
}elseif ($_POST['submit']=='-'){
echo $view->subtract();
}elseif ($_POST['submit']=='*'){
echo $view->multiply();
}elseif ($_POST['submit']=='/'){
echo $view->devide();
}
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="n1" /><br />
<input type="text" name="n2" /><br />
<input type="submit" name="submit" value="+" />
<input type="submit" name="submit" value="-" />
<input type="submit" name="submit" value="*" />
<input type="submit" name="submit" value="/" />
</form>
<?php } ?>طبعا هناك ملف مطلوب وهو class.php
وهذا هو الكود الخاص به
<?php
class calculator{
function __construct($a,$b){
$this->a = $a;
$this->b = $b;
}
function add (){
return $this->a + $this->b ;
}
function subtract (){
return $this->a - $this->b;
}
function multiply (){
return $this->a * $this->b;
}
function devide (){
return $this->a / $this->b;
}
}
?>المشكلة هي Notice: Undefined index: submit in C:\wamp\www\training\construct\view.php on line 3
مع العلم أن الكود يعمل جيدا على appserv وتم رفعه على الإنترنت ويعمل جيدا بدون إظهار المشكلة
وكذلك الكود ينفذ المطلوب منه في وجود الخطأ دون أخطاء
أرجو الإفادة مع العلم أن اصدار wamp Version 2.1
واصدار php المثبت معه هو 5.3.5
رجاء الإفادة لأني أجده أفضل من appserv ولكني قد أبحث عن بديل آخر في حالة استمرار المشكلة
وشكرا
السلام عليكم..
هذا الخطأ مجرد ملاحظة لا تؤثر على سير البرنامج بأي شكل. فقط توضح لك أنك استخدمت متغير غير معرف، أو عنصر غير معرف ضمن مصفوفة..
جرب هذا الكود:
<?php
if (isset($_POST['submit']) and $_POST['submit'] != ''){
include_once('class.php');
$view = new calculator($_POST['n1'],$_POST['n2']);
if ($_POST['submit']=='+'){
echo $view->add();
}elseif ($_POST['submit']=='-'){
echo $view->subtract();
}elseif ($_POST['submit']=='*'){
echo $view->multiply();
}elseif ($_POST['submit']=='/'){
echo $view->devide();
}
}else{
?>
<form action="<?php echo $_SERVER['PHP_SELF'] ?>" method="post">
<input type="text" name="n1" /><br />
<input type="text" name="n2" /><br />
<input type="submit" name="submit" value="+" />
<input type="submit" name="submit" value="-" />
<input type="submit" name="submit" value="*" />
<input type="submit" name="submit" value="/" />
</form>
<?php } ?>أو يمكنك تعديل الاعداد "error_reporting" إلى القيمة "E_ALL & ~E_NOTICE" أي أن تكتب مكان الحالي:
error_reporting = E_ALL & ~E_NOTICE
و الحل الثاني سيريحك من أخطاء الملاحظات بشكل كامل - غير أنها قد تفيدك أحيانًا!
شكرًا..
أخيsitesmaker مشكور على متابعتك الرائعة
بالفعل لا أريد إلغاء أخطاء الملاحظات
لكن وجود خطأ في حد ذاته بالنسبة لمبتدئ ...
لكن السؤال ما فائدة استخدام isset كشرط بالإضافة إلى شرط النفي الذي استخدمته ؟؟؟!!!
أقصد ما الحكمة من استخدامهما سوية بالرغم أنهما يؤيدان نفس الغرض تقريبا
لأني أظن أنه من الأفضل تقليل حجم الكود أثناء البرمجة
وشكرا لك
السلام عليكم..
PHP - مثل أغلب لغات البرمجة - تتجاهل عند استخدام and و عدم تحقق الشرط الأول، فإنها لا تتحق من الشرط الثاني.. الواقع أن دالة isset ليست تمامًا مثل اختبار المتغير على أنه نص فارغ أو حتى null، دالة isset تتحقق من وجود المتغير أصلًا، و في حالة عدم الضغط على submit فإن المتغير يكون غير معرفًا، و بالتالي عند تضمينه في مقارنة (== '') يصدر خطأ بأنك قد استخدمت متغير غير موجود! أما isset فإنها دالة مميزة (و كلمة محجوزة ضمن اللغة) و هي الوحيدة القادرة ضمن PHP على التأكد من وجود متغير أو عدم وجوده، و بما أنها مخصصة لذلك فإنها لا تصدر أخطاءً عند استخدامها.. و أما بالنسبة لاستخدامي الشرطين isset و المقارنة في الكود، فـisset تتأكد من وجود المتغير (و تمنع ظهور أي أخطاء)، و المقارنة تتأكد من أن المتغير حتى إذا كان موجودًا قيمته ليست فارغة.. فقد يكون المتغير موجودًا لكن في نفس الوقت فارغ القيمة!
شكرًا..
sitesmaker كتب:السلام عليكم..
PHP - مثل أغلب لغات البرمجة - تتجاهل عند استخدام and و عدم تحقق الشرط الأول، فإنها لا تتحق من الشرط الثاني.. الواقع أن دالة isset ليست تمامًا مثل اختبار المتغير على أنه نص فارغ أو حتى null، دالة isset تتحقق من وجود المتغير أصلًا، و في حالة عدم الضغط على submit فإن المتغير يكون غير معرفًا، و بالتالي عند تضمينه في مقارنة (== '') يصدر خطأ بأنك قد استخدمت متغير غير موجود! أما isset فإنها دالة مميزة (و كلمة محجوزة ضمن اللغة) و هي الوحيدة القادرة ضمن PHP على التأكد من وجود متغير أو عدم وجوده، و بما أنها مخصصة لذلك فإنها لا تصدر أخطاءً عند استخدامها.. و أما بالنسبة لاستخدامي الشرطين isset و المقارنة في الكود، فـisset تتأكد من وجود المتغير (و تمنع ظهور أي أخطاء)، و المقارنة تتأكد من أن المتغير حتى إذا كان موجودًا قيمته ليست فارغة.. فقد يكون المتغير موجودًا لكن في نفس الوقت فارغ القيمة!
شكرًا..
رائع يا الغلا وأعجبني الحوار معك
جزاك الله خيرا على ما قدمت من معلومات مفيدة جدا
sitesmaker كتب:السلام عليكم..
PHP - مثل أغلب لغات البرمجة - تتجاهل عند استخدام and و عدم تحقق الشرط الأول، فإنها لا تتحق من الشرط الثاني.. الواقع أن دالة isset ليست تمامًا مثل اختبار المتغير على أنه نص فارغ أو حتى null، دالة isset تتحقق من وجود المتغير أصلًا، و في حالة عدم الضغط على submit فإن المتغير يكون غير معرفٍ، و بالتالي عند تضمينه في مقارنة (== '') يصدر خطأ بأنك قد استخدمت متغير غير موجود! أما isset فإنها دالة مميزة (و كلمة محجوزة ضمن اللغة) و هي الوحيدة القادرة ضمن PHP على التأكد من وجود متغير أو عدم وجوده، و بما أنها مخصصة لذلك فإنها لا تصدر أخطاءً عند استخدامها.. و أما بالنسبة لاستخدامي الشرطين isset و المقارنة في الكود، فـisset تتأكد من وجود المتغير (و تمنع ظهور أي أخطاء)، و المقارنة تتأكد من أن المتغير حتى إذا كان موجودًا قيمته ليست فارغة.. فقد يكون المتغير موجودًا لكن في نفس الوقت فارغ القيمة!
شكرًا..