זהו מדריך ליצירת מערכת כניסה בעזרת PHP, MySQL ו-HTML. האתר שלך צריך להיות דינמי והמבקרים שלך צריכים שיהיה להם גישה מיידית אליו. לכן, הם רוצים להתחבר כמה שיותר פעמים. מערכת האותנטיקציה לכניסה היא דבר שכיח מאוד בכל אפליקציה אינטרנטית. היא מאפשרת למשתמשים הרשומים לגשת לאתר ולתכנים המיועדים רק לחברים. זה גם מועיל כאשר אנו רוצים לאחסן מידע למשתמשים. זה מכסה הכל מאתרי קניות, אתרי חינוך, ואתרי חברות, וכו'.
ניהול ואבטחת מערכות ארגוניות | הירשם לקורס חינם*
*קישור שותף. ראה תנאי שירות.
מדריך זה מכסה 5 חלקים.
תוכן העניינים
- דרישות
- מערכת רישום
- מערכת כניסה
- דף ברוך הבא
- סקריפט יציאה
1) דרישות לבניית מערכת כניסה ב-PHP
כדי לעקוב בהצלחה אחרי המדריך ולבנות מערכת כניסה ב-PHP, עליך להכיל ולהיות מודע לדברים הבאים:
- שרת התומך ב-PHP להרצת הקוד שלך
- ידע וידעון ב-HTML וב-CSS
- מסד נתונים של MySQL מותקן על המכשיר שלך, וידע כיצד להשתמש בו
- יכולת להוסיף את כל האבטחה הנכונה במערכת הכניסה שלך
אם יש לך את כל הדרישות הבסיסיות הללו והידע הנדרש, אתה יכול להמשיך לשלבים הבאים כדי ללמוד כיצד לבנות את מערכת הכניסה שלך ב-PHP.
2) בניית מערכת הרישום
בחלק זה, ניצור מערכת רישום שמאפשרת למשתמשים ליצור חשבון חדש במערכת. השלב הראשון שלנו הוא ליצור טופס רישום ב-HTML. הטופס פשוט ליצור. הוא מבקש רק שם, דוא"ל, סיסמה ואימות סיסמה. כתובות הדוא"ל יהיו ייחודיות לכל משתמש. לא מותרים חשבונות מרובים עבור אותה כתובת דוא"ל. יוצג הודעת שגיאה למשתמשים שמנסים ליצור חשבונות מרובים עם אותה כתובת דוא"ל.
שלב 1: יצירת טופס רישום ב-HTML
אנו ניצור קובץ PHP בשם register.php עם הקוד הבא. זהו טופס HTML פשוט עם כמה בדיקות בסיסיות. אם אינך מכיר את HTML אז תוכל להשיג אותו ממגוון אתרים מקוונים המעניקים תבניות html5 login form מוכנות.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Sign Up</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Register</h2>
<p>Please fill this form to create an account.</p>
<form action="" method="post">
<div class="form-group">
<label>Full Name</label>
<input type="text" name="name" class="form-control" required>
</div>
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<label>Confirm Password</label>
<input type="password" name="confirm_password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Already have an account? <a href="login.php">Login here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
פלט הטופס HTML למעלה ייראה כך.
כל שדות הקלט נדרשים על ידי הוספת את התכונה "required"
שהיא התכונה ברירת המחדל של HTML. השימוש בtype="email"
יאמת את כתובת הדוא"ל שסיפקו המשתמשים ויתן שגיאה אם כתובת הדוא"ל אינה תקפה. עבור טופס ההרשמה, השתמשנו בbootstrap לפיתוח מהיר. אם אתה רוצה לחסוך זמן על קוד HTML, תמיד תוכל להשתמש בכמה תבניות html5 חינמיות לפרויקט שלך.
שלב 2: יצירת טבלת מסד הנתונים MySQL
יהיה עליך ליצור מסד נתונים חדש עם שם מתאים כלשהו שתרצה. לאחר מכן אנא בצע את שאילתת ה-SQL למטה כדי ליצור את טבלת המשתמשים בתוך מסד הנתונים MySQL שיצרת זה עתה.
CREATE TABLE `users` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(75) NOT NULL,
`password` varchar(255) NOT NULL,
`email` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY `email` (`email`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=1;
שלב 3: יצירת קובץ קונפיגורציה למסד נתונים
עכשיו, יצרנו את טבלת המשתמשים. בואו ניצור קובץ PHP חדש בשם config.php כדי להתחבר למסד הנתונים MySQL. הדביקו את הקוד הבא בקובץ config.php ושנו את שם מסד הנתונים לכל מה שתבחרו בעת יצירת מסד הנתונים.
שלב 4: יצירת קובץ סשן
ניצור קובץ בשם session.php. בקובץ זה, נתחיל את הסשן ונבדוק אם משתמש כבר מחובר, אם כן אז ננתב את המשתמש לקובץ welcome.php.
שלב 5: צור טופס רישום ב-PHP
לבסוף, הגיע הזמן ליצור קוד PHP המאפשר למשתמשים לרשום את החשבונות שלהם במערכת. קוד PHP זה יזהיר את המשתמשים עם שגיאה אם כבר קיים משתמש עם אותה כתובת דוא"ל.
החליפו את הקוד הבא בקובץ register.php.
prepare("SELECT * FROM users WHERE email = ?")) {
$error = '';
// קישור פרמטרים (s = מיתר, i = שלם, b = בולב, וכו'), במקרה שלנו שם המשתמש הוא מיתר אז אנחנו משתמשים ב-"s"
$query->bind_param('s', $email);
$query->execute();
// שמור את התוצאה כך שנוכל לבדוק אם החשבון קיים במסד הנתונים.
$query->store_result();
if ($query->num_rows > 0) {
$error .= 'The email address is already registered!
';
} else {
// אמת סיסמה
if (strlen($password ) < 6) {
$error .= 'Password must have atleast 6 characters.
';
}
// אמת סיסמת אישור
if (empty($confirm_password)) {
$error .= 'Please enter confirm password.
';
} else {
if (empty($error) && ($password != $confirm_password)) {
$error .= 'Password did not match.
';
}
}
if (empty($error) ) {
$insertQuery = $db->prepare("INSERT INTO users (name, email, password) VALUES (?, ?, ?);");
$insertQuery->bind_param("sss", $fullname, $email, $password_hash);
$result = $insertQuery->execute();
if ($result) {
$error .= 'Your registration was successful!
';
} else {
$error .= 'Something went wrong!
';
}
}
}
}
$query->close();
$insertQuery->close();
// סגור חיבור למסד הנתונים
mysqli_close($db);
}
?>
Sign Up
Register
Please fill this form to create an account.
כאשר המשתמש לוחץ על כפתור השליחה, יתבצע בדיקה האם $_SERVER["REQUEST_METHOD"] == "POST"
והמשתנה $_POST['submit']
כבר הוגדר. מכיוון שדאגות אבטחה, אנו ממליצים תמיד שלא לאחסן את הסיסמה כטקסט פשוט בבסיס הנתונים. השתמשנו בפונקציית password_hash()
שיוצרת גיבוב סיסמה חדש באמצעות אלגוריתם גיבוב חד כיווני.
הסקריפט PHP שמופיע לעיל יאמת כי אין משתמש רשום עם אותו כתובת דוא"ל וגם יאמת את הסיסמה. לאחר אימות, אנו שומרים את המידע שסיפק המשתמש בטבלת המשתמשים ומוציאים הודעה למשתמש כי ההרשמה הייתה מוצלחת.
3) בניית מערכת התחברות
בחלק זה, ניצור טופס התחברות כדי לאפשר למשתמשים לגשת לאזור המוגבל במערכת. במקרה שלנו, האזור המוגבל הוא עמוד ברוך שנכסה בחלק הבא.
שלב 1: יצירת טופס התחברות ב-HTML
להלן טופס התחברות ב-HTML. יש להדביק אותו בקובץ בשם login.php
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>Login</title>
<link rel="stylesheet" href="https://stackpath.bootstrapcdn.com/bootstrap/4.4.1/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<div class="row">
<div class="col-md-12">
<h2>Login</h2>
<p>Please fill in your email and password.</p>
<form action="" method="post">
<div class="form-group">
<label>Email Address</label>
<input type="email" name="email" class="form-control" required />
</div>
<div class="form-group">
<label>Password</label>
<input type="password" name="password" class="form-control" required>
</div>
<div class="form-group">
<input type="submit" name="submit" class="btn btn-primary" value="Submit">
</div>
<p>Don't have an account? <a href="register.php">Register here</a>.</p>
</form>
</div>
</div>
</div>
</body>
</html>
הפלט של הקוד לעיל יראה כך
שלב 2: יצירת מערכת התחברות ב-PHP
לאחר שיצרנו את טופס הכניסה ב-HTML, נכתוב קוד כדי לאמת את פרטי הכניסה. בעת הגשת הטופס נבדוק שהאימייל והסיסמה מלאים. אם הם מלאים, נבצע שאילתת SELECT
כדי למצוא את הרשומה במסד הנתונים על סמך האימייל והסיסמה. אם נמצאה רשומה, אז נאחסן את ה-"userID"
בסשן ונעביר את המשתמש לקובץ welcome.php, אחרת, המשתמש יקבל הודעת שגיאה.
בואו נחליף את הקוד הבא בקובץ login.php.
Please enter email.';
}
// אמת אם הסיסמה ריקה
if (empty($password)) {
$error .= 'Please enter your password.
';
}
if (empty($error)) {
if($query = $db->prepare("SELECT * FROM users WHERE email = ?")) {
$query->bind_param('s', $email);
$query->execute();
$row = $query->fetch();
if ($row) {
if (password_verify($password, $row['password'])) {
$_SESSION["userid"] = $row['id'];
$_SESSION["user"] = $row;
// העבר את המשתמש לעמוד הברכה
header("location: welcome.php");
exit;
} else {
$error .= 'The password is not valid.
';
}
} else {
$error .= 'No User exist with that email address.
';
}
}
$query->close();
}
// סגור את החיבור
mysqli_close($db);
}
?>
Login
Login
Please fill in your email and password.
4) יצירת עמוד ברכה
למטה קוד עבור קובץ welcome.php. המשתמשים יועברו לעמוד זה לאחר תהליך הכניסה המוצלח. הוספנו קוד בראש העמוד כדי לבדוק אם המשתמש לא מחובר, ואז להפנות אותו לעמוד הכניסה.
בואו ניצור קובץ welcome.php ונדביק את הקוד הבא בתוכו.
Welcome
Hello, . Welcome to demo site.
5) סקריפט ההתנתקות
לבסוף, בואו ניצור קובץ logout.php עם הקוד הבא בתוכו.
לאחר שהמשתמש לוחץ על הקישור התנתקות, הסקריפט שמעל ייקרא כדי להשמיד את הסשן ולהפנות את המשתמש לקובץ login.php.
מסקנה
במדריך זה, הסברתי כיצד ניתן ליצור מערכת כניסה באמצעות HTML, PHP ו-MySQL. לאחר שתבינו כמה קל ליצור מערכת כניסה, ניתן להוסיף תכונות כמו איפוס סיסמה, שכחתי סיסמה, אימות כתובת דוא"ל, עריכת פרופיל משתמש ועוד.
Source:
https://dzone.com/articles/create-a-login-system-using-php