/
  • مشکل این کد کجاست؟

  • ارسال پاسخ   امتیاز موضوع:
    • 1 رأی - میانگین امیتازات: 3
    • 1
    • 2
    • 3
    • 4
    • 5

    حالت موضوعی | حالت خطی مشکل این کد کجاست؟
    نویسنده پیام
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #1
    مشکل این کد کجاست؟
    سلام دوستان،

    من با کد زیر که نوشتم میخوام اون ایمیلی که قراره ارسال بشه قبل ارسال شدنش "@" به "[at]" تبدیل بشه.

    کد PHP:
    <?php

    $connect 
    mysql_connect("localhost""root""") or die(mysql_error());
    mysql_select_db("practice");

    // Replace "@" to "[at]" before inserting in MySQL
    function filter($replaced) {
        global 
    $your_email;
        
        
    $replaced "[at]";
        
    $your_email ereg_replace('@'$replaced$your_email);
    }

    if (isset(
    $_POST['get'])) {
        
    $your_email $_POST['your_email'];
            
        
    mysql_query("INSERT INTO `users` (`email`) VALUES ('$your_email')");
    }

    ?>

    <form action="" method="post">
    <input type="text" name="your_email" /><br />
    <input type="submit" name="get" value="Share" />
    </form> 

    متاسافانه این کد ارسال میشه اما عملیات تبدیل شدن انجام نمیشه. میتونید راهنماییم کنید؟

    مرسی Heart
    ۱۳۸۸ تير ۳ ۱۰:۲۱ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Na3r آفلاین
    ناصر خلقی
    *****

    ارسال‌ها: 412
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 11
    تشکرها : 257
    ( 576 تشکر در 308 ارسال )
    ارسال: #2
    RE: مشکل این کد کجاست؟
    به جای ereg_replace از str-replace استفاده کن ببین مشکلت حل میشه
    آقا تست کردم مشکلتو فهمیدم
    کدتو یکم تغییر دادم

    کد PHP:
    <?php

    $connect 
    mysql_connect("localhost""root""") or die(mysql_error());
    mysql_select_db("practice");

    // Replace "@" to "[at]" before inserting in MySQL
    function filter($your_email) {   
        
    $replaced "[at]";
        return 
    str_replace('@'$replaced$your_email);

    }

    if (isset(
    $_POST['get'])) {
        
    $your_email filter($_POST['your_email']);
        
    mysql_query("INSERT INTO `users` (`email`) VALUES ('$your_email')");
    }

    ?>

    <form action="" method="post">
    <input type="text" name="your_email" /><br />
    <input type="submit" name="get" value="Share" />
    </form> 
    (آخرین ویرایش در این ارسال: ۱۳۸۸ تير ۳ ۱۲:۴۲ عصر، توسط Na3r.)
    ۱۳۸۸ تير ۳ ۱۱:۵۲ صبح
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : cyletech
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #3
    RE: مشکل این کد کجاست؟
    فرق استفاده از ereg_replace با str_replace در چیه؟ اگه میشه کامل توضیح بدید. ممنونم از زحمتت رفیق Tongue
    راستی چرا در آرگومنت فانکشن filter اون متغیر از پیش تعریف شده رو قرار دادید؟ مگه در آرگومنت ها حالا چه در function یا ... نباید اون چیزی که درون function مثلا از خودمون تعریف می کنیم رو قرار بدیم و از طریق global اون از پیش تعریف شده رو به داخل function بیاریم؟
    و همچنین ایا نوع دیگه ای می شه ویرایش کرد که همین کار را دقیق و بدون خطا انجام بده؟
    (آخرین ویرایش در این ارسال: ۱۳۸۸ تير ۳ ۰۴:۱۰ عصر، توسط cyletech.)
    ۱۳۸۸ تير ۳ ۰۳:۵۷ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Na3r آفلاین
    ناصر خلقی
    *****

    ارسال‌ها: 412
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 11
    تشکرها : 257
    ( 576 تشکر در 308 ارسال )
    ارسال: #4
    RE: مشکل این کد کجاست؟
    نقل قول: فرق استفاده از ereg_replace با str_replace در چیه؟ اگه میشه کامل توضیح بدید. ممنونم از زحمتت رفیق
    فرقشون اینه که ereg_replace با استفاده از عبارات با قاعده replace میکنه و تو این مثالی که تو میخواستی str_replace یخورده سریعتره

    نقل قول: راستی چرا در آرگومنت فانکشن filter اون متغیر از پیش تعریف شده رو قرار دادید؟ مگه در آرگومنت ها حالا چه در function یا ... نباید اون چیزی که درون function مثلا از خودمون تعریف می کنیم رو قرار بدیم و از طریق global اون از پیش تعریف شده رو به داخل function بیاریم؟

    اینی که شما می گی قانون نیست که حتما باید اینجوری باشه به تعداد انسانهای رو زمین راه هست برای نوشتن تابع Big Grin تو اینجا من $your_email رو به عنوان پارامتر بهش دادم

    نقل قول: و همچنین ایا نوع دیگه ای می شه ویرایش کرد که همین کار را دقیق و بدون خطا انجام بده؟

    خوب دقیق و بدون خطاش اینه که اول چک کنی ببینی اونی که وارد شده اصلا ایمیل هست یا نه

    کد PHP:
    <?php

    $connect 
    mysql_connect("localhost""root""") or die(mysql_error());
    mysql_select_db("practice");

    // Replace "@" to "[at]" before inserting in MySQL
    function filter($your_email) {   
        if(!
    filter_var($your_emailFILTER_VALIDATE_EMAIL))
        {
          die(
    "E-mail is not valid");
        }
        else
        {
             
    $replaced "[at]";
            return 
    str_replace('@'$replaced$your_email);
        }
    }

    if (isset(
    $_POST['get'])) {
        
    $your_email filter($_POST['your_email']);
        
    mysql_query("INSERT INTO `users` (`email`) VALUES ('$your_email')");
    }

    ?>

    <form action="" method="post">
    <input type="text" name="your_email" /><br />
    <input type="submit" name="get" value="Share" />
    </form> 
    (آخرین ویرایش در این ارسال: ۱۳۸۸ تير ۳ ۰۵:۰۳ عصر، توسط Na3r.)
    ۱۳۸۸ تير ۳ ۰۴:۵۴ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط : cyletech kasbookar
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #5
    RE: مشکل این کد کجاست؟
    نقل قول: فرقشون اینه که ereg_replace با استفاده از عبارات با قاعده replace میکنه و تو این مثالی که تو میخواستی str_replace یخورده سریعتره
    ناصر جان منظورت از عبارات باقاعده چیه؟

    نقل قول: اینی که شما می گی قانون نیست که حتما باید اینجوری باشه به تعداد انسانهای رو زمین راه هست برای نوشتن تابع Big Grin تو اینجا من $your_email رو به عنوان پارامتر بهش دادم
    ای بابا من گیج شدم. بالاخره یکی به من بگه آرگومنت اصلا یعنی چی و جای چه چیزی هست. لطفا کامل و واضح توضیح دهید Huh

    ممنونم Heart
    ۱۳۸۸ تير ۳ ۰۶:۰۰ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    Na3r آفلاین
    ناصر خلقی
    *****

    ارسال‌ها: 412
    تاریخ عضویت: ۱۳۸۷ دي ۳
    اعتبار: 11
    تشکرها : 257
    ( 576 تشکر در 308 ارسال )
    ارسال: #6
    RE: مشکل این کد کجاست؟
    این برای عبارات با قاعده
    http://en.wikipedia.org/wiki/Regular_expression

    ببین یه تابع چند تا ورودی داره و یه خروجی
    به ورودی هایی که میگیره میگن آرگومان یا پارامتر
    تو کد بالا من $your_email به عنوان ورودی گرفتم و بعد از پردازش رو اون متغیر با این خط اونو به عنوان خروجی return کردم

    کد PHP:
    return str_replace('@'$replaced$your_email); 

    به همین سادگی
    اگه متوجه نشدی بگو بیشتر توضیح بدم
    ۱۳۸۸ تير ۳ ۰۸:۲۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    cyletech غایب
    علیرضا اسکندرپور شوفری
    *****

    ارسال‌ها: 2,197
    تاریخ عضویت: ۱۳۸۸ فروردين ۸
    اعتبار: 42
    تشکرها : 1258
    ( 2239 تشکر در 1089 ارسال )
    ارسال: #7
    RE: مشکل این کد کجاست؟
    ممنونم ناصر جان بطور کامل متوجه شدم اما باز گنگ هست برام چون اینطوری که فرمودید تمرین نکردم. راستش تاحالا هرکاری میکردم هیچ اسمی از return تو کدهام نمی بردم ولی از این به بعد در تلاش خواهم بود که این کار رو انجام بدم. ممنونم این هوا )------( Smile
    ۱۳۸۸ تير ۳ ۰۸:۴۵ عصر
    یافتن ارسال‌ها پاسخ با نقل قول
     تشکر شده توسط :
    « قدیمی تر | تازه‌ تر »

    ارسال پاسخ
    پرش به انجمن:


    کاربرانِ درحال بازدید از این موضوع: 1 مهمان
    IranPHP.org | تماس با ما | بازگشت به بالا | بازگشت به محتوا | بایگانی | پیوند سایتی RSS