PDA

View Full Version : مشکل در نمایش خطا



majid534
یک شنبه 05 آذر 1391, 10:26 صبح
با سلام ...

من یک فرم طراحی کردم برای ثبت یک سری اطلاعات و سعیم این بود که پر کردن همه ی فیلدها الزامی باشه در غیر اینصورت اررور بده که نمیدونم کجای کارم ایراد داره که ارور نمایش داده نمیشه و صفحه سفیده ...
نمونه کد ها به این شرحه:



$Name = clean($_POST['Name']);
$LastName = clean($_POST['LastName']);
--------------------------------------------------------------------------------
if($Name == '') {
$errmsg_arr[] = 'First name missing';
$errflag = true;
}
if($LastName == '') {
$errmsg_arr[] = 'Last name missing';
$errflag = true;
}
--------------------------------------------------------------------------------

if($errflag) {
$_SESSION['ERRMSG_ARR'] = $errmsg_arr;
session_write_close();
header("location: err.php");
exit();
}


اینم اطلاعات صفجه err.php


if( isset($_SESSION['ERRMSG_ARR']) && is_array($_SESSION['ERRMSG_ARR']) && count($_SESSION['ERRMSG_ARR']) >0 ) {
echo '<ul class="err">';
foreach($_SESSION['ERRMSG_ARR'] as $msg) {
echo '<li>',$msg,'</li>';
}
echo '</ul>';
unset($_SESSION['ERRMSG_ARR']);
}
?>


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

با تشکر

tux-world
یک شنبه 05 آذر 1391, 10:54 صبح
من کدتون رو اینطوری نوشتم جواب میده:
<?php
$errmsg_arr[] = 'First name missing';
$errmsg_arr[] = 'Last name missing';
$_SESSION['ERRMSG_ARR']=$errmsg_arr;
print_r($_SESSION['ERRMSG_ARR']);
session_write_close();
if( isset($_SESSION['ERRMSG_ARR']) && $_SESSION['ERRMSG_ARR'] != '' ) {
echo '<ul class="err">';

foreach($_SESSION['ERRMSG_ARR'] as $msg) {

echo '<li>',$msg,'</li>';

}

echo '</ul>';

unset($_SESSION['ERRMSG_ARR']);

}

?>
تو صفحه err.php قبل از تمام کدها یه print_rبزنید به $_SESSION['ERRMSG_ARR'] ببینید اطلاعات درست میرسه تا اون جا یا نه

majid534
یک شنبه 05 آذر 1391, 11:22 صبح
از print_r($_SESSION['ERRMSG_ARR']); تو لاین 5 ارور میگیره

Parse error: syntax error, unexpected ';' in C:\xampp\htdocs\parsian\portal\register-exec.php on line 132

-------------------------------------------------


تو صفحه err.php قبل از تمام کدها یه print_rبزنید به $_SESSION['ERRMSG_ARR'] ببینید اطلاعات درست میرسه تا اون جا یا نه


بله ... به صفحه err.php رسید

اما هنوز ...

rezaonline.net
یک شنبه 05 آذر 1391, 15:32 عصر
من اینجوری نوشتم براتون
قسمت اول

@session_start();
$_SESSION['error_msg'] = array();

$_POST = array_map('clean',$_POST);

if(empty($_POST['Name']))
$_SESSION['error_msg'] = 'First name missing';

if(empty($_POST['LastName']))
$_SESSION['error_msg'] = 'Last name missing';

if( ! empty($_SESSION['error_msg']))
{
header("location: err.php");
exit();
}

و قسمت دوم


@session_start();
if( ! empty($_SESSION['error_msg']))
{
echo '<ul class=err>';

foreach($_SESSION['error_msg'] as $msg)
echo '<li>'.$msg.'</li>';

echo '</ul>';
}

$_SESSION['error_msg'] = array();

majid534
یک شنبه 05 آذر 1391, 16:04 عصر
بسیار عالی
فکر میکنم حل شد ...

فقط یک مشکلی که هست ...
با این کد ک شما اوکی کردید به جای نمایش پیغام، ارور
Warning: Invalid argument supplied for foreach() in C:\xampp\htdocs\parsian\portal\err.php on line 10

که مربوط میشه به
foreach($_SESSION['error_msg'] as $msg)
( در قسمت دوم )
رو میده اما اگه فیلد ها حالی نباشه با موفقیت ثبت نام کامل میشه...

با تشکر

majid534
یک شنبه 05 آذر 1391, 20:56 عصر
با تشکر از همه....
مشکل حل شد ...

نمیدونم چرا اما از همون تبدیل به $msg ایراد میگرفت ...
( حذفش کردم درست شد )

حالا اگر بخوایم همه ی ارور ها رو یکجا به ما نشون بده چی پیشنهاد میدین ؟
چون الآن هربار یکی از ارور ها رو نشون میده

2undercover
دوشنبه 06 آذر 1391, 15:17 عصر
کافیه یک نقطه قبل از = که برای مقدار دهی به session استفاده کردید قرار بدید.

majid534
دوشنبه 06 آذر 1391, 21:19 عصر
متوجه نشدم کجا رو میگید

tux-world
دوشنبه 06 آذر 1391, 21:36 عصر
کدی رو که براتون گذاشتم رو دوبار تست کردم. مشکلی نداشت.
اینطوری میگه دوستمون:

if($Name == '') {
$errmsg_arr[] = 'First name missing';
$errflag = true;
}
if($LastName == '') {
$errmsg_arr[] .= 'Last name missing';
$errflag = true;
}

majid534
دوشنبه 06 آذر 1391, 22:08 عصر
ممنون از پشتیبانیتون

بر این اساسه الآن کدها :

if(empty($_POST['Name']))
$_SESSION['error_msg'] = '*لطفا قسمت مربوط به نام را پر کنید';
if(empty($_POST['LastName']))
$_SESSION['error_msg'] = '*لطفا قسمت مربوط به نام خانوادگی را پر کنید';

و منظورتون از نقطه به این صورته ؟ :


if(empty($_POST['Name']))
$_SESSION['error_msg'] .= '*لطفا قسمت مربوط به نام را پر کنید';
if(empty($_POST['LastName']))
$_SESSION['error_msg'] .= '*لطفا قسمت مربوط به نام خانوادگی را پر کنید';

اگر آره ...

خیر ... جواب نداد و هنوز هم ارور ها بصورت تک تک نمایش داده میشه

ممنون

rezaonline.net
دوشنبه 06 آذر 1391, 22:12 عصر
معذرت میخوام
یه اشتباه جزئی توی کد بود
اصلاح کنید

قسمت اول


@session_start();
$_SESSION['error_msg'] = array();

$_POST = array_map('clean',$_POST);

@session_start();
if(empty($_POST['Name']))
$_SESSION['error_msg'][] = 'First name missing';

if(empty($_POST['LastName']))
$_SESSION['error_msg'][] = 'Last name missing';

if( ! empty($_SESSION['error_msg']))
{
header("location: err.php");
exit();
}


قسمت دوم

@session_start();
if( ! empty($_SESSION['error_msg']))
{
echo '<ul class=err>';

foreach( (array) $_SESSION['error_msg'] as $msg)
echo '<li>'.$msg.'</li>';

echo '</ul>';
}

$_SESSION['error_msg'] = array();

majid534
دوشنبه 06 آذر 1391, 22:21 عصر
اووووومممم متوجه شدم ، این مشکل حل شد...

نمایش ارور ها رو چ کنیم ...

مرسی بابت پیگیری

rezaonline.net
دوشنبه 06 آذر 1391, 22:31 عصر
الان کجاش مشکل داره ؟

majid534
دوشنبه 06 آذر 1391, 22:34 عصر
نمایش ارور ها به صورت یکجا ...
الآن هر بار که فرم ارسال میشه یکی از ارور ها نشون داده میشه ...

میخوام جوری باشه که فرم که ارسال شد اگر اروری بود همه با هم یکجا نمایش داده بشه

ممنون

rezaonline.net
دوشنبه 06 آذر 1391, 22:56 عصر
الان همه با هم نشون داده میشن به جان عمه ام :لبخندساده:

majid534
دوشنبه 06 آذر 1391, 23:20 عصر
:قهقهه: متوجه اشتباهم شدم ...
واقعا ممنون ...

مشکل اصلی حل شد ...

یه سوال از حاشیه

من کد captcha رو اوکی کردم به اینصورت :


require('php-captcha.inc.php');

if (PhpCaptcha::Validate($_POST['user_code'])) {
$_SESSION['error_msg'][] = '* کد امنیتی چک شود';
}


اما توی پردازش هیچ فرقی نمیکنه ...
یعنی عملا بی تاثیره و در هر حال فرم ارسال میشه

با تشکر

rezaonline.net
دوشنبه 06 آذر 1391, 23:44 عصر
من این کپچا نمیدونم چیه اما طبیعاً متدvalidate در صورت صحیح بودن کپچا باید true برگردونه پس باید اینجوری بزنید .

if ( ! PhpCaptcha::Validate($_POST['user_code']))
{
$_SESSION['error_msg'][] = '* کد امنیتی چک شود';
}

majid534
سه شنبه 07 آذر 1391, 00:09 صبح
با این برگشتی که زد دیگه ار فرم رد نمیشه و کلا چه captcha درست وارد شده باشه و چه غلط و چ خالی باشه ازش ایراد میگیره ...

ممنون

rezaonline.net
سه شنبه 07 آذر 1391, 01:54 صبح
مشکل از کپچاست .

majid534
سه شنبه 07 آذر 1391, 12:52 عصر
فکر نمیکنماااااا :
لینک (http://barnamenevis.org/showthread.php?233055-%DA%A9%D8%AF%D9%86%D9%88%DB%8C%D8%B3%DB%8C-%D9%88-%D8%B3%D8%A7%D8%AE%D8%AA-CAPTCHA-%D8%A8%D9%87-%D9%87%D9%85%D8%B1%D8%A7%D9%87-Audio)

majid534
پنج شنبه 09 آذر 1391, 19:00 عصر
راهی نبود؟

rezaonline.net
پنج شنبه 09 آذر 1391, 21:23 عصر
مشکل از دستور نیست .
مشکل از جای دیگه ای هست
ببینید سسشن درست ست میشه ؟

majid534
یک شنبه 12 آذر 1391, 21:50 عصر
بله ...
session ham okeye