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

نقل المتغيرات من function إلى اخر

مغلق
بدأه احمد غريب في 31 يناير 2005 · 6 رد · 613 مشاهدة · في منتدى تطوير المواقع بـ PHP
مشاركة: واتساب X فيسبوك تيليجرام
#1 صاحب الموضوع

السلام عليكم

انا مازلت تلميذ فى php لذالك ارجو ان لا تضحكو على .

السؤال

كيف يمكننى ان انقل المتغيرات التى إنشئها بواسطة $_SESSION بين ال functions :

على سبيل المثال:

function login($userid, $password)
{
  $conn = dbconnect();
  if(!$conn)
    return 1;
  $result = mysql_query("select * from org where logname='$userid' and pass=MD5('$password')");
  $num =mysql_num_rows($result);
  if(!$num)
    return 2;
  if($num==1){
    $_SESSION['user'] = $userid;
	$_SESSION['time'] = time();
	$prevtmp = mysql_query("select AccessLevel from org where logname='$userid'");
	$prev=mysql_result($result,0,"AccessLevel");
	$_SESSION['prev'] = $prev;
	return 3;
  }
  return 4;
}

واريد ان استدعيها على النحو التالى:

function Level(){
if($_SESSION['prev']=='a')
return 1;
return 0;
}

ولكن المشكله ال function الثانى لا يتعرف على prev .

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#2

السلام عليكم

تم حل المشكله بحمد الله والحل هو:

<?
function session_check(){
	if(!session_id()){
    session_start();
	}
}
?>

المشكله الجديده هى : كيف يمكننى إستدعاء function من رابط,

على سبيل المثال لدى رابط إسمه next page وعند النقر عليه اريده ان يستدعى function بدلاً من إستدعاء صفحه.

هل هذا ممكن ام ليس ممكن.

والسلام

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

#3
اقتباس
على سبيل المثال لدى رابط إسمه next page وعند النقر عليه اريده ان يستدعى function بدلاً من إستدعاء صفحه.

أى شئ ممكن أخى أحمد :)

رغم أننى لم أستخدم دالة (أحب أبعثر المتغيرات :) ) إلا إنه الفكرة واحدة:

<a href=$var || function name>Next page</a>

عمرى ما جربتها إلا مع متغيرات أو كأنها فورم استدعى به عن طريق وصلة وفى كل الأحوال بتنفع :)

#4
احمد غريب كتب:
السلام عليكم

تم حل المشكله بحمد الله والحل هو:

<?
function session_check(){
	if(!session_id()){
    session_start();
	}
}
?>

المشكله الجديده هى : كيف يمكننى إستدعاء function من رابط,

على سبيل المثال لدى رابط إسمه next page وعند النقر عليه اريده ان يستدعى function بدلاً من إستدعاء صفحه.

هل هذا ممكن ام ليس ممكن.

والسلام

أوالاً: بخصوص المشكلة..

اعتقد ان الحل هو انك تقوم بكتابة :

global $_SESSION;

في بداية الدالة.

عموماً.. بما ان حلك شغال.. استمر معه.. ولكن قرأت في موقع ال PHP انه يفضل استخدام $_SESSION أو دوال ال sessions مثل session_start.

بمعني انه يفضل اما ان تستخدم المتغير العام $_SESSION او تستخدم دوال ال sessions مثل session_start و session_register... الخ

ثانياً:

بالنسبة لعملية استدعاء دالة عند الضغط علي زر معين.. فذلك غير ممكن تماماً.

لماذا ؟ لأن كود ال php لا يعمل بذاكرت حاسوبك.. انما يتم تنفيذه علي الخادم ويقوم الخادم بنقل المخرجات اليك.

أي انه عند اطلاعك علي الصفحة من خلال متصفحك.. يكون كود ال php انتهي وخلص وشبع تخليص :)

لذلك فعندما تضغط علي زر Next Page.. كيف سيقوم المتصفح بتنفيذ دالة غير موجودة بالذاكرة اساسا ;) ? (حيث انه كما اتفقنا.. ملف ال php ينتهي ويخرج من الذاكرة فور وصوله لآخر سطر بالكود).

وعموماً.. اعتقد انه دائماً هناك حل بديل. اخبرنا بما تحاول عمله وسنخبرك بالحل المناسب.

وبالتوفيق :)

- عمرو

#5
اقتباس
بالنسبة لعملية استدعاء دالة عند الضغط علي زر معين.. فذلك غير ممكن تماماً.

لماذا ؟ لأن كود ال php لا يعمل بذاكرت حاسوبك.. انما يتم تنفيذه علي الخادم ويقوم الخادم بنقل المخرجات اليك.

أي انه عند اطلاعك علي الصفحة من خلال متصفحك.. يكون كود ال php انتهي وخلص وشبع تخليص

لذلك فعندما تضغط علي زر Next Page.. كيف سيقوم المتصفح بتنفيذ دالة غير موجودة بالذاكرة اساسا  ? (حيث انه كما اتفقنا.. ملف ال php ينتهي ويخرج من الذاكرة فور وصوله لآخر سطر بالكود).

كلام صحيح 100%

لذلك تكون الدوال إما معتمده على قاعدة بيانات أو فورم أو أى شئ للتنفيذ على نفس الصفحة ...

مع الأخذ بعين الاعتبار أنه ممكن عمل تغيير مسار redirection للصفحة الوارد إليها المعلومات أو حفظ أى متغيرات فى السيشن أو كوكى :)

#6

السلام عليكم

 أوالاً: بخصوص المشكلة..
اعتقد ان الحل هو انك تقوم بكتابة :
global $_SESSION;
في بداية الدالة.

اخى Chaos اشكرك واشكر الاخ انور على الرد, بالنسبه ل global فتعبر php كل session فى الاصل global لذالك استدعائها لا يؤثر فى شئ.

وكما تلاحظ انا استخدم الداله session_start() ولكن المشكله هى عند إستدعائها للمره الثانيه يصدر warning, لذالك استخدم الداله session_id() للتاكد اولاً اننى لم اقم باستدعاء الداله من قبل.

ي انه عند اطلاعك علي الصفحة من خلال متصفحك.. يكون كود ال php انتهي وخلص وشبع تخليص

بالفعل هذا ما توقعته ولكن كنت اريد التاكد منه, إذاً إذا اردت ان احتفظ بمتغير فعلى ان استخدم $_SESSION وإذا اردت ان استدعى رابط فلا بد من ربط الرابط بصفحه ولا يمكن ربطه ب function .

الان اتضحت الصوره شكراً جزيلا ولى عوده معى اسئله اخرى إن شاء الله تعالى.

والسلامً

لا إله إلا الله محمد رسول الله

busbar : يجب ان تدرك انه هناك حد ادنى للمعرفة المطلوبة قبل البدء في عمل أي شئ.

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

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

عدد الزوار حالياً

المتواجدون خلال آخر دقيقتين · يتحدّث كل ٣٠ ثانية

—الإجمالي—أعضاء مسجّلون—زوار بدون تسجيل

جارٍ التحقق من المتواجدين…