PDA

View Full Version : سوال: مشکل در چک کردن فرمت آدرس ایمیل



phpweb
یک شنبه 22 اسفند 1389, 14:31 عصر
من از کد زیر برای چک کردن آدرس ایمیل استفاده می کنم، این کد خوب کار می کنه ولی وقتی که داده ورودی از کاراکتر دش - استفاده می کنم، این کد اعلام می کنه که فرمت ایمیل درست نیست.

بنظرتون مشکل کار کجاست.




if(eregi("^[a-zA-Z0-9]+[a-zA-Z0-9\.\-_]*@[a-zA-Z0-9]+[a-zA-Z0-9\.\-]*\.[a-zA-Z]+$", $_POST[email]))
{
//#############//
}
else
{

;'آدرس ايميل از فرمت مناسب برخوردار نيست'echo
}

امیـرحسین
یک شنبه 22 اسفند 1389, 16:39 عصر
ereg؟ آرایه بدون کوتیشن؟ چه جدید! چه خبر از دقیانوس؟
از کد زیر استفاده کنید:

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
echo 'آدرس ايميل از فرمت مناسب برخوردار نيست';
} else {
// do something
}

phpweb
یک شنبه 22 اسفند 1389, 17:05 عصر
ereg؟ آرایه بدون کوتیشن؟ چه جدید! چه خبر از دقیانوس؟
از کد زیر استفاده کنید:

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
echo 'آدرس ايميل از فرمت مناسب برخوردار نيست';
} else {
// do something
}

این تابع که ارسال کردید از توابع خود پی اچ پی هستند؟

سوال دومم هم این هست که تابع ereg چه ایرادی داره؟ من فقط از این تابع استفاده می کنم. لطفا در این مورد هم توضیح بدید.

mtchabok
یک شنبه 22 اسفند 1389, 17:22 عصر
نگاهی به این لینک بندازید : http://php.net/manual/en/function.filter-var.php
سوال دومتون هم باید بگم که این تابع خیلی بهتر کار میکنه و به نوعی استاندارد برای بررسی نوعها و ... محسوب میشه .
این لینک هم شاید بهتون کمک کنه : http://www.w3schools.com/php/func_filter_var.asp

امیـرحسین
یک شنبه 22 اسفند 1389, 17:41 عصر
توابع ereg منقضی شده باید بجاش از توابع preg استفاده بشه.

numberone1
یک شنبه 22 اسفند 1389, 20:53 عصر
الان اين توابع و براي اولين بار شما استفاده كردين اينجا ديدم
ميشه كلا براي فيلتر كردن داده هاي ورودي از اين توابع كه معرفي شده استفاده كرد؟
اينجا (http://www.php.net/manual/en/function.filter-input.php) يه مثال زده ازش ولي اينا با انكدينگ utf-8 فارسي مشكل ندارن؟؟ تابع هاي قبلي كه خيلي مشكل داشتند


<?php
$_GET['search'] = 'foo'; // This has no effect on the filter_input

$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "You have searched for $search_html.\n";
echo "<a href='?search=$search_url'>Search again.</a>";

You have searched for Me &#38; son.
<a href='?search=Me%20%26%20son'>Search again.</a>
اگر اينجوري نتيجه خروجي بهم بريزه كه اصلا فايده نداره

رضا قربانی
یک شنبه 22 اسفند 1389, 21:55 عصر
برای فیلتر کردن کلمات باید از چه کدی استفاده کرد ؟ ممنون می شم راهنماییمون کنید

امیـرحسین
دوشنبه 23 اسفند 1389, 00:10 صبح
برای فیلتر کردن کلمات باید از چه کدی استفاده کرد ؟ ممنون می شم راهنماییمون کنید
فیلتر برای چه منظوری؟
این توابع از الگوهای استاندارد و ساده استفاده میکنند با تغییر پارامترها میشه مشکل فارسی رو حل کرد (احتمالا): Types of filters (http://www.php.net/manual/en/filter.filters.php)

king-net
دوشنبه 23 اسفند 1389, 00:45 صبح
اینو خودم نوشتم شما می تونید ازش استفاده کنید


function email($mail){
$ema = preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$mail);
if($ema){
return true;
}
else{
return false;
}
}

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

phpweb
دوشنبه 23 اسفند 1389, 02:10 صبح
اینو خودم نوشتم شما می تونید ازش استفاده کنید


function email($mail){
$ema = preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$mail);
if($ema){
return true;
}
else{
return false;
}
}

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

تفاوت preg_match و preg در چی هست؟

لطفا بگید که این توابع با تابع eregچه تفاوتی دارن؟

رضا قربانی
دوشنبه 23 اسفند 1389, 02:12 صبح
فیلتر برای چه منظوری؟
این توابع از الگوهای استاندارد و ساده استفاده میکنند با تغییر پارامترها میشه مشکل فارسی رو حل کرد (احتمالا): Types of filters (http://www.php.net/manual/en/filter.filters.php)

کلماتی که به صورت post ارسال می کنیم و یک جا می گیریم و میندازیم داخل یک متغیر ( حالا می خوام مثلا حروف "ی" رو فیلتر کنم تا وارد بانکم نشه )

phpweb
سه شنبه 24 اسفند 1389, 00:33 صبح
ereg؟ آرایه بدون کوتیشن؟ چه جدید! چه خبر از دقیانوس؟
از کد زیر استفاده کنید:

if(filter_var($_POST['email'], FILTER_VALIDATE_EMAIL) === false) {
echo 'آدرس ايميل از فرمت مناسب برخوردار نيست';
} else {
// do something
}

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


5+5#$%^&*o.o.$.5.-b@k.com

phpweb
سه شنبه 24 اسفند 1389, 00:59 صبح
اینو خودم نوشتم شما می تونید ازش استفاده کنید


function email($mail){
$ema = preg_match("/([\w\-]+\@[\w\-]+\.[\w\-]+)/",$mail);
if($ema){
return true;
}
else{
return false;
}
}

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

آدرسهای ایمیل کاراکترهای دات و آندرلاین (. _) رو هم در بر می گیرن ولی توی تابع شما به این کاراکترها اشاره ای نشده. اگر بتونید تابع رو تصحیح کنید، یه تابع کاربردی می شه.

امیـرحسین
سه شنبه 24 اسفند 1389, 18:59 عصر
کلماتی که به صورت post ارسال می کنیم و یک جا می گیریم و میندازیم داخل یک متغیر ( حالا می خوام مثلا حروف "ی" رو فیلتر کنم تا وارد بانکم نشه )
چنین فیلترهایی همون Replace محسوب میشند دیگه! با str_replace یا preg_replace این کارها رو میشه کرد.

numberone1
چهارشنبه 25 اسفند 1389, 14:56 عصر
الان اين توابع و براي اولين بار شما استفاده كردين اينجا ديدم
ميشه كلا براي فيلتر كردن داده هاي ورودي از اين توابع كه معرفي شده استفاده كرد؟
اينجا (http://www.php.net/manual/en/function.filter-input.php) يه مثال زده ازش ولي اينا با انكدينگ utf-8 فارسي مشكل ندارن؟؟ تابع هاي قبلي كه خيلي مشكل داشتند


<?php
$_GET['search'] = 'foo'; // This has no effect on the filter_input

$search_html = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_SPECIAL_CHARS);
$search_url = filter_input(INPUT_GET, 'search', FILTER_SANITIZE_ENCODED);
echo "You have searched for $search_html.\n";
echo "<a href='?search=$search_url'>Search again.</a>";

You have searched for Me &#38; son.
<a href='?search=Me%20%26%20son'>Search again.</a>
اگر اينجوري نتيجه خروجي بهم بريزه كه اصلا فايده نداره
كاش يكي هم پيدا ميشد يه نگاهي به اين پست ميكرد :ناراحت: