PDA

View Full Version : نمایش error به کاربر در php



mohsen00
شنبه 19 خرداد 1397, 02:37 صبح
سلام دوستان

یه سیستم عضویت دارم که ارور رو به کاربر در صفحه بعد نشون میده به این شکل


echo '<b align="center"> این نام کاربری وجود دارد<a href="">لطفاً برای ادامه دوباره اینجا کلیک کنید</a>.</b>' . PHP_EOL;

یعنی خطارو بین این دوتا تگ . PHP_EOL و echo که وقتی کاربر فرم رو پر میکنه و رو دکمه ادامه کلیک میکنه خطا میره صفحه بعد نمایش میده که اعصاب ادم خورد میشه باز باس بگم {کاربر فلان جا کلیک کن برگرد عقب فرم رو درستش کن}
ولی من میخام خطارو همونجا تو همون صفحه که فرم ثبت نام هست بهش نشون بده حالا یا با جاوا اسکریپت یا پی اچ پی

یه چیزی هم فکرم هست کاش میشد مثلا همون لحظه که کاربر اسمش مینویسه بصورت آنی اسمش و یا پسورد یا شماره موبایل یا ایمیلش چک بشه
خواهشا تو این مورد کمکم کنین مبتدی هستم
تشکر

thacker
شنبه 19 خرداد 1397, 03:25 صبح
به نظرم هم میتونی از طریق Ajax اقدام کنی و هم از طریق اینکه پیام خطا رو توی سشن ذخیره کنی و در صورت خطا دادن فرم ، کاربر رو به صفحه جدید منتقل نکنی. متن خطا رو از سشن چک کنی و در صورت وجود برای کاربر توی همون صفحه نمایش بدی

mohsen00
شنبه 19 خرداد 1397, 05:35 صبح
به نظرم هم میتونی از طریق Ajax اقدام کنی و هم از طریق اینکه پیام خطا رو توی سشن ذخیره کنی و در صورت خطا دادن فرم ، کاربر رو به صفحه جدید منتقل نکنی. متن خطا رو از سشن چک کنی و در صورت وجود برای کاربر توی همون صفحه نمایش بدی
ممنون
میتونید کد نمونه سشن که ذخیره میشه رو بهم معرفی کنین که از روی اون بتونم این فرم درست کنم

thacker
شنبه 19 خرداد 1397, 08:26 صبح
مثال برای قسمت تائید فرم :

$name = $_POST['name'];
$email = $_POST['email'];

if(empty($name)) {
$_SESSION['formError'] = 'لطفا فیلد نام را تکمیل کنید';
}

برای نمایش خطا هم این کد رو در قسمتی که میخواهید خطا نمایش داده بشه بگذارید:

if($_SESSION['formError']) { echo $_SESSION['formError']; }

mohsen00
شنبه 19 خرداد 1397, 19:17 عصر
اونی که پر کردن فیلد هست کد و خطای اونو دارم یعنی نیاز براش خطا نشون بدم سشن اول صفحه وجود داره و بعدش خود مرورگر با هربار کلیک روی دکمه ادامه تشخیص میده میگه که باید فیلد مورد نظر پر بشه

این قسمت رو فقط میخام نمایش بده یعنی بررسی که میکنه نام کاربری وجود داره یا نه
فکر کنم منظورش یه همچین چیزی هست
اگه کاربری با کاربر دیگه مشخصاتش یکی بود و برابر با صفر نبود این ارور رو نشونش بده
کد به شکل زیره


if($user && $user->num_rows > 0) {

// بعد میاد با این خطارو نشون میده

echo'لطفا نام کاربری دیگر انتخاب کنید' . PHP_EOL;


فقط همین نمایش خطارو میخام یا به صورت اسکرین براش ظاهر بشه یا به صورت متن در خود فرم درجایی که مشخص میکنم

thacker
شنبه 19 خرداد 1397, 22:57 عصر
if($user && $user->num_rows > 0) {

$_SESSION['formError'] = 'لطفا نام کاربری دیگر انتخاب کنید';
header("Location:$_SERVER['REQUEST_URI']");

}

نمایش خطا توسط جاوا اسکریپت ( Alert ) :

if($_SESSION['formError']) { echo '<script type="text/javascript"> alert('.$_SESSION['formError'].'); </script>'; }

نمایش خطا بصورت متنی در محل مشخص :

if($_SESSION['formError']) { echo $_SESSION['formError']; }

mohsen00
یک شنبه 20 خرداد 1397, 00:07 صبح
هر سه تا رو همه جوره تست کردم درست نشد
وقتی هم این کد میاد صفحه دیگه بالا نمیاد اصلا

header("Location:$_SERVER['REQUEST_URI']");

thacker
یک شنبه 20 خرداد 1397, 01:43 صبح
سشن رو استارت کردید ؟؟

در صورتی که امکانش هست کدهای صفحه رو بفرستید

mohsen00
دوشنبه 28 خرداد 1397, 07:08 صبح
کسی نیست در قبال هزینه ای این فرم رو برام درست کنه؟

charcharkh
دوشنبه 28 خرداد 1397, 11:30 صبح
اینکود صفحه رو توی نود پد دلاس بزار روی utf 8 without BOM ببین درست میشه سشن رو هم اول از همه بایست استارت کنی بدون هیچ کد قبلی و در ضمن اگر کدهاتو میذاشتی اینجا بهتر میشد راهنمایی کرد .

charcharkh
سه شنبه 29 خرداد 1397, 10:08 صبح
اول از همه که سشن رو درست استارت نکردید قبلا session_start(); هیج چیزی نبایست باشه

در ضمن این کدهایی که نوشتی خیلی زیادی اسپاگتی هست که فکر کنم حتی خود ما هم که نوشتییش یه یک ماه دیگه بهش رجوع کنی هیچی ازش سر در نمیاری من یه لاگین و ریجیستر تمیزتر و البته خب مبتدی هست کدهاش برات فرستادم یه نگاه بهش بیانداز حتی اگر از این کدهای بنده هم استفاده نکنی ارزش یکبار دیدن رو داره.

میتونی یک مسیر بهتری رو باهاش انتخاب کنی .

در ضمن سعی کنید یه فریمورک یاد بگیرید خیلی بهتره مثلا با codeigniter شروع کنید.

در ضمن حتما نیاز نیست از PHP_EOL استفاده کنید همون br کافیست.

charcharkh
سه شنبه 29 خرداد 1397, 10:10 صبح
اینم کدهای لاگین و رجیستر