826
צפיות
צפיות
11
תשובות
תשובות
התחברות לאתר בשפת PHP
שלום לכולם,
אני מנסה ליצור דף כניסה לאתר המאומת מול MYSQL ואני רוצה שאחרי שהמשתמש ביצע כניסה, הוא לא יצטרך לבצע כניסה נוספת לעולם אלא אם לחץ על כפתור LOGOUT.
כיצד ניתן לעשות זאת ?
אגב, מה שניסיתי לעשות הוא ליצו עוגייה ובה פרטי ההתחברות שלו לאתר, ובכל פעם שהאתר עולה, תיתבצע בדיקה של העוגייה שיצרתי ופרטי הכניסה לאתר. הבעיה, (כך נראה) שתוכן העוגיה נמחק ברגע שחלון הדפדפן נסגר.
אשמח על תשובה.תודה וחג שמח לכולם ולמפעילי האתר היקרים!.
אבי.
11 תשובות
תן לעוגיה תאריך תפוגה, והיא לא תמחק
צוות WebMaster
נתתי לעוגיה זמן ארוך אבל…
עדיין, לאחר שאני סוגר את הדפדפן כל הנתונים שהיו בעוגיה נמחקים.
אגב, את העוגייה יצרתי לפני פלט HTML כלשהו.
יש לכם רעיון אחר ?
תודה
אולי
בעת ניסיון ההזדהות של המשתמש (בכניסה) אתה דורס את הנתונים שהיו בקוקי לפני?
אלי ענתבי
entry interactive
http://www.entry.co.il
תשובה לשאלתך
שלום אלי,
תודה על העזרה.
אני אתאר לך בדיוק את התהליך.
בדף הכניסה login.php, אחרי שיוזר אומת אני יוצר 2 עוגיות, אחת ליוזר השנייה לסיסמא.
כמו כן אני יוצר משתנה SESSION.
אחרי שאני סוגר את הדפדפן, משמע סוגר SESSION עם השרת, האם העוגייה אמורה להישמר עם הנתונים שהוכנסו לה מקודם ?
בדף ה- header.php אני מבצע בדיקה האם יש עוגיות במחשב, אם כן אני לוקח את שם המשתמש והסיסמא מהעוגיה ומאמת אותם מול בסיס הנתונים.
בפועל מה שקורה הוא שלאחר שסגרתי את ה-SESSION, אני נדרש לבצע אימות בשנית ל-SESSION חדש. משמע העוגייה לא קיימת או שהנתונים בה נמחקו.
הנה הקוד אם זה יוכל לעזור
setcookie($DomainName_user, $username, $ExpirationTime);
setcookie($DomainName_pass, $password, $ExpirationTime);
לא מכיר PHP
אבל רעיונית מה שיכול לגרום לבעיה זה:
1. כמו שענבל אמרה למעלה – חייב לקבוע תאריך תפוגה לקוקי, אחרת היא אכן נמחקת עם סגירת הדפדפן. תוודא שאתה מגדיר את זה נכון
2. יכול להיות שהצורה שאתה כותב את העוגיה דורסת אחת את השניה. שוב, אני לא מכיר PHP אז אני לא בטוח, אבל יכול להיות.
3. תנסה לבדוק אם הקוקי אכן נכתבת מתכתחילה. יש כל מיני תוכנות לצפיה נוחה בקוקיז. תוודא שזה נכתב, שזה נכתב נכון, וכך תוכל לדעת מתי בדיוק היא נמחקת.
אלי ענתבי
entry interactive
http://www.entry.co.il
לא מספיק
אני למדתי בעבר ובניתי כמה אתרים (פרויקטים) ב-PHP עם MYSQL.
אתה מוזמן לספק קוד מלא שאוכל לנסות ולעזור לך ממה שאני זוכר
והכוונה בקוד מלא זה לכל הקוד שאחראי על בדיקת נתונים שנשלחו בטופס, הזנתם לתוך משתנים והקוד שכרגע כתבת.
"החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
http://Www.Torec.Net * http://Www.Torec.In
להלן הקוד ושוב תודה
******* login.php *****************
<?php
// Check username and password while user try to login
if (isset($_POST['login_check_if_press']) && ($_POST['login_check_if_press'] == "login")) {
if(!$_POST['user_name'] | !$_POST['password']) {
echo "Requiered fields are empty (username and password";
}else {
$username = $_POST['user_name'];
$username = mysql_escape_string($username);
$password = $_POST['password'];
$password = mysql_escape_string($password);
$sign_in_check = "SELECT UserName,Password,UserId FROM tbl_users WHERE UserName = '$username'";
$sign_in_check_result = mysql_query($sign_in_check)or die(mysql_error());
$sign_in_check2 = mysql_num_rows($sign_in_check_result);
if ($sign_in_check2 == "0") {
echo "User Name Doesn't exist";
}else {
while ($sign_in_row = mysql_fetch_array($sign_in_check_result))
{
extract($sign_in_row);
$sign_in_row_password = $sign_in_row['Password'];
$sign_in_row_userid = $sign_in_row['UserId'];
}
if ($password != $sign_in_row_password) {
echo "Your Password is w
המשך של הקוד
הבדיקה האם עוגייה נמצאת, זה נמצא ב- header.php
//Checks if there is a login cookie
if(isset($_COOKIE['DomainName_user'])) {
//if there is a cookie with user details, it logs you in and directes you to the members page
$CookieUsername = $_COOKIE['DomainName_user'];
$CookiePassword = $_COOKIE['DomainName_pass'];
}
if ($CookieUsername !="") {
$check = mysql_query("SELECT UserName,Password,UserId FROM tbl_users WHERE UserName = '$CookieUsername'")or die(mysql_error());
while($info = mysql_fetch_array($check)) {
if ($CookiePassword != $info['Password']) {
header("Location: login.php");
exit;
}else {
//Cookie was found therefor we create session id with userid and session username with username.
$_SESSION['UserId'] = $info['UserId'];
$_SESSION['UserName'] = $info['UserName'];
}
}
}
משום מה הקוד נחתך באמצע, הנה ההמשך…
}else {
$ExpirationTime = time()+946080000;
setcookie("DomainName_user", $username, $ExpirationTime);
setcookie("DomainName_pass", $password, $ExpirationTime);
//header("Location: home.php");
//exit;
}
}
}
}
?>
<form action="login.php" method="post">
<table border="0">
<tr><td>UserName:</td>
<td><input type="text" name="user_name" style="width:150px;" maxlength="20"></td>
</tr>
<tr>
<td>Password:</td>
<td><input type="password" name="password" style="width:150px;" maxlength="20"></td>
</tr>
<tr>
<td></td>
<td><input type="submit" name="login_check_if_press" value="login"></td>
</tr>
</table>
</form>
אוקי
תודה, אבל תיישר בבקשה הכל הכל לשמאל.
יותר קל לצרף את הקוד בקובץ TXT להודעתך.
"החיים הם רק הדרך במסע הנפש", בילד 2004-2008 <img src='/images/6.gif'>
http://Www.Torec.Net * http://Www.Torec.In