• 1 رای - 3 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
مشکل این کد کجاست؟
#1
سلام دوستان،

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

کد پی‌اچ‌پی:
<?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
غایب
  پاسخ
تشکر شده توسط :
#2
به جای ereg_replace از str-replace استفاده کن ببین مشکلت حل میشه
آقا تست کردم مشکلتو فهمیدم
کدتو یکم تغییر دادم

کد پی‌اچ‌پی:
<?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> 
  پاسخ
تشکر شده توسط : cyletech
#3
فرق استفاده از ereg_replace با str_replace در چیه؟ اگه میشه کامل توضیح بدید. ممنونم از زحمتت رفیق Tongue
راستی چرا در آرگومنت فانکشن filter اون متغیر از پیش تعریف شده رو قرار دادید؟ مگه در آرگومنت ها حالا چه در function یا ... نباید اون چیزی که درون function مثلا از خودمون تعریف می کنیم رو قرار بدیم و از طریق global اون از پیش تعریف شده رو به داخل function بیاریم؟
و همچنین ایا نوع دیگه ای می شه ویرایش کرد که همین کار را دقیق و بدون خطا انجام بده؟
غایب
  پاسخ
تشکر شده توسط :
#4
نقل قول:فرق استفاده از ereg_replace با str_replace در چیه؟ اگه میشه کامل توضیح بدید. ممنونم از زحمتت رفیق
فرقشون اینه که ereg_replace با استفاده از عبارات با قاعده replace میکنه و تو این مثالی که تو میخواستی str_replace یخورده سریعتره

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

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

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

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

کد پی‌اچ‌پی:
<?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> 
  پاسخ
تشکر شده توسط : cyletech kasbookar
#5
نقل قول:فرقشون اینه که ereg_replace با استفاده از عبارات با قاعده replace میکنه و تو این مثالی که تو میخواستی str_replace یخورده سریعتره
ناصر جان منظورت از عبارات باقاعده چیه؟

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

ممنونم Heart
غایب
  پاسخ
تشکر شده توسط :
#6
این برای عبارات با قاعده
http://en.wikipedia.org/wiki/Regular_expression

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

کد پی‌اچ‌پی:
return str_replace('@'$replaced$your_email); 

به همین سادگی
اگه متوجه نشدی بگو بیشتر توضیح بدم
  پاسخ
تشکر شده توسط :
#7
ممنونم ناصر جان بطور کامل متوجه شدم اما باز گنگ هست برام چون اینطوری که فرمودید تمرین نکردم. راستش تاحالا هرکاری میکردم هیچ اسمی از return تو کدهام نمی بردم ولی از این به بعد در تلاش خواهم بود که این کار رو انجام بدم. ممنونم این هوا )------( Smile
غایب
  پاسخ
تشکر شده توسط :


پرش به انجمن:


کاربران در حال بازدید این موضوع: 1 مهمان