נושאים פעיליםנושאים פעילים  הצגת רשימה של חברי הפורוםרשימת משתמשים  חיפוש בפורוםחיפוש  עזרהעזרה
  הרשמההרשמה  התחברותהתחברות RSS עדכונים
בניית אתרים
RSS UnderWarrior Forums : RSS בניית אתרים
נושא

נושא: דף התחברות...

שליחת תגובהשליחת נושא חדש
כותב
הודעה << נושא קודם | נושא הבא >>
גיא
אורח
אורח


הצטרף / הצטרפה: 01 October 2003
משתמש: אונליין
הודעות: 12647
נשלח בתאריך: 23 May 2005 בשעה 21:28 | IP רשוּם
ציטוט גיא

שלום! לאחר שעשיתי דף הרשמה שכאשר נרשמים זה מכניס את הנתונים לדטא בייס אני רוצה לעשות דף התחברות. בדף של ההתחברות עשיתי שני תיבות אחת של user והשניה של password,עכשיו איך אני מאמת את הנתונים שהוכנסו בדף התחברות לנתונים שיש בדטא בייס שהתקבלו מההרשמה? למשל אם המשתמש קיים בדטא בייס אז זה יזהה אותו ואם לא, אז הוא ירשום הודעה וישלח לדף ההרשמה. הבנתי שזה גם קשור ל-cookies אך אינני יודע היכן למקם אותן ומה הן יתנו לי בשלב זה?

תודה רבה!

חזרה לתחילת העמוד הצג את כרטיס החבר של גיא חפש הודעות אחרות של גיא בקר בדף הבית של גיא
 
Alias
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 23 May 2005 בשעה 23:17 | IP רשוּם
ציטוט Alias

תצטרך ללמוד קודם איך לעבוד עם משתני cookies או sessions.
מה שיחודי להם זה שהם נשמרים אוטומטית בכל הדפים.
למשל אם תגדיר משנה מסוג session בשם login, כאשר הנתונים שהמשתמש סיפק מתאימים לנתונים במסד המשתנה login יהיה שווה ל-1. ואז בכל ראש דף תצטרך להשים בדיקה האם login==1 כדי לדעת האם המשתמש מחובר או לא.

ד"א אני ואחרים שאלנו הרבה פעמים את השאלה בעבר. חיפוש בפורום היה מניב את אותה תשובה ואפילו מפורטות יותר.
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 24 May 2005 בשעה 01:28 | IP רשוּם
ציטוט SBD

מממ עוגיות אתה לא חייב לשם מטרה זו, אבל 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 ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 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 רשוּם
ציטוט Alias

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

כדי להגדיר משתנה login מסוג session ב-PHP תרשום
קוד:
SESSION['login']=0;

ואז אחרי שאתה עושה בדיקה האם_משתמש_וסיסמא_קיימים
תרשום
קוד:
SESSION['login']=1;

ואז בכל דף כשאתה רוצה לבדוק האם_המשתמש_מחובר תרשום בראש הדף
קוד:
if (SESSION['login']==1)
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 24 May 2005 בשעה 23:47 | IP רשוּם
ציטוט SBD

UnderWarrior כתב:
אפשר לחשוב על הזרקה שאפשר לבצע לקוד הזה :) אף פעם אל תעביר פרמטרים מהמשתמש ישירות לבסיס הנתונים

 

ברור אחי אל תדאג :) פשוט אל רציתי לסבך.....

אגב לא החזרתי לי תשובה לגבי server.htmlencode



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
ניר
מנהל האתר
מנהל האתר
סמל אישי

הצטרף / הצטרפה: 12 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 3296
נשלח בתאריך: 24 May 2005 בשעה 23:52 | IP רשוּם
ציטוט ניר

לא נגעתי - לא היה לי זמן. לא נראה לי גם שאני אספיק להעיף מבט על זה בקרוב - סורי.

__________________
מספר האייסיקיו שלי ו/או כתובת ה-MSN שלי אינם מהווים מוקד תמיכה
חזרה לתחילת העמוד הצג את כרטיס החבר של ניר חפש הודעות אחרות של ניר בקר בדף הבית של ניר
 
SBD
פורומיסט על
פורומיסט על
סמל אישי

הצטרף / הצטרפה: 13 January 2005
מדינה: Israel
משתמש: מנותק/ת
הודעות: 1194
נשלח בתאריך: 25 May 2005 בשעה 12:00 | IP רשוּם
ציטוט SBD

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

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



__________________
~ Nobody Is Perfect, I'm Nobody ~
פורומים
חזרה לתחילת העמוד הצג את כרטיס החבר של SBD חפש הודעות אחרות של SBD בקר בדף הבית של SBD
 
גיא
אורח
אורח


הצטרף / הצטרפה: 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 רשוּם
ציטוט Alias

נסה לרשום במקום:
קוד:
$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 ){
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
גיא
אורח
אורח


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

אחי ניסיתי ואותו הדבר שוב....

יש עוד הצעות????

חזרה לתחילת העמוד הצג את כרטיס החבר של גיא חפש הודעות אחרות של גיא בקר בדף הבית של גיא
 
Alias
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 26 May 2005 בשעה 20:40 | IP רשוּם
ציטוט Alias

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')
{
____פקודה
____פקודה
____פקודה
}
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
גיא
אורח
אורח


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

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

לא משנה מה אני מכניס זה אומר שהמשתמש אינו רשום!

חזרה לתחילת העמוד הצג את כרטיס החבר של גיא חפש הודעות אחרות של גיא בקר בדף הבית של גיא
 
Alias
משתמש חבר
משתמש חבר
סמל אישי

הצטרף / הצטרפה: 13 January 2005
משתמש: מנותק/ת
הודעות: 344
נשלח בתאריך: 27 May 2005 בשעה 04:30 | IP רשוּם
ציטוט Alias

כן אני רואה עכשיו שחסר עוד משהו. הגדרת משתנה ששומר את שם המסד אבל לא בחרת את המסד נתונים שאיתו אתה רוצה לעבוד בקיצור הקוד הסופי (אני מקווה):
קוד:
<? 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>
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 
גיא
אורח
אורח


הצטרף / הצטרפה: 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 רשוּם
ציטוט Alias

בכל ראש דף שאתה רוצה שרק מחוברים יוכלו לראותו שים את הקוד הבא:
קוד:
<?php
session_start();
if($_SESSION['UserIn']!= true) //אם לא מחובר
exit; // סיים את הקוד
?>

אני מזכיר שאתה חייב להשים את זה לפני הוצאת פלט כלשהו לדף!
חזרה לתחילת העמוד הצג את כרטיס החבר של Alias חפש הודעות אחרות של Alias בקר בדף הבית של Alias
 

אם ברצונך להגיב לנושא זה עליך קודם להתחבר
אם אינך רשום/ה כבר עליך להרשם

  שליחת תגובהשליחת נושא חדש
גרסת הדפסה גרסת הדפסה

קפיצה לפורום
אינך יכול/ה לשלוח נושאים חדשים בפורום זה
אינך יכול/ה להגיב לנושאים בפורום זה
אינך יכול/ה למחוק את הודעותיך ותגוביך בפורום זה
אינך יכול/ה לערוך את הודעותיך ותגובותיך בפורום זה
אינך יכול/ה לצור סקרים בפורום זה
אינך יכול/ה להצביע בסקרים בפורום זה