نظرة سريعة على مجريات يوم سوالف
بعض التغييرات في أماكن وأسلوب الإعلان في سوالف سوفت

 

العودة   سوالف سوفت > قسم تطوير وبرمجة المواقع للمتقدمين > PHP
المدوّنات البحث مشاركات اليوم اجعل كافة المشاركات مقروءة

رد
 
LinkBack أدوات الموضوع
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#1 (permalink)  
مشكلة يرجا المساعدة "يبدو انت ال internet explorer لا يستقبل الكوكيز يرجا المساعدة!!!


السلام عليكم

قمت ببرمجت سكربت مدعوم بلوحة تحكم (المشكلة في تسجيل الدخول!!!!!!!)

الان الذي عملته هو تسجيل الدخول من خلال وضع session بداخل cookie ولاكن المشكلة هي ان المتصحف ال internet explorer الغبي لا يستقبل الكوكيز....

عند محاول تسجيل الدخول في لوحة التحكم وتم ادخال المعلومات الصحيحة لا يتم زرع الكوكيز ويعيدك المتصحف الى حيث كنت اي سوف يرعيدك الى فورم ادخال اسم المستخدم وكلمة المرور!!!!! طبعا هذه المشكلة فقط مع متصحف internet explorer فمع المتصحفات الاخرى مثل firefox فتم تسجيل الدخول من غير اي مشاكل!!!!!!!!!!!
أهل هناك كود يجب عمله ليعمل مع ال internet explorer ؟؟؟؟

هذا الكود هو الذي استخدمته في صنع الكعكات والجلسات cookies & session

كود PHP:

    $name 
"demo";
    
$id 1;
    
$sections ="قسم للتجربة";

    function 
create_session($name,$id,$sections)
        {
        
        
$_SESSION["admin"] = md5($name);
        
$_SESSION["id"] = md5($id);
        
$_SESSION["section"] = $sections;

        
setcookie("admin"$_SESSION['admin'], time()+3600);
        
setcookie("id"$_SESSION['id'], time()+3600"/");
        
setcookie("section"$_SESSION['section'], time()+3600);
        
        } 
ملاحظة جربت اضافة / لزراعة الكوكيز ايضا ولاكن لم تفيد بشيء!!!!!
جربت هذا الكود ايضا

كود PHP:


    
//function to creat sessions and store it in cookies

    
$name "demo";
    
$id 1;
    
$sections ="قسم للتجربة";

    function 
create_session($name,$id,$sections)
        {
        
        
$_SESSION["admin"] = md5($name);
        
$_SESSION["id"] = md5($id);
        
$_SESSION["section"] = $sections;

        
setcookie("admin"$_SESSION['admin'], time()+3600"/");
        
setcookie("id"$_SESSION['id'], time()+3600"/""/");
        
setcookie("section"$_SESSION['section'], time()+3600"/");
        
        } 
وللعلم اني مستخدم هذه الدالة ob_start(); وايضا session_start(); وطبعا تسجيل الدخول والخروج 100% والدليل انه يعمل مع المتصحفات الثانية مثل firefox ولاكنه لا يعمل مع internet explorer فما رايكم العمل؟؟؟؟
يبدو ان هناك طريقة اخرة لتخزين الكوكيز في الinternet explorer بدل setcookies


فيرجا منكم افادتي لاني لا استطيع الاستمرار قبل حل هذه المشكلة !!!!!!!!

بارك الله فيكم
وشكرا لكم






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 01:53 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#2 (permalink)  

المعلوم ان الاكسبلورار يعطي بعض المتاعب وخاصة مع الاصدار الجديد، حاول ان تعمل الاتي
تاكد ان الشرط error_reporting لها القيمة E_ALL اي
error_reporting = E_ALL

والشيء الثاني تأكد ان المتصفح لم يرسل اي ناتج للمتصفح.. يعني لا يودج اي مسافات او اي حرف قد ارسل للمتصفح قبل عملية زرع الكوكيز.

على الاقل سيعطيك عملية ال error_reporting = E_ALL بعض الملاحظات. اذا لم تعرف ما معنى الملاحظات اعطينا ماهو على الشاشة لنساعدك

والسلام






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 26-12-2006, 07:44 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#3 (permalink)  

السلام عليكم

صراحة لم افهم شئ !!!!!!!

error_reporting = E_ALL كيف اعملها ؟؟؟

وماذا تعني
اما اذا تريد اعطيك ما الذي يظهر على الشاشة عندي ممكن بس مش للعامة ممكن ارسلك الرابط private

وشكرا جزيلا






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 08:06 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#4 (permalink)  

مجددا
قمت بوضع في صفحة تسجيل الدخول والكوكيز التالي

error_reporting(E_ALL);

فطلع عندي خطأين الاول هو

Notice: Undefined index: do in /home/.right/loginfilepath on line 16

وفي سطر 16 يوجد
$do=trim($_GET['do']);

والخطأ الثاني هو
Notice: Undefined variable: PHP_SELF in /home/.right/loginfilepath on line 227

والسطر 227 يحتوي على

<form method=\"post\" action=\"$PHP_SELF?do=login\" name=\"login\">


اهل هذا يساعد ؟؟؟ واذا تريد ضيفني على المسنجر اخي العزيز webmaster@palintefada.com

مشكور






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 08:19 AM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#5 (permalink)  

نعم هذا كان قصدي.. لانك قد اخفيت الاخطاء من الشاشة .. لذالك قلت لك عمل ذالك

الحل للسطر 16 هو

كود PHP:
$do=(isset($_GET['do'])) ?  trim($_GET['do']) : ''
وللسطر 227

كود PHP:
 <form method="post\" action=\"".$_SERVER['PHP_SELF']."?do=login" name="login\"> 
اذا انحلت معاك المشكة .. تمام .. واذا ما انحلت . ارسل السكربت كلة .. يعني الصفحة وما تاخذة من مدخلات






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 26-12-2006, 02:16 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#6 (permalink)  

السلام عليكم اخي على ردك

اولا استبدال الاكواد ساعد في تفادي الاخطاء التي ظهرت بعد عمل ال E_ALL

ولاكن مشكلة الكوكيز لم تنحل!!!!!!!

ياريت يا اخي اتوضحلي السطر الاول الذي انت قمت بكتابته ؟ :
شفتهم كثير وكانها اداة شرط ولاكن لا اعمل ماذا تعني


اما الان فقد قمت بارفاق لك ملفين ال class و ملف استدعاء ال class

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

وبارك الله فيك عزيزي






الملفات المرفقة
نوع الملف: zip elkaser.zip‏ (2.2 كيلوبايت, المشاهدات 22)
__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 08:04 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#7 (permalink)  

الحمد الله ان الكود ماعدة اي مشاكل.. ولكن هناك شرط لزرع الكوكيز .. وهي عدم استعمال الداله ()header عندما تستخدم الداله setcoockie فهذا سيودي الى ضياع الامر قبل اللوصول الى المتصفح فمثلا لا تستعمل

كود PHP:
header("Location:..."
استخدم البديل
كود PHP:
header("Set-Cookie: cookiename=cookievalue; expires=18-Oct-2008 GMT; path=/; domain=.www.domain.com"); 
فدعك من الامر setcoockie اذا اردت ان ترسل الاخ الى صفحة ثانية

اما بخصوص السطر 16 اضن ان هذا الكود سيعطيك الاجابة
كود PHP:

    
if($sky == 'blue'){
        
$time 'day';
    }
    else{
        
$time 'night';
    }

    
// same as

    
$time = ($sky == 'blue') ? 'day' 'night'






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 26-12-2006, 08:35 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#8 (permalink)  

السلام عليكم
شكرا اخي العزيز للتوضيح
ولاكن اهل الدالة التي قمت بكتابتها header تستخدم بدل من setcookie ???
واهل من الصحيح وضعtime ()+3600 لتنتهي بعد ساعة بدل من 18-Oct-2008 GMT

والdomain هذا لمذا يتم وضعه ؟
وشكرا






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 08:53 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#9 (permalink)  

الدالة لا تستخدم بدل الsetcookie بل هي حل لمشكلة التنقل او التحويل بطريقة ("header('location: www.xxx
لان التنقل يحذف ما فعلتة مع الsetcookies فالحل هو وضع المعلومات داخل الدالة header نفسها

ال 3600 هي عبارة عن 60 ثانية في 60 دقيقة ولكن في تكوين الشكل المناسب للوقت الموجود في الدالة استخدم الامر
كود PHP:

gmdate
('D, d-M-Y H:i:s \\G\\M\\T'time()+(60*60))) 
ان شاء لله قد افدتك في الموضوع






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 26-12-2006, 09:06 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#10 (permalink)  

لماذا لا تستخدم هذة الدالة .. وجدتها في احدى الردود على موقع الPHP الرسمي

كود PHP:

<?php
function set_cookie($name$value ''$expires 0$path ''$domain ''$secure false$http_only false)
{
   
header('Set-Cookie: ' rawurlencode($name) . '=' rawurlencode($value)
                         . (empty(
$expires) ? '' '; expires=' gmdate('D, d-M-Y H:i:s \\G\\M\\T'$expires))
                         . (empty(
$path)    ? '' '; path=' $path)
                         . (empty(
$domain)  ? '' '; domain=' $domain)
                         . (!
$secure        '' '; secure')
                         . (!
$http_only    '' '; HttpOnly'), false);
}
?>






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 26-12-2006, 09:13 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#11 (permalink)  

السلام عليكم
شكرا اخي العزيز للتوضيح
انا محتاج لتمرير 3 قيم للكوكيز وليس واحد

يعني اريد تمرير
admin
و
id
و
section

وبعدها اريد تمرير المستخدم الى ملف اسمه frames.php

جربت العديد من الاكواد ولاكن لا تنفعني

وهذا الكود الي وصلتلو
فياريت تعديل الكود ليعمل

كود PHP:
Header("Set-Cookie: section=".$_SESSION['section'].", id=".$_SESSION['id'].", admin=".$_SESSION['admin']."; expires=time()+3600; path=/; domain=frames.php"); 
وشكرا






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 09:26 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#12 (permalink)  

السلام عليكم

اسف ما كنت فاهم قصدك ولاكن الان مشي الحال الحمد لله

قمت بتعديل دالة زرع الكوكيز هنا

كود PHP:

    
function create_session($name,$id,$sections)
        {

        
        
$_SESSION["admin"] = md5($name);
        
$_SESSION["id"] = md5($id);
        
$_SESSION["section"] = $sections;

        
setcookie("admin"$_SESSION['admin'], time()+3600);
        
setcookie("id"$_SESSION['id'], time()+3600"/");
        
setcookie("section"$_SESSION['section'], time()+3600);
        

Header("Set-Cookie: admin=".$_SESSION['admin']."; path=/; domain=.".$homeurl."");
Header("Set-Cookie: section=".$_SESSION['section'].";  path=/; domain=.".$homeurl."");
Header("Set-Cookie: id=".$_SESSION['id'].";  path=/; domain=.".$homeurl."");
Header("Location: frames.php");

        } 

ولاكن هناك مشكلة لن تحل وهي:

عندي فورم وفيه العديد من الحقول وكل الحقول مطلوبة يعني اذا لم تكمل احد الحقول سوف تظهر لك رسالة خطا لم تكتب (مثلا) عنوان المقال وبكون زر عودة للخلف

الان عند العودة الى الخلف يكون كافة الخانات فارغة!!!!!!!!!!!! فكل الذي تم كتابتح يحذف!!! وطبعا هذي مشكلة

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


وشكرا جزيلاااااااااااا






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 26-12-2006, 10:22 PM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#13 (permalink)  

؟؟؟؟؟؟






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 27-12-2006, 07:13 PM
رد مع اقتباس
Moderator
تاريخ التسجيل: Aug 2004-
#14 (permalink)  

السلام .. معليش على التأخر .. الوقت عندنا +GMT8 .. يعني الفرق بيني وبينك كبير

المهم .. ملاحظة بسيطة الدالة header لازم تبدء بالحرف الصغير وليس مثل ماكتبتة Header

انت تريد ان تقول لزائر اذا كان احد الصناديق ناقصة او غير مكتملة يوجد حلان
1- او اذا رايت غلط .. اعمل include للصفحة التي تحتوي على الفورم واستخدم isset .. على الاقل لن تضطر لعمل نقل البيانات عن طريق السيشن session

2- الحل الثاني هو ارسال جميع المعطيات POST_$ الى مصفوفة موجودة في الsession ثم توجة الى الصفحة الاولى و تستعمل الدالة isset لعمل ذالك






__________________
هلابي افضل المواقع العربية تصميماً
انصح باستخدام ابونتو
hilaby غير متواجد حالياً   قديم 28-12-2006, 08:21 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#15 (permalink)  

السلام عليكم
شكرا جزيلا اسف للتاخير كان جهازي عطلان الان فقط انتهيت من العمل على اصلاحو

على اي حال بالنسبة للخيار الاول لم افهم قصدك!!!
اما الخيار الثاني فكير ممكن تخزين المعلومات في مصفوفة واستخدامها ؟؟؟

ملاحظة ابحث عن الطريقة الاكثر عملية والمستخدمة او المتعارف عليها

اما لا ادري اذا قمت باستخدام الكوكيز فقط فتعمل 100% اما هنا احاول دمج الكوكيز و السشن فلم يعمل لمذا اهل هو الجلسات ؟؟؟؟؟؟؟





وهناك مشكلة ثانية

يبدو ان الكوكيز صالحة فقط مع الصفحة التي تم التسجيل فيها!!!!!

يعني لو اني فتح متصحف اكسبلورر وسجلت الدخول على السكربت 100% وبينما انا اتصحف هذه الصفحة قمت بفتح صفحة جديدة للكسبلورر ملاحظة من مش file/new لا بل فتحها عن طريق الضغط على ايقونة ال explorer على سطح المكتب مثلا وحاول الذهاب الى رابط اللوحة فلن تستطيع الدخول فسوف يطلب منك التسجيل مجددا ملاحظة انا قمت بوضع كود ليفحص اذا اكوكيز موجودة فاذا موجودة يتم نقله اوتوماتيكيا وحتى لو نقلت نفسك يدويا مثلا الى صفة frames.php فسوف يعيدك الى صفحة التسجيل



ما الحل برأيك ؟؟؟؟؟؟

وشكرا
وشكرا






__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 28-12-2006, 10:40 AM
رد مع اقتباس
عضو فعال جدا
تاريخ التسجيل: Jun 2003-
#16 (permalink)  

يرجا ايجاد الحل.....................................








__________________


عاشت فلسطين وعاشت المقاومة
http://www.palintefada.com/arabic
http://www.palissue.com/arabic
موقع انتفاضة فلسطين - موقع القضية الفلسطينية
الكاسر

elkaser غير متواجد حالياً   قديم 29-12-2006, 08:00 PM
رد مع اقتباس
عضو نشيط
تاريخ التسجيل: Jun 2003-
#17 (permalink)  







__________________
إستخدم ملفك الخاص لكتابة توقيعك
gabal غير متواجد حالياً   قديم 01-01-2007, 09:08 PM
رد مع اقتباس
رد


أدوات الموضوع

تعليمات المشاركة
لا تستطيع كتابة مواضيع
لا تستطيع كتابة ردود
لا تستطيع إرفاق ملفات
لا تستطيع تعديل مشاركاتك

كود [IMG] متاحة
كود HTML معطلة
Trackbacks are متاحة
Pingbacks are متاحة
Refbacks are متاحة



الساعة الآن: 08:03 AM بتوقيت المملكة العربية السعودية