קוד לבדיקה.

pantery1

New member
קוד לבדיקה.

שלום, הקוד הנ"ל אינו תקין, אני שלחתי אותו לכמה מפתחים נוספים אך אף אחד מהם לא הצליח לפתור את הבעיה, הקוד כעיקרון הוא קוד לאימות שם משתמש וסיסמא כאדמין ולכניסה ללוח הבקרה. לפניכם הקוד הנדון:
<html> <head> <title></title> </head> <body> <?php $sql_user="hackeye"; $sql_password="/*כן בטח*/"; $sql_host="localhost"; $sql_db="hackeye_portal"; $connect=mysql_connect($sql_host, $sql_user, $sql_password); $select_db=mysql_select_db($sql_db, $connect); if(isset($_GET[d])) { $action=$_GET[d]; if($action=login) { $query[login]="SELECT * FROM global_users WHERE description=admin AND name=$user AND password=$password"; $login_query=mysql_query($query[login], $connect); while($rows=mysql_fetch_array($login_query)) { foreach($rows as $letsin) { if($letsin[password]==$password and $letsin[user]==$user) { $in=1; }//end of var login=1 elseif($letsin[password]!== $password or $letsin[user]!== $user) { $in=2; }//"הסוף של: "אם הפרטים אינם נכונים }//end of atr if in foreack in while }//end of while cheack if($in=1)//main page { print("כנסה אדימנה"); } elseif($in=2) { }//if can't login, "error" }//end of in if } else { print" <form method=\"post\" action=\" admin.php?d=login\" /> username:<input type=\"text\" maxlength=\"60\" name=\"user\"/><br /> password:<input type=\"password\" maxlengt=\"60\" name=\"password\"/> <br /> <center><input type=\"submit\" value=\"התחבר\"></center>"; }//end of main else ?> </form> </body> </html>​
הקוד מלווה בהערות צמודות שמבהירות את מהותו, לדעתי לא תיהיה לכם כל בעיה בפינוחו.
 

אמיר ט

New member
זה נורא נחמד ש...

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

אמיר ט

New member
ואחרי מעבר רציני על הקוד...

יש לי כמה הערות והארות : 1. אני לא מאמין שאני "מפתח" אחד עבר על הקוד הזה, מצטער, פשוט לא מאמין. 2. תחזור ל php.net ומהר, ותתחיל ללמוד מהתחלה PHP. הקוד הזה, ובלי להעליב, הוא אחד מתוכניות היותר שגויות שאי-פעם ראיתי, בודדות הם השורות שאין בהם טעויות, ואני לא מגזים. דברים אלמנטריים אתה לא עושה שם כמו שצריך, ואיך שאני מבין את זה, זה איזשהו סלט של מספר קודים אחרים שלקחת שורה מפה שורה משם ושינית את שמות המשתנים פחות או יותר. בכל מקרה, יש לך כאן שגיעות תכנות, שגיאות שפה, שגיאות לוגיות, והערות בעברית (שאותי זה מרגיז, כי לא מתעדים קוד בעברית
) בקיצור, במקומך, הייתי חוזר אחורה כמה וכמה צעדים ומתחיל ללמוד PHP בצורה נורמלית, ואני מתכוון ממש מההתחלה, לפי הטעויות שיש לך שם.
 

WebKiller

New member
אמרי אני מסכים איתך

ועכשיו לעיניין הקוד לא כל כך ברור, אבל אפשר בהחלט לראות שימוש מיותר בלולאות וגם כמה דברים נוספים, כמו האם login הוא קבוע או משהו, אם כן אז זה יכול להיות תיקון: <html> <head> <title></title> </head> <body> <?php $sql_user="hackeye"; $sql_password="password"; $sql_host="localhost"; $sql_db="hackeye_portal"; $connect=mysql_connect($sql_host, $sql_user, $sql_password); $select_db=mysql_select_db($sql_db, $connect); if(isset($_GET[d])) { $action=$_GET[d]; if($action=login) { $query[login]="SELECT * FROM global_users WHERE description=admin AND name=$user AND password=$password"; $login_query=mysql_query($query[login], $connect); if(mysql_fetch_array($login_query)) { $in=true; } else { $in=false; } if($in) { echo "enter admin: [ OK ]"; } else { echo "enter admin: [ ERORR ]" } }//end of in if } else { ?> <form method="post" action=" admin.php?d=<?=login;?>" /> username:<input type="text" maxlength="60" name="user"/><br /> password:<input type="password" maxlengt="60" name="password"/> <br /> <center><input type="submit" value="login"></center>"; <?php } ?> </form> </body> </html>
 

pantery1

New member
תודה לעוזרים, איר אנא קרא את תגובתי

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

אמיר ט

New member
קודם כל

אני רוצה להתנצל אם התבטאתי בצורה קצת מוגזמת, לא הייתה לי כל כוונה להעליב או לפגוע. אבל כשאני רואה קוד, עם שגיאות כ"כ בסיסיות וכ"כ מטופשות, אני בהחלט מתקשה להאמין שעברו עליו מפתחים, שהיו רואים את הטעויות האלה במבט חטוף ראשון. בנוסף, הטעויות האלה, הם לדעתי תסמין שהולך וגובר בקרב העם, שאנשים מתחילים לתכנת הרבה לפני שהם באמת יודעים איך ומה. וקצת בצורה יותר ממוקדת, הטעויות (ואני הולך לפי סדר כרונולוגי): * שימוש מיותר לחלוטין במשתנים ומערכים. * שימוש לא נכון בגישה למערכים. * חוסר אבחנה בין השמה להשוואה (ההבדל בין = ל ==). * אי שימוש במרכאות (בערך בכל מקום אפשרי שצריך אותם). * שימוש מוגזם ולא נכון בלולאות. * שימוש לא נכון באופרטורים. אני אגיד לך את האמת, בכל שפה אחרת בעולם, לא היית מצליח אפילו להריץ את הקוד הזה, דלא לדבר על זה שהוא יעבוד. למרבה הצער, PHP היא אחת מהשפות הסלחניות ביותר שקיימות, אם לא הסלחנית ביותר, ולכן גם תוכניות שגויות מהיסוד עושות רושם של תוכניות עובדות. בקיצור, באמת בלי להעליב או לפגוע, עם כאלה טעויות, תחזור לספר. ועדיף ספר אחר - אם זה מה שלמדת מהספר הזה. ד"א, אני רואה לנכון שוב להדגיש את עניין הספרים בעברית, אני מבין את העצלנות של אנשים להתאמץ קצת ולקרוא ספר נורמלי באנגלית, אבל לצערי הרב אין כיום שום ספר PHP נורמלי בעברית שהייתי מוכן לשים עליו את החותמת שלי כ"ספר שמלמד PHP". ושוב, אם הספר המדובר של שלך הוא באנגלית, אז או שלא ממש הבנת אותו, או שהוא לא מי יודע מה איכותי (מה שאני לא יכול לקבוע בלי להכיר אותו באמת). יום טוב, ותכנות נעים.
 

pantery1

New member
כמו שכבר ציינתי.

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