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

الموضوع: فكرة لعمل captcha ولاكن ؟؟!!

  1. #1

    Exclamation فكرة لعمل captcha ولاكن ؟؟!!



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


    ليا فترة جالس أطبخ في طريقة لعمل كبتشا خاصة بفكرة الجمع
    يعني مثلا نقول 5 +5 = 10 نسوي Rand للأرقام حقت الجمع وبعدين نتحقق منها
    ولقد توصلت لهذا الكود
    كود PHP:
    session_name ('code') ;
    session_start() ;
        
    $_SESSION['n1'] = rand(1,20) ;
        
    $_SESSION['n2'] = rand(1,20) ;
        
    $_SESSION['expart'] = $_SESSION['n1'] + $_SESSION['n2'] ;

    if (isset (
    $_POST['submit'])) {
        
    $message NULL ;
            if (
    $_POST['ntn'] != $_SESSION['expart'] ) {
                  
    $ntn FALSE ;
                  
    $message .= '<p class="br" >رمز التحقق خطأ</p>
                            <style>
            .input4 {
                        background:#E3828B ;
                        border: double 2px #F00 ;
            }
            </style>
            '
    ;
            } else {
                
    $ntn TRUE ;
            } 
    المتغير ntn حق الـ input الخاص بإداخل حاصل الجمع

    المشكلة انو لو ادخلت الناتج صح قلي خطأ واذا دخلته خطأ قلي خطأ هع يعني بكل الأحول يقلي خطأ ويوقف العمل طبعاً

    ايش المشكلة في الكود ؟؟؟







  2. #2
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    القصة وما فيها انك لازم تحط تعريف متغير الجلسة في else
    لإنه لما تبعث بيانات في الفورم برجع بفوت كمان مرة على الصفحة وبعرّف متغير الجلسة اخرى مرة

    كود:
    <?php
    session_start() ;
        
    if (isset ($_POST['submit'])) {
        if ($_SESSION['expart'] == $_POST['ntn'])
    	echo "ok";
    	else echo "not ok";
    	$_POST['submit']=null;
    	echo "<br><a href=index.php>back</a>";
    }else{
    $_SESSION['n1'] = rand(1,20) ;
        $_SESSION['n2'] = rand(1,20) ;
        $_SESSION['expart'] = $_SESSION['n1'] + $_SESSION['n2'] ;
    	echo $_SESSION['n1']."+";
    	echo $_SESSION['n2']."=?<br>";
    }	
    ?>
    <br>
    <form method=post action=index.php>
    <input type=text name=ntn>
    <input type=hidden name=submit value="1">
    <input type=submit value=check>
    </form>






    التعديل الأخير تم بواسطة ahmad sadiq ; 28-11-2009 الساعة 08:14 AM

  3. #3


    طيب انا اريد وضع السؤال المتكون من
    كود PHP:
        $_SESSION['n1']
        
    $_SESSION['n2'
    يعني الفروم الي عندي هكذا شكله
    كود HTML:
    <form action="<?php echo $_SERVER['PHP_SELF']; ?>" method="post" class="form" >
    <p style="font-size:10px ; color:#F00 ;">* خانات مطلوبة</p>
    <p>الإسم *:</p>
     <input type="text" class="input" size="20"  name="name" maxlength="40"  value="<?php if (isset($_POST['name'])) { echo $_POST['name']; } ?>"  />
    <p>البريد الإكتروني *:</p>
     <input type="text" class="input"  value="<?php if (isset($_POST['email'])) { echo $_POST['email']; } ?>" name="email" size="40" maxlength="60" />
    <p>عنوان الرسالة *:</p>
    <input type="text" class="input"  value="<?php if (isset($_POST['opject'])) { echo $_POST['opject']; } ?>" name="opject" size="40" maxlength="80"  />
    <p>نص الرسالة *:</p>
    <textarea name="maseg" cols="60" rows="10" ><?php if (isset($_POST['maseg'])) { echo $_POST['maseg']; } ?></textarea>
    <p>كود التحقق *:</p>
    <p style="color:#666 ; font-size:13px ;"><?=$_SESSION['n1']?>+<?=$_SESSION['n2']?></p>
    <input type="text" class="input" name="ntn" size="10" maxlength="20"  />
    <br  /><br  />
    <input type="submit" name="submit" value="ارسل"  />
    </form>
    يعني سوف يظهر السؤال قبل الضغط على زر submit اما الفروم الذي وضعته لي يظهر لي السؤال بعد الضغط على submit على حسب ما فهمت

    وجزاك الله خير أنتظرك






  4. #4
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    لا يا اخي سوف ابسط لك الفكرة اكثر

    الكود الذي كان عندك كان فيه تعريف المتغيرات واستعمال الراند في اول الصفحة وبعدين فحص البيانات التي ارسلت من الفورم تتم بعد تحقق الشرط:
    كود:
    if (isset($_POST['submit']))
    يعني الكود يعرّف المتغيرات وبعدين يفحص الشرط.

    الفورم اللي عندك مكتوب فيه
    كود:
    <form method=post action=page.php>
    بس نضغط على submit ماذا يفعل الفورم؟

    يقوم بالذهاب للصفحة page ويرسل معه البيانات التي في الحقول، طبعًا عند الذهاب للصفحة يمر على تعريف متغيرات الجلسة ويعرفها مرة اخرى فتصبح قيمها مختلفة عن اول مرة ثم ينزل إلى اسفل الصفحة ويصل الى الشرط.
    وعند فحص الشرط يرى ان القيم مختلفة فيطبع رسالة الخطأ، على العموم الكود الذي ارسلته يعمل وآسف على اللغة الركيكة





    التعديل الأخير تم بواسطة ahmad sadiq ; 29-11-2009 الساعة 12:54 AM

  5. #5


    أخوي أحمد مافهمت والله !






  6. #6
    عضو فعال
    تاريخ التسجيل
    Jun 2008
    المشاركات
    1,600


    باختصار عند ارسال المعلومات بالفورم تتم زيارة الصفحة مرة أخرى وتعريف المتغيرات مرة اخرى لأنها قبل الشرط

    ضع الشرط في صفحة جديدة وارسل له الفورم أو ضع الشرط قبل تعريف المتغيرات أو ضع المتغيرات في else تنحل المشكلة وهذا ما فعلته في الكود الذي ارسلته لك










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

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

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