PDA

توجه ! این یک نسخه آرشیو شده میباشد و در این حالت شما عکسی را مشاهده نمیکنید برای مشاهده کامل متن و عکسها بر روی لینک مقابل کلیک کنید : مشکل با اسکريپت فرير و تابع eregi در 5.3.0 PHP



saberloty
May 30th, 2014, 11:21
با سلام
من وقتي توي تنظيمات فرير گزينه (اعتبارسنجی شماره تماس و ایمیل خریدار) را فعال ميکنم اگه فرد فقط ايميلشو وارد کنه مشکلي پيش نميادو به صفحه پرداخت بانک هدايت ميشه اما اگر شماره تماسشو وارد کنه پيغام خطاي زيرو ميده

Deprecated: Function eregi() is deprecated in /home/u381900739/public_html/shop/index.php on line 65

رفتم و خط 65 به بعد فايل index را چک کردم اينا بود
{
if (!$data[email] AND !$data[mobile])
$error .= 'برای استفاده از پشتیبانی سایت ایمیل یا شماره همراه خود را وارد کنید.‌<br />';
if ($data[email] AND filter_var($data[email], FILTER_VALIDATE_EMAIL)== false)
$error .= 'ایمیل وارد شده نامعتبر است.<br />';
if ($data[mobile] AND !eregi("^09([0-9]{9})$", $data[mobile]))
$error .= "شماره همراه نامعتبر است.<br />";
}
if($error)
echo $error.'__2';
else
{

اين مشکل را مطرح کردم و فردي پاسخ دادند :

تابع eregi از 5.3.0 PHP حذف شده دوست عزیز،
خودتون با یه تابع دیگه جایگزینش کنید
مثلا با تابع preg_match

ولي من نمي دونم چطوري بايد اين تغييرات را در چند خط بالا انجام دهم.فقط توي همون خط به جاي eregi قرار دادم preg_match بعد خطاي زير را داد
Warning: preg_match(): No ending delimiter '^' found in /home/u381900739/public_html/shop/index.php on line 65 شماره همراه نامعتبر است.

الان خيلي ها دارن از اين اسکريپت استفاده ميکنند يکي پيدا ميشه و به من کمک کنه اين مشکلو حل کنم؟به جاي چند خط بالا کدي که بايد قرار بدهم تا اين مشکل حل بشه و اعتبار سنجي بدون خطا انجام بشه چيه؟

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

saberloty
May 30th, 2014, 14:14
منتظر راهنمايي دوستان هستم

nginxweb
May 30th, 2014, 14:24
درود

دوست عزیز تابع فوق در php 5.3 دیگر استفاده نمیشه
بهترین کار اینه که هاستی تهیه کنید که امکان php selector داشته باشه که با php 5.2 کار کنید و مشکلتون حل شود

و یا اینکه باید یک برنامه نویس کدتونو ویرایش نماید و با preg_match بنویسد تا مشکلتون حل شود

isn
May 30th, 2014, 14:36
سلام برو صفحه اصلی Cpanel

پایین صفحه Php Version
رو بزن رو
5.2 ست کن

saberloty
May 30th, 2014, 15:35
با سلام
خط زیر را :

if ($data[mobile] AND !eregi("^09([0-9]{9})$", $data[mobile]))
با خط زیر تعویض کتید:

if ($data[mobile] && strlen($data[mobile])==11 && is_numeric($data[mobile]))


دوست عزيز تعويض کردم ولي الان خطا ميده که شماره همراه نامعتبر است

- - - Updated - - -


سلام برو صفحه اصلی Cpanel

پایین صفحه Php Version
رو بزن رو
5.2 ست کن

وقتي به 5.2 ست ميکنم در بالاي سايت اين پيغام ديده ميشه


Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/u381900739/public_html/shop/index.php:1) in /home/u381900739/public_html/shop/include/prepare.php on line 12



saberloty
May 30th, 2014, 18:05
out put buffer را On کنید

if ($data[mobile] && strlen($data[mobile])==11 ))

چطوي بايد on کنم بيشتر توضيح بدهيد

با کدي هم که داديد بازم نشد و خطاي زير را داد

Parse error: syntax error, unexpected ')' in /home/u381900739/public_html/shop/index.php on line 65

shahab-f
May 30th, 2014, 22:11
این خطو
if ($data[mobile] AND !eregi("^09([0-9]{9})$", $data[mobile]))
به این خطر تغییر دهید

if ($data[mobile] AND !preg_match("/^09([0-9]{9})$/", $data[mobile]))

saberloty
May 31st, 2014, 09:28
مشکل با کد دوست عزيزمون shahab-f حل شد.دوستاني که همچين مشکلي دارند مي تونند استفاده کنند