הוסטס - פורום אחסון האתרים הגדול בישראל

הוסטס - פורום אחסון האתרים הגדול בישראל (https://hosts.co.il/forums/index.php)
-   פורום תיכנות (https://hosts.co.il/forums/forumdisplay.php?f=14)
-   -   הבחנה בין אותיות (https://hosts.co.il/forums/showthread.php?t=19161)

amirs_5 06-04-06 01:20

הבחנה בין אותיות
 
טוב עשיתי טופס התחברות .. (ממסד נתנוים).
והשם משתמש במסד הוא .
Amirs_5
עכשיו שאני בא להתחבר ככה :
amirs_5
הוא לא נותן לי , חייב לרשום את האות הגדולה ..

אממ .. אז איך אפשר לפתור את זה ?!

meshuga 06-04-06 01:42

ציטוט:

נכתב במקור על ידי amirs_5
טוב עשיתי טופס התחברות .. (ממסד נתנוים).
והשם משתמש במסד הוא .
Amirs_5
עכשיו שאני בא להתחבר ככה :
amirs_5
הוא לא נותן לי , חייב לרשום את האות הגדולה ..

אממ .. אז איך אפשר לפתור את זה ?!

תשתמש בפונקציה
strtolower בשביל לעשות את ההשוואה.

amirs_5 06-04-06 01:53

זה לא טוב זה הופך את זה לאותיות קטנות.

meshuga 06-04-06 01:55

ציטוט:

נכתב במקור על ידי amirs_5
זה לא טוב זה הופך את זה לאותיות קטנות.

אתה מתכוון שאתה עושה השוואה בשאילתא? או שאתה מוצא מהמסד ומשווה?
כלומר
SELECT*FROM `asd` WHERE `name`='admir_5'
?
או שאתה מוצא את זה מהמסד ואז משווה למשתנה?

amirs_5 06-04-06 02:23

לא אחי .. תראה ישלי תופס התחברות .
והוא לא נותן להתחבר רק אם מקישים את השם שמתמש מדוייק.
אז אם תרשום AMIRוהשם משתמש הוא amir הוא לא יכניס אותך
וזה גם ההפך :
אם תרשום AMIR והשם משתמש amir
ואני צריך לסדר את זה שיתן להכנס.

miniature 06-04-06 04:04

תשתמש בפונקציה ucfirst

LosNir 06-04-06 04:13

ציטוט:

נכתב במקור על ידי miniature
תשתמש בפונקציה ucfirst

כנראה שלא הבנתם...
הפונקציה הזאת תהפוך את האות הראשונה לאות גדולה!
למשל,
לפני hello
אחרי Hello
ומה שהוא הביא היה רק דוגמה!
ככה שאם המשתמש הוא losnIr
אז זה יהפוך ל LosnIr
אז זה לא יעבוד...
אין פונקציה כזאת, אבל אתה יכול לנסות בשאילתא שמחפשת את המשתמש להוסיף אליה LIKE = ..

Tomer 06-04-06 10:22

אתה יכול להציג פה את השאילתא שלך ?

amirs_5 06-04-06 10:47

ציטוט:

נכתב במקור על ידי Atom-Bomb
אתה יכול להציג פה את השאילתא שלך ?

אין שאילתה , אני משתמש בקוקיז.
השתמשתי בקוד הנ"ל :

PHP קוד:

$name $_POST["name"]; 
$pass md5($_POST["pass"]); 
while(
$a mysql_fetch_array($q)) { 
if(
$a["name"] == $name) {
if(
$a["password"] == $pass) {
login($name,$pass);
} else { }}} 


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

somebody 06-04-06 10:51

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

ודרך אגב, הדבר שאתה בודק בה ממש לא יעילה.

meshuga 06-04-06 10:55

ציטוט:

נכתב במקור על ידי somebody
אז למה אתה לא שם את שניהם בפונקציה של הקטנת האותיות?

ודרך אגב, הדבר שאתה בודק בה ממש לא יעילה.

אל תדאג, כשיהיה לו 100 משתמשים הוא כבר יבין שמשהו לא בסדר ;)..
אממ..עדיף לך לעשות שאילתא של חיפוש השם משתמש...ואז לעשות אם הוא לא קיים וכו'...ואז להשוות סיסמה במקרה והוא קיים.....כנס לguidemaster.co.il יש שם מדריך התחברות נורמאלי.

somebody 06-04-06 11:00

ציטוט:

נכתב במקור על ידי meshuga
אל תדאג, כשיהיה לו 100 משתמשים הוא כבר יבין שמשהו לא בסדר ;)..
אממ..עדיף לך לעשות שאילתא של חיפוש השם משתמש...ואז לעשות אם הוא לא קיים וכו'...ואז להשוות סיסמה במקרה והוא קיים.....כנס לguidemaster.co.il יש שם מדריך התחברות נורמאלי.

או יותר קל לעשות בשאילתה אחת אם השם משתמש וגם הסיסמא קיימים אז..:)
זאת אומרת:
select....... wher username= and password=

ואם זה מחזיר TRUE זאת אומרת ששניהם קיימים באותה השורה אז לחבר אותו

meshuga 06-04-06 11:05

ציטוט:

נכתב במקור על ידי somebody
או יותר קל לעשות בשאילתה אחת אם השם משתמש וגם הסיסמא קיימים אז..:)
זאת אומרת:
select....... wher username= and password=

ואם זה מחזיר TRUE זאת אומרת ששניהם קיימים באותה השורה אז לחבר אותו

גם אפשרי, לי יותר נוח לתת שגיאה של "משתמש לא קיים" ואז "סיסמה לא נכונה" מאשר "משתמש/סיסמה לא נכונים"...בכל מקרה...2 השיטות יותר חסכוניות משלו זה בטוח.

somebody 06-04-06 11:12

ציטוט:

נכתב במקור על ידי meshuga
גם אפשרי, לי יותר נוח לתת שגיאה של "משתמש לא קיים" ואז "סיסמה לא נכונה" מאשר "משתמש/סיסמה לא נכונים"...בכל מקרה...2 השיטות יותר חסכוניות משלו זה בטוח.

חחח תאר לך 4 אלף משתמשים בכזה פורום שמשתמש בכזאת שאילתת התחברות.
חחחח שעתיים הם יחכו עד שזה ימצא אותם, ויעיפו אותו מהשרת בגלל שהשאילתת הזאת תוכל ת'אימא של המעבד או הזיכרון אחד מהם..

amirs_5 07-04-06 19:38

אז מה אפשר לעשות לא הבנתי ..
מה אני לא אמור לרוץ בלולאת while על כל הטבלה ?..

meshuga 07-04-06 19:41

ציטוט:

נכתב במקור על ידי amirs_5
אז מה אפשר לעשות לא הבנתי ..
מה אני לא אמור לרוץ בלולאת while על כל הטבלה ?..

לא

somebody 07-04-06 22:06

תעשה ככה:
sql="selete ......... where username='"&username&"' and password='"&password&"'
...
if(.eof)
...

אין לי מושג איך כותבים את זה ב PHP, תבדוק אם השם משתמש והסיסמא קיימים ע"י SQL, אם זה קיים אז תתחבר, אם לא תחזיר שגיאה.
לא יודע איך לכתוב לך את זה ב PHP אבל כתבתי את העיקרון.

Eye-Soft 08-04-06 12:24

PHP קוד:

Select.....Where LOWER(users.username)='PHP FUNCTION FOR LOWER(The User Name The User Sent)' And users.password='password sent by the user'

תהנה

LosNir 08-04-06 16:25

ציטוט:

נכתב במקור על ידי Eye-Soft
PHP קוד:

Select.....Where LOWER(users.username)='PHP FUNCTION FOR LOWER(The User Name The User Sent)' And users.password='password sent by the user'

תהנה

לפי מה שהבנתי זה פשוט יהפוך את זה לאותיות קטנות...
אבל זה לא טוב!
אתם נדבקת לדוגמה שהוא נתן, אז זה יעבוד רק עם משתמשים שרשומים באותיות קטנות אבל הם רשמו באותיות גדולות... אב אם זה ההפך? זה רר ידפוק עוד יותר..
הקטע כאן זה להתאים את האותיות של המשתמש שהוא הזין לאותיות המקוריות..
אבל אין פונקציה כזאת לפי מה שידוע לי... אז צריך למצוא פונקציה כמו WHERE שהיא לא case_sentesiv ולדעתי LIKE יעזור כאן.

eLad 08-04-06 16:38

ציטוט:

נכתב במקור על ידי LosNir
לפי מה שהבנתי זה פשוט יהפוך את זה לאותיות קטנות...
אבל זה לא טוב!
אתם נדבקת לדוגמה שהוא נתן, אז זה יעבוד רק עם משתמשים שרשומים באותיות קטנות אבל הם רשמו באותיות גדולות... אב אם זה ההפך? זה רר ידפוק עוד יותר..
הקטע כאן זה להתאים את האותיות של המשתמש שהוא הזין לאותיות המקוריות..
אבל אין פונקציה כזאת לפי מה שידוע לי... אז צריך למצוא פונקציה כמו WHERE שהיא לא case_sentesiv ולדעתי LIKE יעזור כאן.

יש לך מערכת עם CS, אז הפתרון היחידי הוא כמו שהציעו למעלה:
להמיר את זה לאותיות קטנות ואז להשוות. אין פתרון אחר.

ali_napso 08-04-06 16:47

תהפוך את שני השמות זה שבמסד וזה שנקלט לקטנות ותשווה....אין דרך אחרת

Eye-Soft 08-04-06 17:26

ציטוט:

נכתב במקור על ידי LosNir
לפי מה שהבנתי זה פשוט יהפוך את זה לאותיות קטנות...
אבל זה לא טוב!
אתם נדבקת לדוגמה שהוא נתן, אז זה יעבוד רק עם משתמשים שרשומים באותיות קטנות אבל הם רשמו באותיות גדולות... אב אם זה ההפך? זה רר ידפוק עוד יותר..
הקטע כאן זה להתאים את האותיות של המשתמש שהוא הזין לאותיות המקוריות..
אבל אין פונקציה כזאת לפי מה שידוע לי... אז צריך למצוא פונקציה כמו WHERE שהיא לא case_sentesiv ולדעתי LIKE יעזור כאן.

הרבה רעש, שום תוצאה :\
תקשיב, המטרה היא שבמצב שהמשתמש הזין:
HoStS
והכינוי הרשום במסד הוא:
Hosts
זה עדין יזהה את זה כתקין.

amirs_5 08-04-06 17:27

ציטוט:

נכתב במקור על ידי Eye-Soft
הרבה רעש, שום תוצאה :\
תקשיב, המטרה היא שבמצב שהמשתמש הזין:
HoStS
והכינוי הרשום במסד הוא:
Hosts
זה עדין יזהה את זה כתקין.

בדיוק,
ושהוא יתחבר יהיה כתוב לו מחובר כ Hosts
ולא HoStS
ולא הבנתי למה להפוך אותם לקטנים ?1
כי במסד האותיות לא בקטן

somebody 08-04-06 17:56

אז תשלוף את שניהם בקטן!
תקטין את שניהם בהוצאה!
מה הבעיה לא הבנתי??
הביאו לך כבר קוד(למרות שאף פעם לא ידעתי שיש כזה דבר LOWER ב SQL אבל עכשיו אני יודע:)).
תשים אותו.
תבדוק איתו.
יצא נכון?
תשלוף את שם המשתמש שוב מהמסד כמו שהמשתמש נרשם איתו.

amirs_5 08-04-06 18:00

תראה מה רשמתי
 
תראה מה רשמתי ועובד לי :)
PHP קוד:

$q mysql_query("SELECT * FROM members WHERE name='$name'"); 
while(
$a mysql_fetch_array($q)) { 
if(
$a["password"] == $pass) { 
echo 
"הסיסמא תקינה";
break;
} else {
echo 
"הסיסמא שגויה";
}

}



זה בסדר ככה כי לי זה עובד ..לא היה בא לי להשתמש ב LOWER ..=]

Eye-Soft 08-04-06 18:02

ציטוט:

נכתב במקור על ידי amirs_5
תראה מה רשמתי ועובד לי :)
PHP קוד:

$q mysql_query("SELECT * FROM members WHERE name='$name'"); 
while(
$a mysql_fetch_array($q)) { 
if(
$a["password"] == $pass) { 
echo 
"הסיסמא תקינה";
break;
} else {
echo 
"הסיסמא שגויה";
}

}



זה בסדר ככה כי לי זה עובד ..לא היה בא לי להשתמש ב LOWER ..=]

עדין לא פתרת את הבעיה של מה קורה עם המשתמש כתב HosTs במקום Hosts ואתה עדין עושה שטויות.
יש לך פונקציה אידיאלית, LOWER ולך לא בא להשתמש בא. אתה בטוח שאתה מתכנת ? :\
זה כמו לקבל כפית זהב לפה ולהגיד לא.

amirs_5 08-04-06 18:05

למה אחי זה לא מצליח לי דף לבןן =]
והדר שרשמתי עבדה אז אני לא מבין מה הבעיה איתה , כי רשמתי
HosTs ובמסד רשום Hosts
והתחבר

somebody 08-04-06 18:15

ציטוט:

נכתב במקור על ידי amirs_5
למה אחי זה לא מצליח לי דף לבןן =]
והדר שרשמתי עבדה אז אני לא מבין מה הבעיה איתה , כי רשמתי
HosTs ובמסד רשום Hosts
והתחבר

אבל הדרך של ממש אבל ממש אבל ממש לא יעילה!
אמרו לך את זה כבר 3323 פעמים ואתה הולך עם הראש בקיר!
אז תלך עם הראש בקיר ואל תתפלא שהאתר שלך בשלב מוקדם לא יזוז, ויעיפו אותך מהאחסון.

amirs_5 08-04-06 18:22

ציטוט:

נכתב במקור על ידי somebody
אבל הדרך של ממש אבל ממש אבל ממש לא יעילה!
אמרו לך את זה כבר 3323 פעמים ואתה הולך עם הראש בקיר!
אז תלך עם הראש בקיר ואל תתפלא שהאתר שלך בשלב מוקדם לא יזוז, ויעיפו אותך מהאחסון.

לא הבנתי אבל איך להשתמש ב LOWER

ככה?
PHP קוד:

$q mysql_query("SELECT * FROM members WHERE LOWER($name)' AND password='$pass'"); 


somebody 08-04-06 18:48

PHP קוד:

$q mysql_query("SELECT * FROM members WHERE LOWER(username)='LOWER($name)' AND password='$pass'"); 

אתה לא יודע SQL?

amirs_5 08-04-06 18:56

ציטוט:

נכתב במקור על ידי somebody
PHP קוד:

$q mysql_query("SELECT * FROM members WHERE LOWER(username)='LOWER($name)' AND password='$pass'"); 

אתה לא יודע SQL?

אני יודע SQL, אבל אני לא מכיר את כל הפונקציות האלה כגון LOWER בחיים לא יצא לי להתעסק איתם ,
אז אני לא יודע איך לכתוב את זה בגלל זה ניסיתי בדרך אחרת

eLad 08-04-06 18:57

ציטוט:

נכתב במקור על ידי somebody
אבל הדרך של ממש אבל ממש אבל ממש לא יעילה!
אמרו לך את זה כבר 3323 פעמים ואתה הולך עם הראש בקיר!
אז תלך עם הראש בקיר ואל תתפלא שהאתר שלך בשלב מוקדם לא יזוז, ויעיפו אותך מהאחסון.

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

הוא שולף מהמסד את הרשומות שבהם שם המשתמש שווה למה שהקישו (סביר להניח שיש יוזר אחד כזה בלבד) והוא עובר על הנתונים בלולאה (סה"כ נתון אחד) ככה שזה לא טחינה מי יודע מה של השרת.

amirs_5 08-04-06 19:05

somebody לא שמתי לב שנתת לי קוד חשבתי שציטט..
אז הנה מה שנתת לי ..
קוד:

$q = mysql_query("SELECT * FROM members WHERE LOWER(username)='LOWER($name)' AND password='$pass'");
אתה יכול להסיבר לי את הקטע הזה ?:
קוד:

LOWER(username)='LOWER($name)'
לדוגמא המשתנה $name
הוא HosTs
אז הוא הופך אותו ל hosts ?...
אוקיי את זה הבנתי.. אבל שהוא יבצע יתחבר יהיה כתוב לו מחובר כ hosts במקום כ Hosts..
הוא ישמור בקוקיז hosts ולא Hosts

LosNir 08-04-06 19:08

ציטוט:

נכתב במקור על ידי amirs_5
somebody לא שמתי לב שנתת לי קוד חשבתי שציטט..
אז הנה מה שנתת לי ..
קוד:

$q = mysql_query("SELECT * FROM members WHERE LOWER(username)='LOWER($name)' AND password='$pass'");
אתה יכול להסיבר לי את הקטע הזה ?:
קוד:

LOWER(username)='LOWER($name)'
לדוגמא המשתנה $name
הוא HosTs
אז הוא הופך אותו ל hosts ?...
אוקיי את זה הבנתי.. אבל שהוא יבצע יתחבר יהיה כתוב לו מחובר כ hosts במקום כ Hosts..
הוא ישמור בקוקיז hosts ולא Hosts

נו אז אל תציג בתוך המשתנה של מחובר כ: $name
את מה שהוא הקיש אלא תשלוף את המשתמש שהשוותה מהמסד ואז תציב לתוך הערך $name

amirs_5 08-04-06 19:09

ציטוט:

נכתב במקור על ידי LosNir
נו אז אל תציג בתוך המשתנה של מחובר כ: $name
את מה שהוא הקיש אלא תשלוף את המשתמש שהשוותה מהמסד ואז תציב לתוך הערך $name

לא בסדר הסתדרתי .. במקום לשמור את השם משתמש בקוקיז אני שומר את ה ID יותר מאובטח ויוצא טוב..

עריכה :
אבל יש לי בעיה אחרת שקשורה ..
רשמתי ככה:
קוד:

$q = mysql_query("SELECT * FROM members WHERE LOWER(name)='LOWER($name)' AND password='$pass'");
$a = mysql_fetch_array($q);
echo $a['name'];

דף לבן תמיד..למה ?

amirs_5 08-04-06 20:42

סליחה על הדאבל , פשוט נעלם לא כפתור העריכה .. לא יודע למה מוזרר..
טוב עשיתי ניסוי כזה=] תראו מה רשמתי..

PHP קוד:

$name $_POST["name"]; 
$pass md5($_POST["pass"]); 
$q mysql_query("SELECT * FROM members WHERE LOWER(name)='LOWER($name)' AND password='$pass'"); 
$a mysql_fetch_array($q);
echo 
$a[id];
$in mysql_query("SELECT * FROM members WHERE name='$name' AND password='$pass'"); 
$info mysql_fetch_array($in);
echo 
$info[email]; 

אוקיי זה מה שעשיתי ..
ותנחשו מה היה הפלט ?
האימייל של אותו משתמש בלבד..
מכאן נובע = >> השורה :
PHP קוד:

$q mysql_query("SELECT * FROM members WHERE LOWER(name)='LOWER($name)' AND password='$pass'"); 

לא טובה :(...
אני לא יודע להתעסק עם פונקציות ב SQL .. כמו LOWER..
אז אשמח אם מישהו יוכל לתקן לי אותה..

ohadamar 09-04-06 23:48

ציטוט:

נכתב במקור על ידי LosNir
כנראה שלא הבנתם...
הפונקציה הזאת תהפוך את האות הראשונה לאות גדולה!
למשל,
לפני hello
אחרי Hello
ומה שהוא הביא היה רק דוגמה!
ככה שאם המשתמש הוא losnIr
אז זה יהפוך ל LosnIr
אז זה לא יעבוד...
אין פונקציה כזאת, אבל אתה יכול לנסות בשאילתא שמחפשת את המשתמש להוסיף אליה LIKE = ..

כנראה שגם אתה לא הבנת...

(יש לו עכשיו משתמש OHAD ועכשיו שהוא רושם ohad זה לא נותן לא, למשל שימו לב בפורום פה
תתחבר עם איזה אותיות שבא לך כאילו OhAd למשל.. וכד)

בקצרה המשתמש שהוא הגדיר זה OHAD למשל, הוא רוצה שבמידה והוא ירשום ohad באותיות קטנות זה יתחבר לו למשתמש OHAD באותיות הגדולות

somebody 10-04-06 00:10

ציטוט:

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

הוא שולף מהמסד את הרשומות שבהם שם המשתמש שווה למה שהקישו (סביר להניח שיש יוזר אחד כזה בלבד) והוא עובר על הנתונים בלולאה (סה"כ נתון אחד) ככה שזה לא טחינה מי יודע מה של השרת.

אה חח וואלה לא ראיתי שהוא עשה שווה.
חשבתי הוא עושה WHILE עד הוא מוצא שם משתמש ששווה לשם שהתקבל.

Eye-Soft 10-04-06 01:13

אמיר, הקוד שלך לא יעבוד מהסיבה הפשוטה. אתה לא יודע PHP וSQL :\
תבצע על המשתנה $name פונקציה בPHP אשר הופכת את האותיות לקטנות. לא, זה לא LOWER. נתנו לך קוד ברמת העיקרון, אתה צריך משם להבין קצת לבד, קצת לחשוב מחוץ לקופסא...

amirs_5 10-04-06 13:23

אני יודע PHP , רק אסקיואל ברמה נמוכה ..=]
ולא מצאתי פונקציה כזאתי במנואל..
יש לי עוד שאלה שמיהו ציטט ב SQL ,
מה עושה LIKE= ?


כל הזמנים הם GMT +2. הזמן כעת הוא 02:11.

מופעל באמצעות VBulletin גרסה 3.8.6
כל הזכויות שמורות ©
כל הזכויות שמורות לסולל יבוא ורשתות (1997) בע"מ