עבור לתוכן

בעיה PHP+MYSQL

Featured Replies

פורסם

שלום

בניתי פונקציה פשוטה שמקבלת מחרוזת של שם משתמש ומחפשת בDB אם הוא קיים

הבעיה היא שכשאני מכניס שם משתמש בעברית (שקיים בDB) בפיירפוקס הכל תקין והפונקציה מחזירה שהוא קיים

בIE הפונקציה מחזירה שהוא לא קיים (למרות שהמחרוזת מגיע אליו בצורה תקינה)

באנגלית שני הדפדפנים מחזירים תשובה תקינה.

הכל מקודד UTF-8 כולל הDB

מישהו נתקל בבעיה דומה?

פורסם

תנסה לבדוק מה הפלט ש IE ו FF שולחים (למשל ע"י בודק תעבורה).

פורסם
  • מחבר

בדקתי כבר

שניהם מקבלים קלט תקין

אך הIE מחזיר שהוא לא מצא (למרות שהקלט כן נמצא בDB)

והFF מחזיר שהוא מצא

מה זה בודק תעבורה?

פורסם

לא לבדוק את הקלט, אלא את הפלט שלהם לשרת...

תוכנה כמו זו http://www.nirsoft.net/utils/smsniff.html יכולה להראות לך את התקשורת עם השרת (אם הוא לא מקומי) וככה תוכל לראות את ההבדלים בין הבקשות של הדפדפנים.

פורסם
  • מחבר

זהו שרת מקומי.

ואמרתי שהפלט שהIE הוא פלט ריק ""

הפלט של הFF הוא 1 (כן מצא - תקין)

והבעיה קוראת רק במקרים מסויימים עדיין לא זיהתי תבנית מסויימת של קלט בעייתי.

אוסיף עוד פרטים

הקלט הוא ע"י GET - הוא מועבר עם הכתובת של העמוד

הפלט הוא AJAX -

echo "1"

במקרה שמצא

echo "0"

במקרה שלא

אולי הIE מעוות משהו במשתנים שמועברים ע"י שורת הכתובת?

פורסם

בגלל זה אמרתי לך לבדוק את מה שאמרתי... בכל מקרה, תעשה שהשרת פשוט ידפיס את המשתנה חזרה שהוא מקבל ב GET למסך ולא משהו אחר, ככה תדע את זה.

פורסם
  • מחבר

כן זה מה שעשיתי

מתי שמתרחשת הבעיה הalert לא פועל בכלל למרות שזה כן נכנס לפונקציה

אם אני שם משהו אחר בalert הוא פועל

אם אני שם את הפלט הוא פשוט לא עובד

פורסם
  • מחבר

הפונקציה משתמשת בAJAX אז אעתיק רק את החלקים הרלוונטים

קריאה לפונקציה :

<input type="text" onblur="checkuser(this.value)" name="username" dir='rtl' size="15" />

הפונקציה בקובץ JS:

function checkuser(t)
{
searchdb(t);
}

function searchdb(name)
{
http.open('get', 'searchdb.php?user='+name);
http.onreadystatechange = handleResponse;
http.send(null);
}

searchdb.php:

		$query="SELECT * FROM 
users WHERE (username = '$_GET[user]'
)";
$result=mysql_query($query);
$row = mysql_fetch_array($result, MYSQL_NUM);
if($row[0])
echo "1";
else
echo "0";

פורסם

אם אתה משתמש ב JS אז תנסה להשתמש בפונקציית קידוד מהלינק הקודם, ופיענוח בצד שרת.

פורסם
  • מחבר

בדקתי הפונקציה הזאת לא עושה את הפעולה ההפוכה של escape

בכל אופן כתבתי לקובץ את מה שsearchdb.php מקבל ($_GET[user]) והוא אכן מקבל קלט נכון

ככה שזה שולל את האפשרות של תווי לואי שהאקספלורר מוסיף

והינה עוד אבסורד

דווקא בFF שבו הפונקציה עובדת תקין - מקבל את הקלט כג'יבריש

פורסם
  • מחבר

הופה

אכן קישור מועיל , לפי ההוראות שם השתמשתי בencodeURIComponent בצד הקליינט ובurldecode בצד הסרבר

עכשיו הכל תקין.

תודה :yelclap:

ארכיון

דיון זה הועבר לארכיון ולא ניתן להוסיף בו תגובות חדשות.

דיונים חדשים