כותב |
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 23 May 2005 בשעה 21:28 | | IP רשוּם
|
|
|
|
שלום! לאחר שעשיתי דף הרשמה שכאשר נרשמים זה מכניס את הנתונים לדטא בייס אני רוצה לעשות דף התחברות. בדף של ההתחברות עשיתי שני תיבות אחת של user והשניה של password,עכשיו איך אני מאמת את הנתונים שהוכנסו בדף התחברות לנתונים שיש בדטא בייס שהתקבלו מההרשמה? למשל אם המשתמש קיים בדטא בייס אז זה יזהה אותו ואם לא, אז הוא ירשום הודעה וישלח לדף ההרשמה. הבנתי שזה גם קשור ל-cookies אך אינני יודע היכן למקם אותן ומה הן יתנו לי בשלב זה?
תודה רבה!
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר


הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 23 May 2005 בשעה 23:17 | | IP רשוּם
|
|
|
|
תצטרך ללמוד קודם איך לעבוד עם משתני cookies או sessions.
מה שיחודי להם זה שהם נשמרים אוטומטית בכל הדפים.
למשל אם תגדיר משנה מסוג session בשם login, כאשר הנתונים שהמשתמש סיפק מתאימים לנתונים במסד המשתנה login יהיה שווה ל-1. ואז בכל ראש דף תצטרך להשים בדיקה האם login==1 כדי לדעת האם המשתמש מחובר או לא.
ד"א אני ואחרים שאלנו הרבה פעמים את השאלה בעבר. חיפוש בפורום היה מניב את אותה תשובה ואפילו מפורטות יותר.
|
חזרה לתחילת העמוד |
|
|
SBD פורומיסט על


הצטרף / הצטרפה: 13 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1194
|
נשלח בתאריך: 24 May 2005 בשעה 01:28 | | IP רשוּם
|
|
|
|
מממ עוגיות אתה לא חייב לשם מטרה זו, אבל SESSION כן.....[גם לא חובה לצורך האימות אלה רק על ידי זכירה בשאר הדפים באתר....]
איך אתה מבצע את החיפוש עצמו זה מאוד פשוט, בוא נגיד שלתיבת השם משתמש קראנו user ולסיסמא קראנו pass, ובמסד יש לנו עמודות עם אותם שמות, מה שאנחנו עושים זה ככה:
קוד:
<% dim user,pass
user = request.form("user") pass = request.form("pass")
....התחברות ל-DB....[con]
SET RS = con.execute("SELECT user,pass FROM table WHERE user = '" & user & "'")
IF NOT RS.EOF THEN IF pass = RS("pass") response.write "login OK" ELSE response.write "wrong password" END IF ELSE response.write "user not exist" END IF
con.close SET RS = NOTHING %> |
|
|
עכשיו כתבתי את זה אז יכול להיות שיש פה ושם טעות =\]
אם הבנת את הכל אז סבבה, אם לא תשאל אני יסביר...
__________________ ~ Nobody Is Perfect, I'm Nobody ~
פורומים
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר


הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 24 May 2005 בשעה 01:44 | | IP רשוּם
|
|
|
|
אפשר לחשוב על הזרקה שאפשר לבצע לקוד הזה :) אף פעם אל תעביר פרמטרים מהמשתמש ישירות לבסיס הנתונים
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 24 May 2005 בשעה 07:45 | | IP רשוּם
|
|
|
|
אוי... אני אהבל...
שכחתי לציין שאני עובד עם php ולא עם asp
אז עם אתה יכול לרשום לי את הקוד ב-php זה יהיה מצויין...
ולמה לא כדאי להעביר פרמטרים מהמשתמש ישירות לבסיס הנתונים?? הרי אני עושה להם בדיקה לפני זה.
תודה.
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר


הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 24 May 2005 בשעה 13:52 | | IP רשוּם
|
|
|
|
תכתוב לבד - זה תרגול טוב.
הכוונה לא להעביר נתונים מהמשתמש ישירות לשאילתא כדי שלא לתת לו גישה להוציא\להוסיף נתונים שאתה לא רוצה, לכן לפני השאילתא אתה צריך לסנן תווים שעלולים להזיק.
כדי להגדיר משתנה login מסוג session ב-PHP תרשום
ואז אחרי שאתה עושה בדיקה האם_משתמש_וסיסמא_קיימים
תרשום
ואז בכל דף כשאתה רוצה לבדוק האם_המשתמש_מחובר תרשום בראש הדף
|
חזרה לתחילת העמוד |
|
|
SBD פורומיסט על


הצטרף / הצטרפה: 13 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1194
|
נשלח בתאריך: 24 May 2005 בשעה 23:47 | | IP רשוּם
|
|
|
|
UnderWarrior כתב:
אפשר לחשוב על הזרקה שאפשר לבצע לקוד הזה :) אף פעם אל תעביר פרמטרים מהמשתמש ישירות לבסיס הנתונים |
|
|
ברור אחי אל תדאג :) פשוט אל רציתי לסבך.....
אגב לא החזרתי לי תשובה לגבי server.htmlencode
__________________ ~ Nobody Is Perfect, I'm Nobody ~
פורומים
|
חזרה לתחילת העמוד |
|
|
ניר מנהל האתר


הצטרף / הצטרפה: 12 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 3296
|
נשלח בתאריך: 24 May 2005 בשעה 23:52 | | IP רשוּם
|
|
|
|
לא נגעתי - לא היה לי זמן. לא נראה לי גם שאני אספיק להעיף מבט על זה בקרוב - סורי.
__________________ מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
|
חזרה לתחילת העמוד |
|
|
SBD פורומיסט על


הצטרף / הצטרפה: 13 January 2005 מדינה: Israel
משתמש: מנותק/ת הודעות: 1194
|
נשלח בתאריך: 25 May 2005 בשעה 12:00 | | IP רשוּם
|
|
|
|
לא ביקשתי שתעיף מבט על הפרוייקט שלי אחי, אין צורך....זה בסדר גמור :)
בזמנו אמרת לי שאתה לא זוכר למה אבל יש בעיה עם הפונקציה server.htmlencode אם תוכל קצת לרחרח בזכרונך ולהגיד לי למה :)
__________________ ~ Nobody Is Perfect, I'm Nobody ~
פורומים
|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 26 May 2005 בשעה 15:22 | | IP רשוּם
|
|
|
|
אוקי בניתי את הקוד הזה של התחברות אבל משום מה לא משנה אם אני מכניס שם משתמש קיים או שם משתמש שלא קיים הוא עדיין אומר לי שהמשתמש אינו רשום וצריך להירשם.
<html>
<head>
</head>
<body> <?php $host ="localhost"; $user ="*****"; $password = "*****"; $db = "*****"; $link = mysql_pconnect( $host, $user, $password ); $username = mysql_escape_string($_POST['username']); $password = ($_POST['password']); $q = mysql_query("SELECT COUNT(*) FROM members WHERE username='$userame' AND password='$password' "); $result = mysql_fetch_array($q); if($result[0] == 1 ){ $_SESSION['UserIn'] == true; echo ("אתה מחובר!");
} else { echo ("אינך משתמש רשום! אנא הירשם"); } ?> </body>
</html>
מה הבעיה בקוד?
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר


הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 26 May 2005 בשעה 15:49 | | IP רשוּם
|
|
|
|
נסה לרשום במקום:
קוד:
$q = mysql_query("SELECT COUNT(*) FROM members WHERE username='$userame' AND password='$password' ");
$result = mysql_fetch_array($q);
if($result[0] == 1 ){ |
|
|
את זה:
קוד:
$q = mysql_query("SELECT * FROM members WHERE username='$userame' AND password='$password' ");
if(mysql_affected_rows() == 1 ){
|
|
|
|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 26 May 2005 בשעה 18:57 | | IP רשוּם
|
|
|
|
אחי ניסיתי ואותו הדבר שוב....
יש עוד הצעות????
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר


הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 26 May 2005 בשעה 20:40 | | IP רשוּם
|
|
|
|
UnderWarrior כתב:
ברוך הבא לעולם התכנות בו סימן חסר חשיבות יכול לעכב אותך שבועיים |
|
|
שים לב:
קוד:
WHERE username='$userame' |
|
|
חסרה לך האות n בשם של המשתנה $username
בנוסף היו לך בעיות כמו למשל שלא התחלת את ה-session לפני שליחת ה-headers (אלא אם כן בהגדרות PHP הגדרת שזה יתבצע אוטומטית).
בכל מקרה הקוד אמור להיות כך:
קוד:
<? session_start(); ?>
<html>
<body>
<?php
$host ="localhost";
$user ="*****";
$password = "*****";
$db = "*****";
$link = mysql_connect( $host, $user, $password );
$username = mysql_escape_string($_POST['username']);
$password = ($_POST['password']);
$q = mysql_query("SELECT COUNT(*) FROM members WHERE username='$username' AND password='$password' ");
$result = mysql_fetch_array($q);
if($result[0] == 1 ){
$_SESSION['UserIn'] == true;
echo ("אתה מחובר!");
}
else{
echo ("אינך משתמש רשום! אנא הירשם");
}
?>
</body>
</html>
|
|
|
שים לב גם כשאתה שם סוגריים מסולסלות אחרי תנאי או שתשים בכולם באותה שורה של התנאי או שבכולם תירד שורה, כך יהיה יותר נוח לקרוא את הקוד. אה ועוד משהו, הזחה, כשאתה שם תנאי או לולאה או משהו כזה כל השורות שיהיו תלויים בשורה הזאת תשים להם זיח שלא יתחילו מאותו מקום שמתחילה השורה ההיא.
לדוגמא:
קוד:
if ($bla=='blabla')
{
____פקודה
____פקודה
____פקודה
} |
|
|
|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 26 May 2005 בשעה 21:12 | | IP רשוּם
|
|
|
|
עשיתי בדיוק מה שאמרת לי לעשות אבל שוב אותה תוצאה.
לא משנה מה אני מכניס זה אומר שהמשתמש אינו רשום!
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר


הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 27 May 2005 בשעה 04:30 | | IP רשוּם
|
|
|
|
כן אני רואה עכשיו שחסר עוד משהו. הגדרת משתנה ששומר את שם המסד אבל לא בחרת את המסד נתונים שאיתו אתה רוצה לעבוד בקיצור הקוד הסופי (אני מקווה):
קוד:
<? session_start(); ?>
<html>
<body>
<?php
$host ="localhost";
$user ="*****";
$password = "*****";
$db = "*****";
$link = mysql_connect( $host, $user, $password );
mysql_select_db($db,$link);
$username = mysql_escape_string($_POST['username']);
$password = ($_POST['password']);
$q = mysql_query("SELECT COUNT(*) FROM members WHERE username='$username' AND password='$password' ");
$result = mysql_fetch_array($q);
if($result[0] == 1 ){
$_SESSION['UserIn'] == true;
echo ("אתה מחובר!");
}
else{
echo ("אינך משתמש רשום! אנא הירשם");
}
?>
</body>
</html>
|
|
|
|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 27 May 2005 בשעה 16:05 | | IP רשוּם
|
|
|
|
זה נכון אתה צודק שכחתי להכניס את השורה של הדטא בייס...
אבל זה עדין לא פותר את הבעיה...

|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 27 May 2005 בשעה 18:49 | | IP רשוּם
|
|
|
|
סוף כל סוף הצלחתי!!!!!!!!!!!!! חחחח הבעיה הייתה כזאת מטומטמת....
במקום:
Alias כתב:
username='$username' [/code] |
|
|
הייתי צריך לשים
user='$username'
ועכשיו הכל עובד... אני רוצה להגיד תודה לכולם ובמיוחד ל
שניסה כל פעם לעזור alias
|
חזרה לתחילת העמוד |
|
|
גיא אורח

הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין הודעות: 12647
|
נשלח בתאריך: 29 May 2005 בשעה 22:16 | | IP רשוּם
|
|
|
|
יש לי עוד שאלה שקשורה לזה...
איך אני קורא ל-session בדף אחר שאני רוצה שרק משתמשים מחוברים יוכלו להיכנס ???
|
חזרה לתחילת העמוד |
|
|
Alias משתמש חבר


הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת הודעות: 344
|
נשלח בתאריך: 29 May 2005 בשעה 22:49 | | IP רשוּם
|
|
|
|
בכל ראש דף שאתה רוצה שרק מחוברים יוכלו לראותו שים את הקוד הבא:
קוד:
<?php
session_start();
if($_SESSION['UserIn']!= true) //אם לא מחובר
exit; // סיים את הקוד
?> |
|
|
אני מזכיר שאתה חייב להשים את זה לפני הוצאת פלט כלשהו לדף!
|
חזרה לתחילת העמוד |
|
|