الفريق العربي للبرمجةأرشيف المنتديات · 2000 – 2023
نسخة أرشيفية للقراءة فقط — التسجيل والمشاركة مغلقان، والمحتوى محفوظ كما كان.

مساعدة فى كود تصتيب برنامج

مغلق
بدأه mohammed_sayed في 16 مايو 2007 · 12 رد · 948 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

عندى مشكلة بعد ما غيرت قيمت المتغير setupللقيمة 2مشراضية تنفذ الاوامر المتعلقة بتلك الخطوةارجو المساعدة وملف السيت اب في المرفقات

montada1.rar

#2

أولا أنت حولت النموذج إلى صفحة أخرى باستخدام install.php?setup=2 وهذا تلقائيا يعني أنك يجب أن تستخدم GET بلا من POST لأن المتغير الآن سيتم نقله عن طريق عنوان الصفحة

لو أردت استخدام POST فيجب أن تضيف حقل 'input' مخفي بهذا الشكل

<input type='hiddin' name='setup' value='2' />

ثانيا في زر التنفيذ submit تذكر أن تضيف خاصية name='submit' بجانب type='submit' لأن ذلك قد يسبب مشكلة في عدم تلقي قيم POST بشكل صحيح ولأنك تحتاج لأن تتأكد من نقل المعلومة من أن زر التنفيذ قد تم الضغط عليه بالفعل من خلال الأمر isset() على هذا النحو:

if(isset($_POST['submit'])) {
أكمل هنا
} else {
شيء آخر
}

أخيرا وكنصيحة أخوية، حاول بقدر الإمكان ترتيب الكود ليكون من السهل قرائته وستستفيد من ذلك في المستقبل عندما تحتاج للتعديل أو إصلاح الأخطاء

هناك ملاحظات أخرى لترتيب عرض الصفحة سوف أحاول كتابتها في وقت لاحق لأن الوقت تأخر الآن

بالتوفيق

تم تعديل هذه المشاركة بواسطة عبدالله عيّاش في 16 مايو 2007 في 00:54

sign3.jpg
#3

جزاك الله خير الجزاء علي الافاده وشكرا بس كان عندى سؤال اخر عند استدعاء قيمة اي كائن عن طريق الوسلتين post وget نستخدم الصيغة$_post['اسم الكائن '] او $_get['اسم الكائن'] وذلك كما فعلنا في المثال السابق لكن بعض الاخوة يستخدمون طريقة مختصره وهى $اسم الكائن مباشر دون ذكر نوع الطريقةmethod لكنها لا تستجيب معى واستخدم بالضرورة الطريقة الاولي فما الحل حيث الطريقة الثانية اسهل

#4

السبب اللذي ذكرت بعدم امكانية استخدام المتغيرات بدون get أو post هو أنك تستخدم إصدارة بي اتش بي 4.2 فما فوق

حتى أسهل لك الأمر، هناك خاصية في إصدارات بي اتش بي ما قبل 4.2 اسمها register_globals وهذه الخاصية تمكنك من استقبال متغيرات النماذج بدون استخدام get أو post.

منذ الإصدارة 4.2 تم إغلاق هذه الخاصية لأنها تسبب مشكلة في الأمان حيث يستطيع المخترقون من معرفة المتغيرات الموجودة في الكود بواسطة النظر في أسماء خصائص حقول النموذج وكذلك يساعدهم في استغلالها لحقن برنامجك بالعديد من المتغيرات الأخرى وسيتطلب منك كتابة المزيد من الأوامر للحماية. لذى من الأسلم أنك تحدد المتغيرات بعد حصولك على القيم من post أو get وسيتجاهل البرنامج بقية القيم الغير محددة.

أرجو لك التوفيق

sign3.jpg
#5

شكرا علي الاهتمام بس كان في مشكلة تانية مع دالة start_session()بتعطى هذا الخطأ حيث انى استخدم سيرفر محلي اباتشي 2

Warning: session_start(): open(/tmp\sess_58919d3f7871aaa2480ae7fcbbe38b2b, O_RDWR) failed: No such file or directory (2) in D:\A1works\server\work\montada\login.php on line 3

Warning: session_start(): Cannot send session cookie - headers already sent by (output started at D:\A1works\server\work\montada\login.php:2) in D:\A1works\server\work\montada\login.php on line 3

Warning: session_start(): Cannot send session cache limiter - headers already sent (output started at D:\A1works\server\work\montada\login.php:2) in D:\A1works\server\work\montada\login.php on line 3

#6

بشكل عام، لديك خطئين، الأول أن البي اتش بي لم يستطع الوصول للملف اللذي يحفظ فيه ملفات السيشن، والثاني هو أنك استخدمت أمر print أو echo قبل استخدامك لأمر header

أحيانا يكون السبب في أن أحد الملفات اللني تعتمد عليها في تنفيذ الكود يحتوي على مساحات فارغة أسفل الملف.

ما ذكرته هو تخمين عام، أرجو دائما أن تضع لنا الكود لنتمكن من متابعة المشكلة.

بالتوفيق

sign3.jpg
#7

الكود بالمرفقات وشكرا

montada.rar

#8

عزيزي مشكلتك الوحيدة في الكود هو وجود مساحة بيضاء في أول سطر وقبل بداية الكود ?>

يجب عند استخدام session أو header أن لا يكون هناك مساحة بيضاء قبل ولا بعد الكود في نفس الملف أو في أي ملف آخر مرتبط بالصفحة.

تأكد من أنه لا توجد فراغات قبل علامة بداية الكود ?> أو بعد علامة انتهاء الكود <?

أحيانا يكون البرنامج اللذي تستخدمه لكتابة الكود يتجاهل وجود المساحات البيضاء فلا تراها، لذلك من الأسلم أن تفتح الملفات للتأكد من خلال notepad.

بالتوفيق

تم تعديل هذه المشاركة بواسطة عبدالله عيّاش في 18 مايو 2007 في 08:45

sign3.jpg
#9

جزاك الله خير لكن ما في فائدة بعد ازالت المسافات حتى انى جربت الكود

<?session_start()?>

ويعطى نفس المشكله ولكن لماذا لم يجد المجلد الذي سيضع فيه الكوكيز

#10

ارجو بعض الاحاطه علما عن الدالة session_start حيث انها لم تعمل معي ولم افهم فائدتها

#11

الحمد لله لقد وجدت الحل وهو ان الphpلم يجد مسار الtempوبالتالي يتم نعريف المسار عن طريق الدالة

session_save_path("c:\windows");
#12
session_save_path("c:\windows\temp");
#13

تصحيح صغير قد يسبب عدم تشغيل الكود السابق هو انا حرف T في Temp لابد ان يكون حرف كبير وذلك لحساسية php للاحرف الكبيرة ويكون الكود الصحيح

session_save_path("c:\windows\Temp");

هذا الموضوع مغلق.

مواضيع مشابهة