زمان جاری: 2012/02/06, 05:02 PM خوش آمدید مهمان گرامی! (ورودعضویت)



عدم اعتبار سنجی برای یک تکست باکس


ارسال موضوع  ارسال پاسخ 
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
عدم اعتبار سنجی برای یک تکست باکس
نویسنده پیام
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #1
عدم اعتبار سنجی برای یک تکست باکس
سلام
توی قالبم به نوار کوچک بالای سایت در نظر گرفتم برای ورود کاربر که نام کاربری و پسورد رو از کاربر میگیره و لاگین میکنه.
مشکلی که الان به وجود اومده توی صفحه رجیستر است. دارم برای عناصر فرم رجیستر validation ست میکنم که این فرم هم نام کاربری و پسورد داره.
توی این صفحه اگر کاربر مقداری رو اشتباه وارد کنه یا اصلا وارد نکنه پیغام خطای مناسب چاپ میشه. اما متاسفانه این پیغام ها علاوه بر فرم رجیستر در نوار لاگین هم چاپ میشه !!
چطور میتونم دستوری بدم که برای فیلدهای نوار بالا پیغام validation ها چاپ نشه ؟؟
برای ساختن تکست باکس نام کاربری از همچین دستوری دارم استفاده میکنم :
کد PHP:
$form->input('username', array('label'=>false'div'=>false'dir'=>'ltr''class'=>'class')); 
(آخرین تغییر در این ارسال: 2010/09/03 08:14 PM توسط horap30.)
2010/09/03 08:11 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #2
RE: عدم اعتبار سنجی برای یک تکست باکس
خوب توضیح ندادم ؟؟؟؟ Huh
2010/09/04 12:11 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 666
تاریخ عضویت: Dec 2009
رتبه: 9
تشکر: 246
459 بار تشکر شده در 351 پست
ارسال: #3
RE: عدم اعتبار سنجی برای یک تکست باکس
چندین راه داره
1- استفاده از اعتبار سنجی سفارشی که این جا شما می تونید چک کنید که اگر اگشن ثبت کار بر باشه اعتبار سنجی انجام نشه.

2- می تونید اولین خط اگشن ریجستر بیاید اون فییلد رو از آرایه های ولیدشن حذف کنید
مثلا این شگلیی (فقط یک مثال هست)
کد PHP:
unset($this->Model->validate['ussername']) 
2010/09/04 05:51 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #4
RE: عدم اعتبار سنجی برای یک تکست باکس
من توی اکشن رجیستر 2 تا فرم دارم! یکی فرم لاگین بالای صفحه که توی تمام قالب هست یکی هم فرم رجیستر. میخام اعتبار سنجی ها توی فرم رجیستر نمایش داده بشه اما توی فرم لاگین نمایش داده نشه.
الان مشکل اینه که هر دوی اینا با هم قاطی میشه یعنی اگر من نام کاربری رو اشتباه وارد کنم توی فرم لاگین هم خطا رو نمایش میده در صورتی که نباید نشون بده.

من میخام خطا ها توی فرم بالا نمایش داده نشه نه توی فرم رجیستر.

این راه دومی که شما فرمودید رو هم استفاده کردم اما نتیجه این شد که حالا خطای نام کاربری رو توی این صفحه اصلا نشون نمیده چه توی فرم رجیستر چه فرم لاگین !
2010/09/04 10:32 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
parsig آفلاین
Super Moderator
******

ارسال‌ها: 218
تاریخ عضویت: Jan 2010
رتبه: 5
تشکر: 78
224 بار تشکر شده در 117 پست
ارسال: #5
RE: عدم اعتبار سنجی برای یک تکست باکس
ببینید ؛ کیک ولیدیت ها رو به این صورت انجام میده که اگر یه فیلدی اررور ولیدیت داشته باشه به div که برای اون فیلد می سازه یه کلاس نسبت می ده و اون فیلد با سی اس اس فرمت می گیره !
حالا وقتی شما div رو false کردید کیک چطور برای شما ولیدیت انجام بده !؟

[تصویر: ubuntu2_userbar.gif]
2010/09/04 05:43 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #6
RE: عدم اعتبار سنجی برای یک تکست باکس
اینجا شکلک گریه نداره ؟؟؟؟
شما درست نمیخونید من چی نوشتم یا شایدم من بد توضیح دادم.
درسته من div رو false کردم اما پیغام های خطا داره چاپ میشه.
مشکل من چاپ شدن پیغام ها نیست مشکل من اینه که توی این صفحه 2 تا فرم دارم یه دونه فرم لاگین یکی هم فرم رجیستر که هر 2 تاشون هم نام کاربری و رمز عبور دارن.
حالا اگر کاربر داره فرم رجیستر رو پر میکنه و قرار باشه برای نام کاربری پیغام خطا چاپ بشه ، این پیغام توی فرم لاگین هم چاپ میشه عکسش رو هم ضمیمه کردم که کاملا متوجه منظورم بشید.

حالا کاری که من میخام انجام بدم اینه که پیغام های اعتبار سنجی (نام کاربری و رمز عبور) در فرم لاگین چاپ نشه ! همین .
مرسی
یه فکری هم به حال شکلک گریه اینجا بکنید Big Grin


فایل‌های ضمیمه بند انگشتی
   
(آخرین تغییر در این ارسال: 2010/09/04 09:07 PM توسط horap30.)
2010/09/04 09:05 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
parsig آفلاین
Super Moderator
******

ارسال‌ها: 218
تاریخ عضویت: Jan 2010
رتبه: 5
تشکر: 78
224 بار تشکر شده در 117 پست
ارسال: #7
RE: عدم اعتبار سنجی برای یک تکست باکس
ببخشید بابت پاسخگویی نا مناسب
راهی که بنده به ذهنم می رسه اینه که شما توی تابع لاگین اولین دستوری که می نویسید این باشه :
کد PHP:
$this->ModelName->validate = array(); 
نمی دونم راه منطقی تر و مناسب تری هم هست یا خیر

[تصویر: ubuntu2_userbar.gif]
2010/09/04 10:02 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : horap30
saleh آفلاین
Administrator
*******

ارسال‌ها: 666
تاریخ عضویت: Dec 2009
رتبه: 9
تشکر: 246
459 بار تشکر شده در 351 پست
ارسال: #8
RE: عدم اعتبار سنجی برای یک تکست باکس
اگر مقداری برای خودتون تجزیه تحلیل کنید سریع راه ساده پیدا مینیکنید
مشکل شما اینجاست که دو فرم مجزا اما مرتبط با یک مودال رو دارید در یک صفحه استفاده میکنید.
هر فرم مقادیر رو مجزا ارسال میکنند اما یکسان جواب رو از مودال میگیرید
چون فیلد های شما همنام هست به همین خاطر جواب رو همه فرم ها اعمال میشه

و این هم یک راه حل ساده. البته راه زیاد داره
کد PHP:
$err = array( 'error' => null );
if ( isset (
$this->data['User']['login'] )
  
$err=array();
$form->create('user')
$form->input('user'$err);

$form->input('pass'$err);
$form->input('login' );
$form->end;

$err = array( 'error' => null );
if ( isset (
$this->data['User']['reg'] )
    
$err['error]=null;
$form->create('
user')
$form->input('
user'$err);
$form->input('
pass', $err);
$form->input('
reg' );
$form->end; 
2010/09/04 10:13 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #9
RE: عدم اعتبار سنجی برای یک تکست باکس
متاسفانه این راه هم جواب نداد.
این کد متد لاگین منه :
کد PHP:
function login(){
            
$this->User->validate = array(); 
            if(
$this->Session->read('Auth.User.id')){
            
                
$this->redirect('/');
            }
        } 

یه راه که به ذهن خودم رسیده اینه که توی صفحه رجیستر از یک layout دیگه استفاده بکنم که فرم لاگین نداشته باشه اما این کار حذف کردن مشکل هست. به هر حال ممکنه صفحاتی باشن که چندین فرم توش باشه نمیشه که همیشه صورت مساله رو حذف کرد Confused
باید یه راه منطقی برای این مشکل وجود داشته باشه. من هرچی سرچ کردم نتیجه نگرفتم Sad
2010/09/04 10:17 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
parsig آفلاین
Super Moderator
******

ارسال‌ها: 218
تاریخ عضویت: Jan 2010
رتبه: 5
تشکر: 78
224 بار تشکر شده در 117 پست
ارسال: #10
RE: عدم اعتبار سنجی برای یک تکست باکس
اسم فیلد های فرم ورود رو عوض کنید !
به شکل زیر :
کد PHP:
echo $form->create('User');
echo 
$form->input('lusername');
echo 
$form->input('lpassword'); 

بعد توی متد لاگین کنترلر بنویسید :
کد PHP:
$this->data['User']['user'] = $this->data['User']['lusername'];
$this->data['User']['pass'] = $this->data['User']['lpassword']; 

[تصویر: ubuntu2_userbar.gif]
(آخرین تغییر در این ارسال: 2010/09/04 10:40 PM توسط parsig.)
2010/09/04 10:40 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #11
RE: عدم اعتبار سنجی برای یک تکست باکس
از اون تکه کد صالح جان که هیچی نفهمیدم هر کاریش هم کردم نشد.

نام فیلدها رو هم عوض کردم. الان دیگه پیغام ها چاپ نمیشه ولی مشکل بزرگتری که به وجود اومده اینه که دیگه کاربر نمیتونه لاگین کنه Big Grin
این رو هم عرض کنم که من یوزر و پسورد پیش فرض کامپوننت Auth رو طبق مقاله سایت الوان وب تغییر دادم.
من تمام کد ها رو میذارم اینجا شما یه نگاه بکنید ببینید مشکل از کجاست :
متن لاگین
کد PHP:
function login(){
            
            if(!empty(
$this->data)){
                
$this->data['User']['uid'] = $this->data['User']['luid'];
                
$this->data['User']['secretpass'] = $this->data['User']['lsecretpass'];
            }
            
            if(
$this->Session->read('Auth.User.id')){
            
                
$this->redirect('/');
            }
        } 

فرم لاگین
کد PHP:
<?php
            
echo $form->create('User', array('url' => array('controller' => 'users''action' => 'login'), 'class'=>'login'));
        
?>
        <table>
            <tr>
                <td style="width: 80px; padding-top: 3px;"><label>نام کاربری : </label></td>
                <td style="padding-top: 2px;"><?php echo $form->input('luid', array('label'=>false'div'=>false'dir'=>'ltr''class'=>'txtpsw')); ?></td>
                <td style="width: 60px; padding-top: 3px;"><label>رمز عبور : </label></td>
                <td style="padding-top: 2px;"><?php echo $form->input('lsecretpass', array('type' => 'password''label'=>false'div'=>false'dir'=>'ltr''class'=>'txtpsw')); ?></td>
                <td><?php echo $form->submit('ورود', array('class'=>'submit')); ?></td>
            </tr>
        </table>
        <?php echo $form->end(); ?>

تنظیمات Auth که در app_controller وارد کردم
کد PHP:
function beforeFilter(){
            
Security::setHash('md5');
            
$this->Auth->fields = array('username' => 'uid''password' => 'secretpass');
            
$this->Auth->userScope = array('User.confirm' => 'y');
            
$this->Auth->loginAction = array('admin' => false'controller' => 'users''action' => 'login');
            
$this->Auth->logoutRedirect 'http://127.0.0.1';
        } 
اگر نام فیلدها رو عوض نکنم لاگین کار میکنه ولی الان دیگه نمیشه لاگین کرد.
2010/09/04 11:51 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 666
تاریخ عضویت: Dec 2009
رتبه: 9
تشکر: 246
459 بار تشکر شده در 351 پست
ارسال: #12
RE: عدم اعتبار سنجی برای یک تکست باکس
هر دو فرم رو بزارید انجا
2010/09/05 12:08 AM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #13
RE: عدم اعتبار سنجی برای یک تکست باکس
اینم فرم رجیستر :
کد PHP:
<?php echo $form->create('User', array('url' => array('controller' => 'users''action' => 'register'))); ?>
<table>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>نام کاربری : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('uid', array('label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)); ?></td>
    </tr>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>ایمیل : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('email', array('label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)); ?></td>
    </tr>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>رمز عبور : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('password', array('label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)); ?></td>
    </tr>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>تکرار رمز عبور : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('confirm_password', array('type'=>'password''label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)); ?></td>
    </tr>
    <tr><td colspan="2">&nbsp;</td></tr>
    <tr>
        <td>&nbsp;</td>
        <td><?php echo $form->submit('ثبت نام', array('class'=>'submit')); ?></td>
    </tr>
</table>
<?php echo $form->end(); ?>
اینم متد رجیستر
کد PHP:
function register(){
        
            if(!empty(
$this->data)){
                
                if(
$this->data['User']['password'] !== $this->data['User']['confirm_password']){
                    
$this->redirect('/users/register');
                }
                unset(
$this->data['User']['confirm_password']);
                
$this->data['User']['secretpass'] = Security::hash($this->data['User']['password'], nulltrue);
                
$this->data['User']['confirm'] = 'n';
                
                if(
$this->User->save($this->data)){
                    
$this->redirect('/users/login');
                }
            }
        } 
(آخرین تغییر در این ارسال: 2010/09/05 12:40 AM توسط horap30.)
2010/09/05 12:37 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #14
RE: عدم اعتبار سنجی برای یک تکست باکس
این تاپیک بی نتیجه موند ؟
حالا من چه کار کنم با این مشکل ؟ Confused
2010/09/06 10:13 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 666
تاریخ عضویت: Dec 2009
رتبه: 9
تشکر: 246
459 بار تشکر شده در 351 پست
ارسال: #15
RE: عدم اعتبار سنجی برای یک تکست باکس
کد PHP:
<?php
    
    
if ( isset ($this->data['User']['login'] ) $err=array(); else $err = array( 'error' => null );
            echo 
$form->create('User', array('url' => array('controller' => 'users''action' => 'login'), 'class'=>'login'));
        
?>
        <table>
            <tr>
                <td style="width: 80px; padding-top: 3px;"><label>نام کاربري : </label></td>
                <td style="padding-top: 2px;"><?php echo $form->input('luid', array('label'=>false'div'=>false'dir'=>'ltr''class'=>'txtpsw')+$err); ?></td>
                <td style="width: 60px; padding-top: 3px;"><label>رمز عبور : </label></td>
                <td style="padding-top: 2px;"><?php echo $form->input('lsecretpass', array('type' => 'password''label'=>false'div'=>false'dir'=>'ltr''class'=>'txtpsw')+$err); ?></td>
                <td><?php echo $form->submit('ورود', array('class'=>'submit')); ?></td>
            </tr>
        </table>
       <input type="hidden" name="cat" value="login" /> 
<?php echo $form->end(); ?>

    if ( isset ($this->data['User']['register'] ) $err=array(); else $err = array( 'error' => null );
<?php echo $form->create('User', array('url' => array('controller' => 'users''action' => 'register'))); ?>
<table>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>نام کاربري : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('uid', array('label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)+$err); ?></td>
    </tr>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>ايميل : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('email', array('label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)); ?></td>
    </tr>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>رمز عبور : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('password', array('label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)+$err); ?></td>
    </tr>
    <tr>
        <td style="width: 80px; padding-top: 3px;"><label>تکرار رمز عبور : </label></td>
        <td style="padding-top: 2px;"><?php echo $form->input('confirm_password', array('type'=>'password''label'=>false'dir'=>'ltr''class'=>'txtpsw''div'=>false)); ?></td>
    </tr>
    <tr><td colspan="2">&nbsp;</td></tr>
    <tr>
        <td>&nbsp;</td>
        <td><?php echo $form->submit('ثبت نام', array('class'=>'submit')); ?></td>
    </tr>
</table>
       <input type="hidden" name="cat" value="reg" /> 
<?php echo $form->end(); ?>
2010/09/06 05:17 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : horap30
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #16
RE: عدم اعتبار سنجی برای یک تکست باکس
میدونم نا امیدتون میکنم ولی من تمام تغییراتی که شما داده بودید رو انجام دادم اما هیچی عوض نشد Sad
تغییراتی که داده بودید 3 مورد بود دیگه یکی اون خط if بالای هر 2 فرم اضافه شده بود یکی هم err$+ کرده بودید یکی هم اون input مخفی بود که داحل فرم اضافه کرده بودید.
این کارها رو انجام دادم اما کوچکترین چیزی تغییر نکرد!

پ.ن
دقیقا همین کد های شما رو هم جایگزین کردم اما بازم چیزی تغییر نکرد !
(آخرین تغییر در این ارسال: 2010/09/06 09:46 PM توسط horap30.)
2010/09/06 09:21 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 666
تاریخ عضویت: Dec 2009
رتبه: 9
تشکر: 246
459 بار تشکر شده در 351 پست
ارسال: #17
RE: عدم اعتبار سنجی برای یک تکست باکس
لطفا کنید زمانی که فرمی رو سابمیت میکنید و خطا اعتبارسازی میاد صفحه رو ذخیره کنید و اتچ کنید
2010/09/07 08:14 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : horap30
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #18
RE: عدم اعتبار سنجی برای یک تکست باکس
خیلی ممنون از پیگیریتون


فایل‌های ضمیمه
.html  error.html (اندازه: 7.26 KB / دانلودها: 5)
2010/09/08 11:32 AM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
saleh آفلاین
Administrator
*******

ارسال‌ها: 666
تاریخ عضویت: Dec 2009
رتبه: 9
تشکر: 246
459 بار تشکر شده در 351 پست
ارسال: #19
RE: عدم اعتبار سنجی برای یک تکست باکس
یک جای کار می لنگه لطفا به ای یاهو من پی ام بدین و تیم ویور هم نصب کنید تا پروژه شما رو یک نگاهی بندازم
2010/09/08 03:05 PM
مشاهده سایت کاربر یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : horap30
horap30 آفلاین
تازه کار
*

ارسال‌ها: 35
تاریخ عضویت: Jun 2010
رتبه: 0
تشکر: 18
7 بار تشکر شده در 4 پست
ارسال: #20
RE: عدم اعتبار سنجی برای یک تکست باکس
حتما این کار رو میکنم Heart
2010/09/08 04:07 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: