מה הבעיה פה

gunfor

New member
מה הבעיה פה

<?PHP session_start(); class loginsys extends users { var $user; var $pass; var $cont; var $msg; var $auth = array(); function enable() { $this->checkuser($this->user ,$this->pass); } function is_login() { if (!$_SESSION||$_SESSION['how']==''||$_SESSION['users']=='') { header("Location: HTTP://" .$_SERVER['HTTP_HOST'] ."/sivan/admin/index.php?loc=login"); } } function checkuser($user ,$pass) { $this->condb(); if ($this->condb()!=true) { foreach ($this->auth as $data) { if ($user == $data['user'] && $pass == $data['pass']) { $_SESSION['users'] = $user; $_SESSION['how'] = 'true'; header("Location: HTTP://" .$_SERVER['HTTP_HOST'] ."/sivan/admin/index.php?loc=main"); } else { $this->msg = "PassWord/User are not correct"; } } } } function condb() { users::set_db(); $qur = "select * from users"; $res = mysql_query($qur ,$this->lk); $users = @mysql_num_rows($res); if ($users == 0) { $this->msg = "Not any users on the database"; return true; exit; } $i = 1; while ($row = mysql_fetch_array($res)) { $this->auth[$i] = array ( 'user' => $row['users'] , 'pass' => $row['password'] ); $i++; } } } class users { var $lk; function set_db() { include("./includes/com.php"); $this->lk = mysql_connect($serv,$userdb,$passdb) or die( "unable to do connection to the database"); mysql_select_db($dbname,$this->lk); } } ?>​
גם לאחר שאני לוחץ על הסיסמה והיוזר שאני כתבתי (כמובן אחרי זה שזה בקידוד בשני המקומות) לא עובר לי ואם זה כן עובר לי(אחרי שאני עקפתי את הבדיקה זה אומר לא בודק) הסשאן שעשיתי שאמור להיות כמסוף בדיקה כללי כאילו אחרי הקשת הסיסמה אתה מוגדר כרשום אבל משום מה לא זה ולא זה עובד למה
 

idansof

New member
איזה שגיאה אתה מקבל?

א אי התאמה בין משתמש לסיסמא? קודם כל תוודא שבטבלה יש באמת שדה users ולא user(השני נראה לי יותר הגיוני, למרות שטכנית אין עם זה כמובן שום בעיה). הייתי ממליץ להוסיף return false; בסוף condb, זה יקל להבין את מה שאמורה להחזיר הפונקציה, וכמו כן אינני רואה צורך ממשי לקרוא לcondb פעמיים(לא מזיק אבל מיותר). דבר שלישי, במקרים כאלו דרך יעילה להתמודד עם הבעיה היא בשתילת קוד debugging, זאת אומרת קוד שיספק לך מידע רלוונטי על המתרחש. למשל בלולאת הmysql_fetch_array(); להוסיף:
print_r($row);​
כך יודפסו ערכי המערך $row בכל איטרציה על התוצאות יש לקחת בחשבון שאם מישהו אחר נכנס לדף באותו רגע הסיסמאות עשויות להיחשף כמובן.
 

gunfor

New member
סוג האררור הוא

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