رفتن به مطلب

SadraHkm

عضو سایت
  • تعداد ارسال‌ها

    272
  • تاریخ عضویت

  • آخرین بازدید

  • روز های برد

    2

نوشته‌ها ارسال شده توسط SadraHkm

  1. در در 9/8/2019 at 11:31، Mobin گفته است :

    من تست کردم بدون خطا اجرا شد
     

    
    <script type="text/javascript">
    (function (window) {
        function mathLibrary() {
            this.plusNums = function (x, y) {
                return Number(x) + Number(y);
            };
            this.subNums = function(x , y) {
                this.plusNums(x,-y);
            }
        }
        if(typeof sadra_ml === 'undefined'){
            window.sadra_ml = new mathLibrary();
        }else {
            console.log("There is name conflict");
        }
    })(window);
    console.log(window.sadra_ml.plusNums(10,10));
    </script>

     

    با احترام

    من دوباره که نگاهی به کد انداختم فهمیدم که در متد subNums یادم رفته return رو بنویسم و این باعث خطا ( undefined ) شده بود. معذرت میخوام

    خیلی ممنون لطف کردید :)

  2.  با احترام

    تکه کد زیر مثالی از اسکریپت مربوط به منو های اکاردئونی هست. در کنار HTML آن میتونید استفاده کنید: ( ابتدا فایل جی کوئری رو لود کنید )
     

        <div class="accItem">
            <div class="accTitle">عنوان شماره یک</div>
            <div class="accDesc">توضیحات اضافی</div>
        </div>
    
    <script>
        $('.accTitle').click(function () {
            $('.accDesc').slideUp();
            if($(this).next('.accDesc').css('display') === 'none') {
                $(this).next('.accDesc').slideToggle();
            }
        });
    </script>

     

  3. سلام دوستان امیدوارم حالتون خوب باشه

    من داشتم تمرین میکردم که یه کتابخونه ساده بسازم. بعد به یه مشکلی برخوردم. من دو تا متد نوشتم. تو یکی از اونها، اون یکی رو صدا زدم. ولی کار نمیکنه و مقداری که برمیگردونه undefined هست.

    میشه لطفا راهنمایی کنید که مشکلش چی هست. با تشکر فراوان

    (function (window) {
        function mathLibrary() {
            this.plusNums = function (x, y) {
                return Number(x) + Number(y);
            };
            this.subNums = function(x , y) {
                this.plusNums(x,-y);
            }
        }
        if(typeof sadra_ml === 'undefined'){
            window.sadra_ml = new mathLibrary();
        }else {
            console.log("There is name conflict");
        }
    })(window);

     

  4. سلام دوستان

    امیدوارم حالتون خوب باشه

    لطفا یه نگاهی به کد زیر بندازید

        <p>Paragraph 1</p>
        <p>Paragraph 2</p>
        <p>Paragraph 3</p>
        <p>Paragraph 4</p>
        <button id="calcBtn">Calculate</button>
    <div id="result"></div>
    <script>
        $(window).ready(function () {
            $('#calcBtn').click(function (e) {
                $('p').each(function () {
                    $(this).css('color','rgb('+ rand(0,255) +','+ rand(0,255) +','+ rand(0,255) +')');
                    $('#result').append($(this).html());
          // -----------------  This Code :
                  //$('#result').append($(this));
                })
            });
        })
    
    </script>

    در اون قسمتی از کد که دارم محتوی کدهای پاراگراف رو به تگ div اضافه میکنم یه سوالی ذهن منو مشغول کرده.

    اگر همین کدی که الان هست رو اجرا کنیم، جی کوئری هربار توی حلقه رنگ تگ اصلی رو تغییر میده و یه کپی از اون پاراگراف میگیره و اضافه میکنه به div.

    ولی اگه اون تکه کدی که کامنت هست رو با اون خط جایگزین کنیم، میاد و هر بار کلا تگ پاراگراف رو برمیداره و اضافش میکنه به div. یعنی دیگه کپی ازش نمیگیره و دیگه تگ های p اون بالا باقی نمیموند.

    میخواستم ببینم آیا من درست فهمیدم ؟ یا مشکلی توی کد هست که اینجوری اجرا میشه ؟!

    باتشکر فراوان

     

  5. در در 7/23/2019 at 09:51، Mobin گفته است :

    کد اسکریپتتونو کامل بزارین
    اینجوری مشخص نیست تابع onkeydown  شما چی هست ایا return داخلش داره یا خیر

    <body onload="startGame()" onkeydown="return handleKey(event);">
    <img src="img/mos.png" alt="" id="mosq">
    <img src="img/spider.png" id="spider">
      
      <script>
        function startGame() {
            var mosq = document.getElementById('mosq');
            var spider = document.getElementById('spider');
            mosq.style.top = rand(0, window.innerHeight - 50) + "px";
            mosq.style.left = rand(0, window.innerWidth - 50) + "px";
            spider.style.top = rand(0, window.innerHeight - 50) + "px";
            spider.style.left = rand(0, window.innerWidth - 50) + "px";
        }
    
        function handleKey(e) {
            var code = e.keyCode;
            if (code == 38) {
                moveSpider('up');
            } else if (code == 39) {
                moveSpider('right');
            } else if (code == 40) {
                moveSpider('down');
            } else if (code == 37) {
                moveSpider('left');
            }
    
            if(youWin()){
                alert("You Win The Game ... !");
                location.reload();
            }
        }
    
        function moveSpider(str) {
            var spider = document.getElementById('spider');
            var num = 10;
            switch (str) {
                case 'up':
                    spider.style.top = spider.offsetTop - num + "px";
                    if(spider.offsetTop < 0){
                        spider.style.top = window.innerHeight + "px";
                    }
                    break;
                case 'right':
                    spider.style.left = spider.offsetLeft + num + "px";
                    if(spider.offsetLeft > innerWidth){
                        spider.style.left = '0px';
                    }
                    break;
                case 'left':
                    spider.style.left = spider.offsetLeft - num + "px";
                    if(spider.offsetLeft < 0){
                        spider.style.left = innerWidth + 'px';
                    }
                    break;
                case 'down':
                    spider.style.top = spider.offsetTop + num + "px";
                    if(spider.offsetTop > window.innerHeight){
                        spider.style.top = "0px";
                    }
                    break;
            }
        }
    
        function youWin(){
            var mosq = document.getElementById('mosq');
            var spider = document.getElementById('spider');
            if(Math.abs(spider.offsetTop - mosq.offsetTop) < 20 && Math.abs(spider.offsetLeft - mosq.offsetLeft) < 20){
                return true;
            }
            return false;
        }
    </script>

     

  6. سلام دوستان امیدوارم حالتون خوب باشه

    میخواستم بدونم در تکه کد زیر :

    <body onload="startGame();" onkeydown="return handleKeys(event);">
      
      <script>
        
        ...
        
            if (youWin()) {
                alert("You Win !");
                location.reload();
            }
        }
      </script>

    چرا در رویداد onkeydown از return استفاده شده؟ توی اینترنت جستجو کردم ولی درست نفهمیدم :) میشه لطفا راهنمایی کنید

    با تشکر فراوان

  7. سلام

    میتونید از کد زیر الگو بگیرید و کدتون رو بر اساس این بنویسید. اگر خواستید کدتون رو قرار بدید تا روی اون درست کنم
     

    <div id="boxId"></div>
    <script>
        window.addEventListener('scroll',setFix);
        function setFix(){
            if(document.documentElement.scrollTop > 30){
                document.getElementById('boxId').style.position = 'fixed';
            }
        }
    </script>

     

    • امتیاز 1
  8. سلام دوستان

    برای لود کردن فایل های جاوااسکریپت میتونیم اسکریپت رو در تگ head یا قبل از تگ /body بذاریم. وقتی که در تگ head میذاریم، قبل از اینکه محتوای صفحه خونده بشن، این فایل لود میشه. ولی ایا وقتی در اخر صفحه ( قبل از /body ) هم گذاشته میشه، قبل از خونده شدن محتوای صفحه این فایل لود میشه یا بعدش یا همزمان باهاش ؟!
    بعد سوال دیگه اینکه اگه ما فایل رو در اخر سندمون لود کنیم، چه فرقی میکنه با اینکه از attribute defer استفاده کنیم ؟ این attribute که دقیقا همون کار رو انجام میده !

    ممنون میشم کمی توضیح بدید

    باتشکر

  9. در 2 ساعت قبل، mehran-b گفته است :

    سلام @SadraHkm

     

    مورد اول که خوب یک کلاسه که با کلمه new اومدیم یه آبجکت (شی) از روی کلاس ساختیم.

    مورد دوم خود آبجکت (شی) رو ریختیم توی متغییر mySon.

    ارتباط مورد اول و مورد دوم اینه که مورد دوم حاصل ساخت آبجکت (شی) از روی یک کلاس هست.

    درسته. الان در کد دوم، از چه کلاسی داریم شئ میسازیم دقیقا ؟

  10. سلام دوستان

    من شئ گرایی رو توی php کار کردم. الان دارم جاوا اسکریپت یاد میگیرم. توی بحث شئ گرایی توی این زبان وقتی میخوایم یک کلاس و شئ بسازیم بصورت زیر عمل میکنیم:

    //Creating Class
    function myClass(){
    this.name = "reza";
      this.sleep = function (){
      document.write("Go Sleep !");
      }
    }
    
    //Creating Object of myClass
    var person1 = new myClass();
    person1.sleep();  // Go Sleep!

    بعد من توی آموزشی که میبینم، دیدم این ساختار زیر رو شئ صدا میکنه و میگه با کد زیر هم میتونیم یک شئ بسازیم:

    var mySon = {firstName:"Ali", age: 12}

    این الان یک شئ عه یا یک کلاس ؟ من فکر میکنم این یک کلاس باشه. چون برای ساخت شئ باید از روی یک کلاس شئ بسازیم و از کلمه new استفاده کنیم...

    اگر شئ هست، از روی چه کلاسی داره شئ میسازه ؟

    ممنون میشم کمی توضیح بدید

  11. سلام دوستان

    من این کد رو آزمایشی نوشتم .

    <?php
    function get_webpage($url)
    {
        $options = array(
            CURLOPT_CUSTOMREQUEST => "GET", //set request type post or get
            CURLOPT_POST => false, //set to GET
            CURLOPT_COOKIEFILE => "cookie.txt", //set cookie file
            CURLOPT_COOKIEJAR => "cookie.txt", //set cookie jar
            CURLOPT_RETURNTRANSFER => true, // return web page as string
            CURLOPT_HEADER => false, // don't return headers
            CURLOPT_FOLLOWLOCATION => true, // follow redirects
            CURLOPT_ENCODING => "", // handle all encodings
            CURLOPT_AUTOREFERER => true, // set referer on redirect
            CURLOPT_CONNECTTIMEOUT => 120, // timeout on connect
            CURLOPT_TIMEOUT => 120, // timeout on response
            CURLOPT_MAXREDIRS => 10, // stop after 10 redirects
        );
        $curl = curl_init($url);
        curl_setopt_array($curl,$options);
        $content = curl_exec($curl);
        $header = curl_getinfo($curl);
        $err = curl_errno($curl);
        $errmsg = curl_error($curl);
        $header = curl_getinfo($curl);
        curl_close($curl);
        $header['errno'] = $err;
        $header['errmsg'] = $errmsg;
        $header['content'] = $content;
        return $header;
    }
    
    
    $url = 'http://www.google.com';
    
    var_dump(get_webpage($url));

    اما وقتی اجراش میکنم، این خروجی رو میده :

    D:\wamp64\www\24\cURL\curl_get_webpage.php:35:
    array (size=29)
      'url' => string 'https://google.com/' (length=19)
      'content_type' => string 'text/html' (length=9)
      'http_code' => int 301
      'header_size' => int 187
      'request_size' => int 85
      'filetime' => int -1
      'ssl_verify_result' => int 20
      'redirect_count' => int 1
      'total_time' => float 1.544
      'namelookup_time' => float 0.093
      'connect_time' => float 0.296
      'pretransfer_time' => float 0.109
      'size_upload' => float 0
      'size_download' => float 0
      'speed_download' => float 0
      'speed_upload' => float 0
      'download_content_length' => float -1
      'upload_content_length' => float -1
      'starttransfer_time' => float 0.125
      'redirect_time' => float 0.125
      'redirect_url' => string '' (length=0)
      'primary_ip' => string '91.109.17.47' (length=12)
      'certinfo' => 
        array (size=0)
          empty
      'primary_port' => int 443
      'local_ip' => string '192.168.1.106' (length=13)
      'local_port' => int 52333
      'errno' => int 60
    
    
    
    
    Error Message Is Here *********
    
    
      'errmsg' => string 'SSL certificate problem: unable to get local issuer certificate' (length=63)
      'content' => boolean false

     

    تو ایندکس ارور، یه اروری نوشته . توی سایت های خارجی هم گشتم و چندتا راه امتحان کردم ولی جواب نداد. در ضمن وقتی وارد لوکال هاست میشم بالای فایرفاکس مینویسه connection is not secure !

    ممنون میشم راهنمایی کنید

  12. در 7 دقیقه قبل، فرحان گفته است :

    سلام. این کد ظاهرا یه کد اموزشی هست. و شما میتونی همون جور که میگی بنویسیش.

    اما اگه منظورتون اینه که بلاک ترای کچ به چه دردی می خوره، جواب اینه که گاهی اوقات قراره محاسباتی یا اتصالی پیش بیاد که نتیجش قطعی نیست. یعنی چی؟ مثلا الان میدونید فقط اگر x برابر 0 باشه خطاست. اما حالا فرض کنید نمیدونید مقدار x از کجا اومده. مثلا کاربر ممکنه حروف الفبا یا هرچیز دیگه ای وارد کنه. در این صورت 1/x ام، ممکنه مثلا خطای وارنینگ یا فتال ارور بده، در این صورت به جای شرط گذاشتن برای مقدار x که چیا نباشه، راحت میشه محاسبه رو توی ترای کچ انجام داد و مطمئن شد که خطا نمیده. و اروری به کاربر نشون داده نمیشه که آدرس پوشه های سرور هم توش باشه! (به جاش اون پیام ما نشون داده میشه)

    مثال دیگه زمانیه که قراره ارتباط با یه سرور دیگه برقرا کنیم. مثلا زمانی که می خوایم به سرور مای اس کیو ال وصل بشیم. نمیدونم الان سروری که موجود در آینده هم در حال اجرا هست یا نه. مثلا ممکنه سرور مای اس کیو ال به خاطر یه دلیلی از دسترس خارج بشه که در این صورت خطایی به کاربر نشون داده میشه که مدیریت شده نیست. معمولا توی این جور جاها از بلاک try .. catch استفاده میشه.

    موفق باشید.

    بله این یک کد آموزشی هست .

    ممنون بابت توضیحات مفید و کاملتون. متوجه منظورتون شدم.

    پس خود کلاس exception به چه دردی میخوره. وقتی از این کلاس استفاده میکنیم خیلی اطلاعات حساس مثل آدرس فایل و ... به بیرون درز میکنه که !

  13. سلام دوستان

    من این کد رو آماده کردم

    <?php
    include_once '../common/common.php';
    
    
    // First Section <------------>
    function inverse($x){
        if($x == 0){
            throw new Exception('No Accepted Value');
        }
        return 1/$x ;
    }
    
    
    try{
        inverse(5);
        inverse(0);
    }catch (Exception $error){
        echo 'An Error Occured ! Error Message: ' . $error->getMessage() . "<br>";
    }
    
    echo 'After This Block';
    
    
    // Second Section <------------>
    function toinverse ($a){
        if($a == 0){
            echo ' There is an error 2 ';
        }
        return 1/$x ;
    }

     توی قسمت اول ( کامنت گذاشتم ) الان ما اومدیم گفتیم اگه x برابر صفر شد بیاد یه ارور ایجاد بشه. بعد توی دستور try..catch اومدیم گفتیم اگه استثنایی بود بره توی قسمت catch و یه متنی رو بخونه .

    من سوالم اینجاست که چرا نمیایم مستقیم همون ارور رو توی دستور if نمایش بدیم ( مثل قسمت دوم ). یعنی به جای اینکه بیایم بگیم اگه x صفر بود --> ارور، اگه ارور بود --> متن ارور ( دستور catch) خب بیایم بگیم اگه صفر بود --> متن ارور .

    برای چی یه قسمت اضافی ( اون exception ) رو بیخودی اون وسط کدهای اضافه میکنیم؟

    امیدوارم منظورم رو فهمیده باشید :)

    ممنون

     

  14. میتونید با یک جستجوی ساده در گوگل نحوه کدنویسی این آپشن ها رو یاد بگیرید.

    مثلا برای لایک جستجو کنید : ساخت لایک با Php

    برای اینجور اپشن هایی مثل لایک میتونید در دیتابیس مثلا جدولی برای هر پست درست کنید که یه ستون اون جدول رو به تعداد لایک های اون پست اختصاص بدید و با هر بار کلیک شدن روی دکمه قلب، به تعداد لایک های اون پست اضافه بشه

    • امتیاز 1
  15. در 6 ساعت قبل، Mobin گفته است :

    باید اضافه کنید

    تابع strip ی که استفاده میشهstip_tags  هست که تگهای داخل متن رو از بین میبره برای جلوگیری از xss

    اهان ممنون

    پس در کل بهتره برای برای ورودی های که کاربر که در sql وارد میشه، از mysqli_real_scape استفاده کنیم و برای دیگر ورودی ها از addslashes استفاده کنیم تا اسلش اضافه کنه درسته ؟

    پس stripslash که اسلش رو حذف میکنه، کجاها کاربرد داره

  16. در 12 ساعت قبل، Mobin گفته است :

    برای امن کردن یک کوئری چیزی که عموما توصیه میشه استفاده از تابع mysqli_real_escape_string یا (mysqli::escape_string)  هست که کوتها ' رو با قرار دادن یک اسلش قبلش غیر فعال میکنه تا باعث sql inject نشه

    اهان

    بعد برای امن کردن ورودی های کاربر به طور کلی باید اسلش های ورودی رو حذف کنیم یا اسلش به ورودی اضافه کنیم 

    Stripslash یا addslashes

  17. سلام دوستان

    من چندتا تابع رو با هم قاطی کردم. الان اگه بخوام ورودی های کاربر رو از یک فرم، امن کنم باید از کدوم از این توابع استفاده کنم؟ هرکدومشون چه مزیتی دارن ؟

    mysqli_escape_string یا mysqli_real_escape_string یا addslashes یا stripslashes ؟

    وقتی ورودی گرفته میشه، ما باید اسلش های اون رو حذف کنیم یا اسلش بهش اضافه کنیم ؟

    و اصلا فرق اون 2 تابع اول که فقط توی کلمه real فرق میکنن، چیه ؟

    اگه میشه کمی توضیح بدید من گیج شدم :(

    ممنون

  18. سلام دوستان

    من یه سوال کلی دارم. فرض کنید من یه سایت داشته باشم که کاربر امکان انتخاب چند نوع تم مختلف رو داشته باشه و یکی از اونارو ست کنه. من میخوام وقتی کاربر مرورگرش رو بست و بعد دوباره باز کرد، اون تم به طور پیشفرض براش ست شده باشه و نخواد دوباره ست کنه. اگر بخوام این کار رو با کوکی ها انجام بدم، اون محتوی کوکی رو باید چی وارد کنم ؟ چطور باید یه همچین آپشنی رو با کوکی ها پیاده کرد؟

    ممنون

  19. سلام

    به طور کلی فایل ها ( چه جاوا چه css و ... ) رو در تگ های header فراخوانی میکنند.

    اگر هم کد html ندارید ( header ندارید ) و با php سر و کار دارید میتونید در همون خط اول با دستور زیر فایل رو فراخوانی کنید

    <?php include 'YourFile.js'; ?>

     

  20. سلام دوستان

    من یه کوئری نوشتم و میخوام ارسالش کنم به دیتابیس. اما یه پارامتر میگیره که من میخوام اون پارمتر امن بشه برای همین از prepare استفاده کردم به این صورت

    $sql = 'select * from customers where age > ?';
    $resualt = $mysqli ->query($sql);
    $state = $mysqli->prepare($sql);
    $state->bind_param('i',$age);
    $state->execute();
    
    $age = $_GET['age'];
    
    //Here
    echo $resualt->field_count  . "<br>";
    echo $resualt->num_rows  . "<br>";
    
    $customers = $resualt->fetch_all();
    arrayNormal($customers);

    اما در قسمت اخر کد نمیدونم باید چطور نتایج این کوئری رو نمایش بدم؟ از همونجایی که کامنت گذاشتم

    • امتیاز 1
  21. سلام دوستان

    میدونیم که برای باز کردن یا درست کردن یک فایل باید از تابع fopen () استفاده کنیم.

    من این کد زیر رو نوشتم .

    $filePath1 = 'NewFile.php';
    unlink($filePath1);
    $fp1 = fopen($filePath1, 'a+');
    for ($i = 1; $i <= 5; $i++) {
        fwrite($fp1, "Line $i > " . date("Y-m-d h:i:s", time()) . PHP_EOL); 
    //    sleep(1);
    }
    fclose($fp1);
    
    $fp1 = fopen($filePath1, 'r');
    for($i = 1 ; $i <= 5 ; $i++) {
        $ch1 = fgetc($fp1);
        $str1 = fgets($fp1);
        e( $ch1 . ' | ' . $str1);
    }
    fclose( $fp1);

    چرا این کد رو نمیشه به این صورت نوشت ؟:

    $filePath1 = 'NewFile.php';
    unlink($filePath1);
    $fp1 = fopen($filePath1, 'a+');
    for ($i = 1; $i <= 5; $i++) {
        fwrite($fp1, "Line $i > " . date("Y-m-d h:i:s", time()) . PHP_EOL); 
    //    sleep(1);
    }
    
                        
                        
    for($i = 1 ; $i <= 5 ; $i++) {
        $ch1 = fgetc($fp1);
        $str1 = fgets($fp1);
        e( $ch1 . ' | ' . $str1);
    }
    fclose( $fp1);

    در این کد دوم من fclose اولی و fopen دومی رو حذف کردم. چرا باید برای هر کاری که میخوایم روی فایل انجام بدیم باید فایل رو باز و بسته کنیم ؟

    چرا نمیشه همینطور که فایل باز هست ( قسمت اول کد ) بیایم و یه کار دیگم روش انجام بدیم ( قسمت دوم کد )

    الان این کد دوم ارور میده.

    ممنون

×
×
  • اضافه کردن...