לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #1  
ישן 05-01-2008, 11:43
  tml028 tml028 אינו מחובר  
 
חבר מתאריך: 05.01.08
הודעות: 37
אימות שם משתמש וסיסמא

יש לי שאלה, אני מנסה לאמת פרטי משתמש מול בסיס נתונים, אני עושה זאת בעזרת AJAX כדי שהתשובה תופיע באותו דף, אני עובד עם JS ו-PHP. ניסיתי לעבוד עם HttpRequest כדי לשלוח ולקבל מידע מהשרת, אני עובד עם onreadystatechange וממתין למידע שמתקבל ב- responseText כאשר התשובות הם YES או NO כדי לדעת אם הפרטים שהוזנו נכונים או שגויים ובהתאם אני מדפיס הודעה, הבעיה שנתקלתי בה היא כשאני בודק האם ה- responseText שווה ל- YES אני משנה FLAG ל-1, ה-FLAG מוגדר מחוץ לפונקציות ומאותחל ל-0 , בפונקציה אחרת אני בודק האם ה- FLAG הוא 1 או 0 ובהתאם מחזיר TRUE או FALSE ל-form שקרא לפונקציית הבדיקה, הבעיה היא שאם אני בודק מה ערך ה- FLAG מחוץ לפונקציה שבה הוא שונה, הערך נשאר 0 גם אם שונה ל- 1,

רק חשוב לי לציין, ההודאה למשתמש לא מתקבלת כ- ALERT אלא הודעה בדף עצמו עם innerHTML

אודה מאוד אם מישהו יכוון אותי לפיתרון הבעיה

נערך לאחרונה ע"י tml028 בתאריך 05-01-2008 בשעה 11:53.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 05-01-2008, 18:19
  משתמש זכר yoavmatchulsky yoavmatchulsky אינו מחובר  
 
חבר מתאריך: 15.08.06
הודעות: 1,561
שלח הודעה דרך ICQ אל yoavmatchulsky שלח הודעה דרך MSN אל yoavmatchulsky Facebook profile
בתגובה להודעה מספר 7 שנכתבה על ידי tml028 שמתחילה ב "תודה, זה עובד, אבל רק כאשר..."

כיוון שקראת ל open עם true, אז הפעולה היא אסינכרונית - זותומרת היא קוראת לסקריפט שלך, אבל היא לא מחכה עד שהסקריפט יחזור, אלא ממשיכה לרוץ
כאשר הסקריפט חוזר, הוא מגיע לפונקציה שכתבת ואז הוא משנה את הFLAG

לכן קורה מצב שאתה לוחץ על הכפתור, ואז הפונקציה קוראת לסקריפט בצד השרת, ואז ישר בודקת את ה FLAG, עוד לפני שהסקריפט הספיק לעדכן אותו. למרות זאת, בפעם השנייה שאתה לוחץ, אז הסקריפט (מהקריאה הראשונה) כבר חזר ועדכן את הFLAG.

אפשר לפתור את זה ע"י השמת false בפרמטר השלישי של open (לא רצוי, זה יכול לתקוע את הדפדפן), או לשנות את הקוד שלך כך שהפונקציה שאתה כותב ב onreadystate תעשה את הדבר שאמור לקרות כאשר ה FLAG הוא 1.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #9  
ישן 05-01-2008, 19:23
  tml028 tml028 אינו מחובר  
 
חבר מתאריך: 05.01.08
הודעות: 37
בתגובה להודעה מספר 8 שנכתבה על ידי yoavmatchulsky שמתחילה ב "כיוון שקראת ל open עם true,..."

טוב, קודם אני רוצה להודות לך על העזרה, אני מעריך את זה מאוד, ה-false אכן פותר את הבעיה! אך לא הבנתי כיצד ליישם את הפונקציה כך שתבצע מה שקורה כאשר ה- flag הוא 1, כלומר return true; זו גם בדיוק הסיבה שהגדרתי flag כיוון שלא ידעתי כיצד אוכל לבדוק זאת אחרת, אודה לך מאוד אם תראי לי איזה שינוי צריך להתבצע בקוד שהצגתי, ואם הוא יהיה קריא יותר בתגי CODE אני יציג זאת שנית, תודה




קוד:
var flag = 0; function validateForm() { validateInformation(); if (flag == 1) return true; return false; } function validateInformation() { var username = window.document.log.username.value; var password = window.document.log.password.value; var url = "validate_login.php?username=" + username + "&password=" +password; var xmlHttp; if(window.XMLHttpRequest) xmlHttp = new XMLHttpRequest(); else if(window.ActiveXObject) xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); xmlHttp.onreadystatechange = function() { if (xmlHttp.readyState == 4 && xmlHttp.status == 200) { if (xmlHttp.responseText =="yes") flag=1; else document.getElementById("note").innerHTML="פרטים שגויים"; } } xmlHttp.open("POST", url, true); xmlHttp.send(null); }

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #13  
ישן 05-01-2008, 22:38
  tml028 tml028 אינו מחובר  
 
חבר מתאריך: 05.01.08
הודעות: 37
בתגובה להודעה מספר 1 שנכתבה על ידי tml028 שמתחילה ב "אימות שם משתמש וסיסמא"

הרעיון היה שהמשתמש מקליד שם וסיסמא ולוחץ על submit, אשר מריץ פונקציה לבדיקת הפרטים, אז בדקתי שהוקלד משהו בשני השדות, ובנוסף רציתי לבדוק אם השם משתמש והסיסמא נכונים, אם הן נכונים, המשתמש יעבוד לדף שרצה להגיע, אם לא, יקבל הודעה עוד באותו הדף ללא רענון, לכן אני חייב להמתין לתשובה מהפונקציה, אם להעביר את המשתמש לדף הבא או להציג הודעת שגיאה, לכן במקרה הזה נראה לי שהכי נכון זה לעבוד עם false ב- open, כיוון שאני חייב תשובה אם הפרטים נכונים או לא לפני שאמשיך, אני חושב שפתרת את הבעיה, תקן אותי אם טעיתי במשהו, בנוסף ציינת שזה לא מומלץ, באיזה מקרים הדפדפן יכול להיתקע ? למה שזה יהיה שונה מ- true הרי שאם הקוד נכון, תקתבל תשובה ואין סיבה שהדפדפן יתקע, אשמח לשמוע ממך..

שוב, באמת שאני מעריך את האכפתיות, תודה

נערך לאחרונה ע"י tml028 בתאריך 05-01-2008 בשעה 22:45.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 09:24

הדף נוצר ב 0.07 שניות עם 12 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר