تالار گفتمان nCIS.ir

نسخه‌ی کامل: نحوه نمایش خطاها در php با استفاده از ajax
شما در حال مشاهده نسخه آرشیو هستید. برای مشاهده نسخه کامل کلیک کنید.
درود 
فرم عضویتی دارم که بعد از تکمیل فیلدها کاربر روی ادامه کلیک میکنه و دیتابیس که چک میشه خطا رو در صفحه بعد نشون کاربر میده 
ولی میخام خطاها در همون صفحه عضویت بصورت اجاکس بهش نشون داده بشه 
کسی میتونه راهنماییم کنه ممنون 
کدها به شکل زیر هست

<?php
require_once './config.php';
if(!isset($_SESSION)) {
   session_start();
}
if(!isset($_SESSION['username'])) { $_SESSION['username'] = ''; }
if(!isset($_SESSION['password'])) { $_SESSION['password'] = ''; }
if(!isset($_SESSION['confirm'])) { $_SESSION['confirm'] = ''; }
if(!isset($_SESSION['gender'])) { $_SESSION['gender'] = '1'; }
if(!isset($_SESSION['mobile'])) { $_SESSION['mobile'] = ''; }
if(!isset($_SESSION['name'])) { $_SESSION['name'] = ''; }

?>

// کدهای وسط صفحه 

<form class="login_form" action="" required="required" method="post">
<input style="display:none">
<input type="password" style="display:none">
<?php
if(isset($_POST['submitted'])) {
   if(isset($_POST['username'])) { $_SESSION['username'] = $_POST['username']; }
   if(isset($_POST['password'])) { $_SESSION['password'] = $_POST['password']; }
   if(isset($_POST['confirm'])) { $_SESSION['confirm'] = $_POST['confirm']; }
   if(isset($_POST['gender'])) { $_SESSION['gender'] = $_POST['gender']; }
   if(isset($_POST['mobile'])) { $_SESSION['mobile'] = $_POST['mobile']; }
   if(isset($_POST['name'])) { $_SESSION['name'] = $_POST['name']; }
  
   $vars = array('username', 'password', 'confirm', 'gender', 'mobile');
   $flag = true;
   foreach($vars as $var) {
       if(!isset($_POST[$var]) || trim($_POST[$var]) === '') {
           $flag = false;
           break;
       }
   }
   if($flag) {
       $mysqli = new mysqli($sqlhost, $sqluser, $sqlpass, $database);
       if($mysqli) {
           $mysqli->query('SET NAMES 'utf8'');
           $mysqli->set_charset('utf8');
           $post['username'] = strtolower($mysqli->real_escape_string($_POST['username']));
           $post['password'] = md5($_POST['password']);
           $post['confirm'] = md5($_POST['confirm']);
           $post['gender'] = $mysqli->real_escape_string($_POST['gender']);
           if(!in_array($post['gender'], array('1', '2'))) {
               $post['gender'] = '1';
           }


           $post['mobile'] = substr($mysqli->real_escape_string($_POST['mobile']), -10);
           $user = $mysqli->query("SELECT * FROM `{$prefix}users` WHERE (LOWER(`username`)='{$post['username']}')");
           
           $post['name'] = $mysqli->real_escape_string($_POST['name']);
           
           if($user && $user->num_rows > 0) {
              
echo '<b align="center">این نام قبلا ثبت شده است</b>' . PHP_EOL;
               echo '<b align="center">لطفا  <a href="" class="login_label5 sub_color5">اینجا کلیک کنید و اسم دیگری انتخاب کنید</a>.</b>' . PHP_EOL;
           }
        
           else {
               $user = $mysqli->query("SELECT * FROM `{$prefix}users` WHERE (`mobile`='{$post['mobile']}')");
               if($user && $user->num_rows > 0) {
                   echo '<b align="center">این شماره موبایل قبلاً استفاده شده است. با هر شماره موبایل فقط یک شناسه کاربری قابل ثبت است.</b><br />' . PHP_EOL;
                   echo '<b align="center">لطفا<a href="" class="login_label5 sub_color5">اینجا کلیک</a> کنید و با شماره جدید مجددا ثبت نام کنید </b>' . PHP_EOL;
               }
               elseif($post['password'] != $post['confirm']) {
                   echo '<b align="center">رمز عبور و تکرار آن یکسان نیست.</b>' . PHP_EOL;
                   echo '<b align="center">لطفا مجددا<a class="login_label5 sub_color5" href=""> اینجا کلیک </a>کنید و رمز عبور را اصلاح کنید</b>' . PHP_EOL;
               }
               else {
                   
                   $mysqli->query("INSERT INTO `{$prefix}users` (`username`,`password`,`type`,`gender`,`mobile`,`active`,`name`) VALUES ('{$post['username']}','{$post['password']}','user','{$post['gender']}','{$post['mobile']}','0','{$post['username']}')");
                   if($mysqli->affected_rows > 0) {
                       echo '<b align="center;color:red;">ثبت نام انجام شد</b>' . PHP_EOL;
                       
                     
                       unset($_SESSION['username'], $_SESSION['password'], $_SESSION['confirm'], $_SESSION['gender'], $_SESSION['mobile'], $_SESSION['name']);
                   }
                   else {
                       echo '<b align="center">در هنگام ثبت نام، خطایی رخ داده است.</b>' . PHP_EOL;
                       echo '<b align="center">لطفاً دوباره <a href="/" class="login_label5 sub_color5"> اینجا کلیک کنید و مجددا ثبت نام کنید </a><br/><br/>
در صورتی که مشکل رفع نشد , لطفا 
<a href="/contact" class="login_label5 sub_color5">اینجا کلیک کنید و با پشتیبانی سایت تماس بگیرید</a>.</b>' . PHP_EOL;
                   }
               }
           }
       }
   }
   else {
       echo '<b align="center">فرم ثبت نام را ناقص تکمیل کرده اید.</b>' . PHP_EOL;
       echo '<b align="center">لطفاً دوباره <a href="/" class="login_label5 sub_color5">اینجا کلیک کرده و سعی کنید</a>. درصورتی که مشکل برطرف نشد، با پشتیبانی سایت تماس بگیرید.</b>' . PHP_EOL;
   }
}
else {
?>

<p class="login_label">نام کاربری</p>
<input id="user_username" class="input_data background_box" type="text" maxlength="20" name="username" value="<?php echo $_SESSION['username']; ?>">


<p class="login_label">کلمه عبور</p>
<input id="user_password" class="input_data background_box" maxlength="30" type="password" name="password" value="<?php echo $_SESSION['password']; ?>"><br />


<p class="login_label">تکرار کمله عبور</p>
<input id="user_password" class="input_data background_box" maxlength="30" type="password" name="confirm" value="<?php echo $_SESSION['confirm']; ?>"><br />


<div id="login_gage">
<div id="login_sexe">
<p class="login_label">جنسیت</p><b>
<select name="gender" id="login_select_gender" class="login_select">
<option<?php if($_SESSION['gender'] == '1') { echo ' selected="selected"'; } ?> value="1"> پسر </option>

<option<?php if($_SESSION['gender'] == '2') { echo ' selected="selected"'; } ?> value="2">دختر</option></select>
<br /></b></div></div>
<p class="login_label">شماره موبایل</p>
<input id="user_password" class="input_data background_box"  maxlength="11" name="mobile" type="text" value="<?php echo $_SESSION['mobile']; ?>"><br />



<div id="login_control">

<input class="sub_button hover_element selected_element" id="login_button" method="post" name="submitted" type="submit"  value="ادامـــه"><br></div>


<?php
}
?>
</div>

</div>
</div>
</div>
</body>
</html>
کسی نیست در قبال هزینه ای این فرم رو برام درست کنه؟
سلام
یکم ویرایش کد ها برای من سخت بود به خاطر همین من شیوه کار با ایجکس توی jquery رو به صورت کلی اینجا میگم

شکل کلیش این شکلی هست:

$.ajax({
    type: "post",
    cache: false,
    contex: this,
    url: // آدرسی که به اون میخواید موارد رو پست کنید,
    data: // پارامتر های ارسالی برای صفحه ایجکس که به صورت آبجکت نام و مقدار جایگذاری میشه مثالش رو پایین میزنم,
    beforeSend: function () {
        // عملیاتی که قبل از تمام شدن عملیات ایجکس باید انجام بشه ... مثل نمایش لودر
    },
    error: function (result) {
        console.log(result);
        // اگر عملیات ایجکس با مشکل روبرو باشه این فانکشن صدا زده میشه
    },
    success: function (result) {
        // موقع انجام کامل ایجکس هم این فانکشن صدا زده میشه
        // البته این فانکشن به معنی موفق بودن عملیات شما نیست
        // به معنی باز کردن موفق یه صفحه است
        // که خب طبیعیه ، یه صفحه میتونه خطا هم داشته باشه
    }

});

مثالی از یک شی پارامتر:

{
    "username": "user1",
    "password": "1234",
    "mobile": "09123456789",
}