النتائج 1 إلى 14 من 14

الموضوع: هل يمكن وضع setcookie() في مكان غير اول الصفحة.

  1. #1
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431

    هل يمكن وضع setcookie() في مكان غير اول الصفحة.



    السلام عليكم ورحمة الله وبركاته .....


    الداله setcookie()

    يجب وضعها بـ أول شئ , اول الملف , لكن هل هناك امكانيه لوضعها في مكان غير اول الصفحة ؟

    مثل هكذا :
    كود PHP:
    <?
    session_start
    (); 
    ?>
    <?
    #  +--------------------------------------------+
    #  +                 Al Droos Script                 +
    #  +                 By PHPx3.com                  +
    #  +         faha1ad2@hotmail.com            +
    #  +--------------------------------------------+
    // Get ID
    $id intval($_GET['id']);
    // Check IF Empty
    if ( empty($id) )
    // If Empty GO TO INDEX
     
    echo " <script> javascript:self.close() </script>";
    exit;
    }
    ?>
    <font face="Tahoma" style="font-size:10pt">
    <div align="center">
    <?
    # # # # # #  IMPRTANT INCLUDE FOR ALL STEPS # # # # # #
    include("smarty.php");
    include(
    "include/lang/language.php");
    include(
    "include/connect.php");
    include(
    "include/rows.php");
    include(
    "include/smartys.php");
    $smarty->assign("ID",$id);

    #| Every Page |#
    $after="6";
    $allow_metas "2";
    $header "2";
    if(
    $close==1){
    $title=$lang['closed_title'];
    }
    else
    {
    $title =$lang['rate_title'];
    }
    include(
    "common_up.php");
    #| Every Page |#
     
    # استعلام لتفقد الدرس وإحضار معلوماته ...
    $query mysql_query("SELECT * FROM `drs_text` WHERE `id`='$id'");
    $drs_info mysql_fetch_array($query);

    # إذا كان غير مسموح بعرض الدرس
    if($drs_info['show'] == 2){
    $msg $lang['not_exist'];
    $smarty->assign("msg",$msg);
    $smarty->display("rate.htm");
    }

    # SetCookie 
    $value $drs_info['id'];
    setcookie("rating"$valuetime()+3600);

    # إذا كان التقييم كـ "ممتاز"
    if($_GET['rate'] == good){
    $now_rating $drs_info['good'];
    $update mysql_query("UPDATE `drs_text` SET `good`=$now_rating+1 WHERE `id`='$id'");
    if(
    $update){
    $msg$lang['rate_as_good_done'];
    $smarty->assign("msg",$msg);
    $smarty->display("rate.htm");
    }
    else
    {
    print 
    $lang['wrong'];
     echo 
    "<a href=index.php>   </a><BR>   .xxx<meta http-equiv = refresh content=1;url=index.php> </font>";
    }
    }
     
    #إذا كان التقييم لـ عادي
    if($_GET['rate'] == normal){
    $now_rating $drs_info['normal'];
    $update mysql_query("UPDATE `drs_text` SET `normal`=$now_rating+1 WHERE `id`='$id'");
    if(
    $update){
    $msg $lang['rate_as_normal_done'];
    $smarty->assign("msg",$msg);
    $smarty->display("rate.htm");
    }
    else
    {
    print 
    $lang['wrong'];
     echo 
    " <script> javascript:self.close() </script>";
    }
    }
     
    #إذا كان التقييم لـ سيئ
    if($_GET['rate'] == bad){
    $now_rating $drs_info['bad'];
    $update mysql_query("UPDATE `drs_text` SET `bad`=$now_rating+1 WHERE `id`='$id'");
    if(
    $update){
    $msg $lang['rate_as_normal_done'];
    $smarty->assign("msg",$msg);
    $smarty->display("rate.htm");
    }
    else
    {
    print 
    $lang['wrong'];
     echo 
    " <script> javascript:self.close() </script>";
    }
    }
     
     
      
      else
      {
     echo 
    " ";
     }
    ?>
    </div>
    </font>
    </body>
    </html>
    حيث انني اريد أن اقوم بالإستعلام عن الدروس والتأكد من الـ id والتأكد من ان الدرس قابل للعرض ثم وضع الكوكيز لكي لايتم التقييم اكثر من مره.

    منتظركم :nice: وشكراً.







  2. #2
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    تقدر تحطها في مكان بالصفحة لكن يجب ألا يكون قبلها مخرجات (يعني إلى الآن ما ظهر اي شي بالصفحة (echo مثلا))

    الأخطاء اللي عندك :

    كود PHP:
    ?>
    <font face="Tahoma" style="font-size:10pt">
    <div align="center">
    <?
    و
    كود PHP:
    # إذا كان غير مسموح بعرض الدرس
    if($drs_info['show'] == 2){
    $msg $lang['not_exist'];
    $smarty->assign("msg",$msg);
    $smarty->display("rate.htm"); // <---- الخطأ هنا

    لازم ما تجي قبل دالة setcookie

    وأيضا مالقيت طريقة تتأكد من الكوكيز إذا تم التصويت من قبل أم لا في الكود
    أما إذا كنت تستخدم :
    كود PHP:
    # SetCookie 
    $value $drs_info['id'];
    setcookie("rating"$valuetime()+3600); 
    فهي طريقة خاطئة، لأني اقدر اروح لدرس ثاني اقوم بالتصويت عليه، وبهذا قيمة الكوكيز (rating) راح تتغير، والسكربت ماراح يعرف اني قمت بالتصويت مسبقا

    ان شاء الله لي رجعة





    التعديل الأخير تم بواسطة Foxhound ; 22-06-2008 الساعة 02:05 AM

  3. #3
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    مشكور اخوي وجزاك الله خير
    لكن مافيه اي طريقة اضعها بالمكان الحالي ؟؟

    واما بالنسبة للتأكد من الكوكيز , انا اريد ان لايتم التقييم إلا مره واحده لكل درس , يعني عادي لو تدخل للدرس
    وتقيمه وتطلع وتروح للدرس اللي بعده وتقيمه ... بس ماتقيم درس واحد مرتين هذا اهم شئ .
    راح احاول اعيد ترتيب الأكواد , شكراً لك .......





    التعديل الأخير تم بواسطة ff5006 ; 22-06-2008 الساعة 03:02 AM

  4. #4
    عضو نشيط جدا
    تاريخ التسجيل
    Sep 2006
    المشاركات
    589


    استخدم ob_start();

    PHP: ob_start - Manual

    اذا مافهمت رد علي علشان انزل لك الكود كامل لكن افضل انك تفعل بنفسك علشان تفهم فائدتها





    __________________
    ومن اعجب الاشياء انك لاتدري وانك لاتدري بانك لاتدري
    فإن كنت لاتدري ولم تكُ بالذي يسال من يدري فكيف اذن تدري
    تمام العمى طول السكوت وانما شفاء العمى يوماً سؤالك من يدري

  5. #5
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    إذا انا قيمت درس ورقمه ال id هو 1 مثلا
    الكوكيز في rating راح يكون 1
    لكن إذا قيمت درس آخر رقمه 2 ، ال rating راح يتغير إلى 2
    وراح ينسى ال 1 من ذكرياته
    هذا غير انه مافي أي تحقق بالكود أصلا

    والخطأ الثاني أنه يتم إضافة الكوكيز بأنه قام بالتصويت مهما كانت الظروف، حتى لم ماكان فعلا مصوت
    فمثلا لو
    كود:
    $_GET['rate']
    لم تكن أي من القيم good أو normal أو bad ، ففي الكود الي حطيته سيتم إضافة الكوكيز قبل أن يتم التأكد

    الحل :
    -الكوكييز لـ rating يكون على شكل مصفوفة تضيف فيها أرقام ال id للدروس الي قام بالتصويت عليها، وعند التصويت يقوم السكربت يتأكد إذا كان رقم ال id موجود فيها أم لا
    -تضيف الكوكيز تحت استعلام ال UPDATE بهذا تكون متأكد انه قام بالتصويت


    عالعموم هذا الكود وعدلت عليه واختصرت اشياء فيه
    أتمنى انك تقراه تشوف الفرق ويفضل انتقوم بالتعديلات بنفسك هذا للفائدة
    كود PHP:
    <?
    session_start
    (); 
    #  +--------------------------------------------+
    #  +               Al Droos Script              +
    #  +                By PHPx3.com                +
    #  +            faha1ad2@hotmail.com            +
    #  +--------------------------------------------+
    // Get ID
    $id intval($_GET['id']);

    // Check IF Empty
    if ( empty($id) ) { 
        
    // If Empty GO TO INDEX
        
    echo " <script> javascript:self.close() </script>";
        exit;
    }

    # # # # # #  IMPORTANT INCLUDE FOR ALL STEPS # # # # # #
    include("smarty.php");
    include(
    "include/lang/language.php");
    include(
    "include/connect.php");
    include(
    "include/rows.php");
    include(
    "include/smartys.php");
    $smarty->assign("ID",$id);

    #| Every Page |#
    $after="6";
    $allow_metas "2";
    $header "2";

    if(
    $close==1){
        
    $title=$lang['closed_title'];
    } else {
        
    $title =$lang['rate_title'];
    }
    include(
    "common_up.php");
    #| Every Page |#
     
    # استعلام لتفقد الدرس وإحضار معلوماته ...
    $query mysql_query("SELECT * FROM `drs_text` WHERE `id`='$id'");
    $drs_info mysql_fetch_array($query);

    if (
    count($drs_info) < 1) { // إذا لا يوجد الدرس في قاعدة البيانات
    // ضع هنا رسالة خطأ أو رسالة تحويل

    exit;
    }

    # إذا كان غير مسموح بعرض الدرس
    if($drs_info['show'] == 2) {
        
    $msg $lang['not_exist'];
        
    $smarty->assign("msg",$msg);
        
    $smarty->display("rate.htm");
        exit;
    }

    if (
    in_array($drs_info['id'], $_COOKIE['rating']) { // إذا تم التقييم مسبقا
    // ضع هنا رسالة خطأ أنه تم التقييم مسبقا

    exit;
    }


    # التقييم
    $rating_levels = array("good""normal""bad");
    if(
    in_array($_GET['rate'], $rating_levels) AND !in_array($drs_info['id'], $_COOKIE['rating']) { // <-- عدلت هنا
        
    $now_rating $drs_info[$_GET['rate']];
        
    $update mysql_query("UPDATE `drs_text` SET " $_GET['rate'] . "=$now_rating+1 WHERE `id`='$id'"); // <-- عدلت هنا
        
        // أضافة الكوكيز
        
    $value $drs_info['id']; // <-- عدلت هنا
        
    setcookie("rating[]"$valuetime()+3600); // <-- عدلت هنا
        
        
    if($update) {
            
    $msg$lang['rate_as_' $_GET['rate'] . '_done']; // <-- عدلت هنا
            
    $smarty->assign("msg",$msg);
            
    $smarty->display("rate.htm");
        } else {
            print 
    $lang['wrong'];
            echo 
    "<a href=index.php>   </a><BR>   .xxx<meta http-equiv = refresh content=1;url=index.php> </font>";
        }
    } else {
        
    // $_GET['rate'] ليست من القيم المطلوبة
        // ضع رسالة خطأ هنا أو رسالة تحويل
    }
    # نهاية التقييم

    ?>







  6. #6
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    استخدم ob_start();

    PHP: ob_start - Manual

    اذا مافهمت رد علي علشان انزل لك الكود كامل لكن افضل انك تفعل بنفسك علشان تفهم فائدتها
    شكراً لك وجزاك الله خـير , جاري القراءه وإن شاء الله أفهم ..........


    Foxhound
    كلامك صحيح , ماجت على بالي ....
    ومشكووور وجزاك الله خير على التعديلات على الكود , بصراحه مالي اي خبره او معرفه عن الكوكيز إلا قليل جداً .....
    راح اقرأ الكود وافهمه بإذن الله وأرد عليك .






  7. #7
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    أخوي Foxhound

    يبدو انك نسيت إغلاق الأقواس في if .........
    المهم
    ظهرت لدي الأخطاء التاليه :

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in D:\AppServ\www\drs\rating.php on line 57

    Warning: in_array() [function.in-array]: Wrong datatype for second argument in D:\AppServ\www\drs\rating.php on line 67

    Warning: Cannot modify header information - headers already sent by (output started at D:\AppServ\www\drs\include\lang\language.php:2) in D:\AppServ\www\drs\rating.php on line 73


    ويظهر تحتها "تم تققيم الدرس كـ ممتاز بنجاح"


    منتظرك .







  8. #8
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    الخطأ مو في الأقواس، البارامتر الثاني في in_array مو مصفوفة، مع اني اول مرة اواجه هالمشكلة

    عالعموم جرب :
    كود PHP:
    <?
    session_start
    (); 
    #  +--------------------------------------------+
    #  +               Al Droos Script              +
    #  +                By PHPx3.com                +
    #  +            faha1ad2@hotmail.com            +
    #  +--------------------------------------------+
    // Get ID
    $id intval($_GET['id']);

    // Check IF Empty
    if ( empty($id) ) { 
        
    // If Empty GO TO INDEX
        
    echo " <script> javascript:self.close() </script>";
        exit;
    }

    # # # # # #  IMPORTANT INCLUDE FOR ALL STEPS # # # # # #
    include("smarty.php");
    include(
    "include/lang/language.php");
    include(
    "include/connect.php");
    include(
    "include/rows.php");
    include(
    "include/smartys.php");
    $smarty->assign("ID",$id);

    #| Every Page |#
    $after="6";
    $allow_metas "2";
    $header "2";

    if(
    $close==1){
        
    $title=$lang['closed_title'];
    } else {
        
    $title =$lang['rate_title'];
    }
    include(
    "common_up.php");
    #| Every Page |#
     
    # استعلام لتفقد الدرس وإحضار معلوماته ...
    $query mysql_query("SELECT * FROM `drs_text` WHERE `id`='$id'");
    $drs_info mysql_fetch_array($query);

    if (
    count($drs_info) < 1) { // إذا لا يوجد الدرس في قاعدة البيانات
    // ضع هنا رسالة خطأ أو رسالة تحويل

    exit;
    }

    # إذا كان غير مسموح بعرض الدرس
    if($drs_info['show'] == 2) {
        
    $msg $lang['not_exist'];
        
    $smarty->assign("msg",$msg);
        
    $smarty->display("rate.htm");
        exit;
    }


    if (!
    is_array($_COOKIE['rating'])) {

    // لا شيء، فقط لتفادي الخطأ

    } elseif (in_array($drs_info['id'], $_COOKIE['rating']) { // إذا تم التقييم مسبقا
    // ضع هنا رسالة خطأ أنه تم التقييم مسبقا

    exit;
    }


    # التقييم
    $rating_levels = array("good""normal""bad");
    if(
    in_array($_GET['rate'], $rating_levels)) { // <-- عدلت هنا
        
    $now_rating $drs_info[$_GET['rate']];
        
    $update mysql_query("UPDATE `drs_text` SET " $_GET['rate'] . "=$now_rating+1 WHERE `id`='$id'"); // <-- عدلت هنا
        
        // أضافة الكوكيز
        
    $value $drs_info['id']; // <-- عدلت هنا
        
    setcookie("rating[]"$valuetime()+3600); // <-- عدلت هنا
        
        
    if($update) {
            
    $msg$lang['rate_as_' $_GET['rate'] . '_done']; // <-- عدلت هنا
            
    $smarty->assign("msg",$msg);
            
    $smarty->display("rate.htm");
        } else {
            print 
    $lang['wrong'];
            echo 
    "<a href=index.php>   </a><BR>   .xxx<meta http-equiv = refresh content=1;url=index.php> </font>";
        }
    } else {
        
    // $_GET['rate'] ليست من القيم المطلوبة
        // ضع رسالة خطأ هنا أو رسالة تحويل
    }
    # نهاية التقييم

    ?>
    وردلي خبر






  9. #9
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    Parse error: syntax error, unexpected '{' in D:\AppServ\www\drs\rating.php on line 62
    62 :
    كود PHP:
    } elseif (in_array($drs_info['id'], $_COOKIE['rating']) { // إذا تم التقييم مسبقا 

    بعد التعديل إلى :
    كود PHP:
    } elseif (in_array($drs_info['id'], $_COOKIE['rating'])) { // إذا تم التقييم مسبقا 



    ظهر :
    كود PHP:
    WarningCannot modify header information headers already sent by (output started at D:\AppServ\www\drs\include\lang\language.php:2in D:\AppServ\www\drs\rating.php on line 77 
    </STRONG>
    ورسالة تفيد بانه تم التقييم بنجااح .






  10. #10
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    بعد تعديل الملف language.php من
    كود PHP:
     
    <?
    إلى بداية الوسم مباشره
    كود PHP:
    <?
    اصبح الخطأ
    كود PHP:

    Warning
    Cannot modify header information headers already sent by (output started at D:\AppServ\www\drs\common_up.php:8in D:\AppServ\www\drs\rating.php on line 77 
    ...


    الملف common_up
    كود PHP:
    <HTML dir="rtl">
    <HEAD>
    <META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=windows-1256">
    <LINK REL="STYLESHEET" TYPE="text/css" HREF="style/index/css/style.css">
    <meta http-equiv="Content-Type" content="text/html; charset=windows-1256">
    <meta http-equiv="Content-Language" content="ar-sa">
    <meta name="keywords" content="<? print "$page_meta_open"?>">
    <meta name="description" content="<? print "$page_meta_desc"?>">
    <META NAME="Author" CONTENT="phpx3.com">
    <? if($allow_metas == 1) {
     
    ?>
    <META NAME="RATING" CONTENT="General">
    <META NAME="ROBOTS" CONTENT="index,follow">
    <meta name="googlebot" content="Index, follow" />
    <META NAME="ROBOTS" CONTENT="ALL">
    <?
     
    }
    ?>
    <META NAME="revisit-after" CONTENT="<? print "$after"?> days">
    <TITLE> <? PRINT "$title - $site_name"?> </TITLE>

    <SCRIPT language="JavaScript1.2">
    <!-- Script courtesy of http://www.web-source.net - Your Guide to Professional Web Site Design and Development
    function makevisible(cur,which){
    strength=(which==0)? 1 : 0.2
    if (cur.style.MozOpacity)
    cur.style.MozOpacity=strength
    else if (cur.filters)
    cur.filters.alpha.opacity=strength*100
    }
    // -->
    </SCRIPT>
    <SCRIPT> 
    function popup_smiles() { window.open('smiles.php','eng','width=600,height=350,scrollbars=1')} 
    </SCRIPT>
      <SCRIPT language="JavaScript1.2">
    var bookmarkurl="<? print "$site_url"?>";
    var bookmarktitle="<? print "$site_name"?>";
    function addbookmark(){
    if (document.all)
    window.external.AddFavorite(bookmarkurl,bookmarktitle);
    }
    </SCRIPT>
    </head>
    <body topmargin="0" leftmargin="0" rightmargin="0" bottommargin="0" marginwidth="0" marginheight="0" 
    bgcolor="#ffffff">
    <div>
    <?
       
    if($close == 1){
       
    $smarty->display('closed.htm');
       exit;
       }
       if(
    $header == '1'){
        
    $smarty->display("header.htm");
       }
    ?>







  11. #11
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    ايه صحيح غفلت عنها، جزاك الله خير

    انا شلت
    كود:
    include("common_up.php");
    وحطيتها بمكانين بالكود
    جرب :
    كود PHP:
    <?
    session_start
    (); 
    #  +--------------------------------------------+
    #  +               Al Droos Script              +
    #  +                By PHPx3.com                +
    #  +            faha1ad2@hotmail.com            +
    #  +--------------------------------------------+
    // Get ID
    $id intval($_GET['id']);

    // Check IF Empty
    if ( empty($id) ) { 
        
    // If Empty GO TO INDEX
        
    echo " <script> javascript:self.close() </script>";
        exit;
    }

    # # # # # #  IMPORTANT INCLUDE FOR ALL STEPS # # # # # #
    include("smarty.php");
    include(
    "include/lang/language.php");
    include(
    "include/connect.php");
    include(
    "include/rows.php");
    include(
    "include/smartys.php");
    $smarty->assign("ID",$id);

    #| Every Page |#
    $after="6";
    $allow_metas "2";
    $header "2";

    if(
    $close==1){
        
    $title=$lang['closed_title'];
    } else {
        
    $title =$lang['rate_title'];
    }

    #| Every Page |#
     
    # استعلام لتفقد الدرس وإحضار معلوماته ...
    $query mysql_query("SELECT * FROM `drs_text` WHERE `id`='$id'");
    $drs_info mysql_fetch_array($query);

    if (
    count($drs_info) < 1) { // إذا لا يوجد الدرس في قاعدة البيانات
    // ضع هنا رسالة خطأ أو رسالة تحويل

    exit;
    }

    # إذا كان غير مسموح بعرض الدرس
    if($drs_info['show'] == 2) {
        include(
    "common_up.php");
        
    $msg $lang['not_exist'];
        
    $smarty->assign("msg",$msg);
        
    $smarty->display("rate.htm");
        exit;
    }


    if (!
    is_array($_COOKIE['rating'])) {

    // لا شيء، فقط لتفادي الخطأ

    } elseif (in_array($drs_info['id'], $_COOKIE['rating'])) { // إذا تم التقييم مسبقا
    // ضع هنا رسالة خطأ أنه تم التقييم مسبقا

    exit;
    }


    # التقييم
    $rating_levels = array("good""normal""bad");
    if(
    in_array($_GET['rate'], $rating_levels)) { // <-- عدلت هنا
        
    $now_rating $drs_info[$_GET['rate']];
        
    $update mysql_query("UPDATE `drs_text` SET " $_GET['rate'] . "=$now_rating+1 WHERE `id`='$id'"); // <-- عدلت هنا
        
        // أضافة الكوكيز
        
    $value $drs_info['id']; // <-- عدلت هنا
        
    setcookie("rating[]"$valuetime()+3600); // <-- عدلت هنا
        
        
    include("common_up.php");
        
        if(
    $update) {
            
    $msg$lang['rate_as_' $_GET['rate'] . '_done']; // <-- عدلت هنا
            
    $smarty->assign("msg",$msg);
            
    $smarty->display("rate.htm");
        } else {
            print 
    $lang['wrong'];
            echo 
    "<a href=index.php>   </a><BR>   .xxx<meta http-equiv = refresh content=1;url=index.php> </font>";
        }
    } else {
        
    // $_GET['rate'] ليست من القيم المطلوبة
        // ضع رسالة خطأ هنا أو رسالة تحويل
    }
    # نهاية التقييم

    ?>







  12. #12
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431


    يشتغل زي العسل

    الله يجزاك خير ويجعله في ميزان حسناتك ......... ويزيدك علم ان شاء الله


    مشكور وماقصرت ...... تعبتك معي .






  13. #13
    عضو نشيط
    تاريخ التسجيل
    May 2008
    المشاركات
    151


    أجمعين
    أخيرا اشتغل






  14. #14
    عضو فعال
    تاريخ التسجيل
    Aug 2007
    المشاركات
    1,431





ضوابط المشاركة

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

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