הרשם שאלות ותשובות רשימת חברים לוח שנה הודעות מהיום

חזור   הוסטס - פורום אחסון האתרים הגדול בישראל > עיצוב גראפי, תכנות על כל שפותיו וקידום ושיווק אתרים > פורום תיכנות

   
|!|

השב
 
כלים לאשכול תצורת הצגה
ישן 06-06-10, 06:56   # 1
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

שליפת נתונים ע"י ID - COOKIE

אני בודק אם השם משתמש והסיסמא שהוכנסו שווים למה שיש במסד,
אם כן אני שולף בהתאם את ה ID ומכניס אותו לעוגיה.
ולאחר מכן אני רוצה לשלוף נתונים ע"י ה ID שבעוגיות, לדוגמה גישות.
אבל זה לא מאובטח, יש לכם רעיון אחר כיצד לעשות את זה?
  Reply With Quote
ישן 08-06-10, 00:44   # 2
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

אתה שומר בעוגייה נתונים שם שם משתמש וסיסמא עם האש(MD5 לצורך העניין) שהמשתמש הקליד. ניתן לשמור את הנתונים במבנה של מערך או json או מערך עוגיות או על פי סכמה משלך(הפרדה באמצעות : וכד').
אפשר להצפין את המידע הסופי בהצפנה דו-כיוונית כלשהי(base64 לדוגמא) לצורך סיבוך שליפת המידע באופן ידני, אך מנגד הדבר עשוי להקשות על הפיתוח והדיבאגינג(אם תשאל אותי- עדיף בלי).

בקו.
  Reply With Quote
ישן 08-06-10, 09:27   # 3
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

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

יש לי את הקוד הבא (לבדוק אם קיים משתמש, אם כן להציג שגיאה)
PHP קוד:
function check_username($check_username) {
    
$query mysql_query("SELECT username FROM admins");
        while (
$result mysql_fetch_assoc($query)) {
            
$r_check_username strtolower($result['username']);
                if (
$check_username == $r_check_username) {
                    return 
true;
                } else {
                    return 
false;
                }
            }
}

if (
check_username($check_username) == true) {
    echo 
"שם המשתמש שבחרת תפוס";

הבעיה היא, שהוא עובד רק על המשתמש הראשון במסד, הוא לא עובר על שאר המשתמשים..
גם במידה ויהיו הרבה משתמשים, השאילתה הזו תיקח הרבה משאבים, אבל אין לי רעיון טוב יותר כרגע,
מכיוון שאם אני עושה דבר כזה:
PHP קוד:
$query mysql_query("SELECT id FROM admins WHERE username = '$username'");
$num_rows mysql_num_rows($query);
if (
$num_rows >= 1) {
echo 
"קיים משתמש";

זה יעבוד רק אם המשתמש שרשמו הוא אותו הדבר, לדוגמא
אם יש לי במסד משתמש Admin ומנסים להירשם עם Admin זה יעבוד.
אבל אם יש משתמש Admin ומנסים להרשם עם admin או aDmin
זה לא יעבוד, מספיק אות אחת שהיא לא אותו הדבר זה יאפשר למשתמש להירשם.

לכן, חוץ מהאופציות האלו שיש לי בראש כרגע,
הדבר היחיד שאני חושב עליו מלבד זה, זה לפתוח שדה חדש
שכל הכינויים ירשמו בו באותיות קטנות, ואיתו בעצם אני אעשה את ההשוואה,
השאלה אם אין איזה אופציה אחרת (צריך שהיא תהיה יעילה).
  Reply With Quote
ישן 08-06-10, 10:43   # 4
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

קודם כל אתה יכול לבחור קידוד למסד שהוא case insensitive, מה ששגוי בפעולה שלך זה המיקום של הreturn false; הוא צריך להיות ממש לפני סיום הפונקציה ולא בelse. השיטה הזו ממש אבל ממש לא יעילה.
אם אתה משום מה לא רוצה להחליף קידוד למסד תוכל לעשות ככה:
PHP קוד:
$query mysql_query("SELECT id FROM admins WHERE LOWER(username) = 'LOWER($username)'"); 
כמובן שאת הlower case של ה$username תוכל לעשות בעזרת strtolower (עדיף לדעתי).
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
ישן 08-06-10, 17:11   # 5
SniR-S
חבר מתקדם
 
מיני פרופיל
תאריך הצטרפות: Aug 2008
הודעות: 546

SniR-S לא מחובר  

תודה רבה שי, אני ההיתי בטוח שיש אופציה לעשות את זה,

ואז מה שאני עושה עם השאילתה שהבאת לי, זה בודק אם קיים כבר או לא כמו שהצגתי כבר בהודעה הקודמת.
PHP קוד:
$query mysql_query("SELECT id FROM admins WHERE LOWER(username) = '$username'");
$num_rows mysql_num_rows($query);
if (
$num_rows >= 1) {
echo 
"קיים משתמש";

וה $username יהיה ב strtolower
  Reply With Quote
ישן 10-06-10, 08:47   # 6
AlmogBaku
חבר וותיק
 
AlmogBaku's Avatar
 
מיני פרופיל
תאריך הצטרפות: Nov 2007
מיקום: מודיעין
הודעות: 1,022

AlmogBaku לא מחובר  

בד"כ mySQL לא מבחין בcasesentive.. האבחנה הזו קיימת בסיסמאות אגב מכיוון שההאש שלך כן מבחין(MD5)
  Reply With Quote
ישן 10-06-10, 08:55   # 7
Shay Ben Moshe
משתמש - היכל התהילה
 
מיני פרופיל
תאריך הצטרפות: Oct 2007
הודעות: 1,397

Shay Ben Moshe לא מחובר  

אלמוג זה לא נכון לחלוטין להגיד שבד"כ MySQL לא מבחן בcase. זה תלוי בקידוד bin (קיצור של binary) זה אבחנה מלאה, CS (קיצור של Case Sensitive) רגיש להבדלים בין אותיות גדולות לקטנות ובעברית בין רגילות לסופיות, CI (קיצור של Case Insensitive) להפך. יש גם AI וAS שזה בעברית נוגע לניקוד..
__________________
שי בן משה - בונה אתרים
חותך אתרים, ומתכנת צד לקוח וצד שרת.
  Reply With Quote
השב

חברים פעילים הצופים באשכול זה: 1 (0 חברים ו- 1 אורחים)
 


חוקי פירסום
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is מופעל
סמיילים הם מופעל
[IMG] קוד מופעל
קוד HTML מכובה

קפיצה לפורום


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

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