GİRİŞ
Bu yazıda PHP'yi kullanarak web siteniz için nasıl bir üyelik sistemi (giriş / kayıt) oluşturacağınızı öğreneceğiz.
BAŞLAMADAN ÖNCE
Bu eğiticiye başlamadan önce şunlardan emin olun:
+ PHP sürümünüzü 5.6 veya üzeri olarak ayarladınız . PHP 7.0 tavsiyemizdir.
Bunu yapmak için cPanel'e gidin ve ardından 'Ayarlar'>>
'Genel'> "Aşağı kaydır"> "PHP Versiyonu"> "5.6 '
+ Bir veritabanı oluşturduk
Bunu yapmak için, cPanel'inize gidin, Veritabanları yönet'e tıklayın, ardından
bir veritabanı oluşturun. Veritabanı kimlik bilgilerini bir yere kaydedin,
çünkü daha sonra kullanacağız.
+ Bu kod satırını .htaccess'e eklediniz.
php_flag output_buffering on
TUTARI
VERİTABANI
PhpMyAdmin'e gidin ve veritabanı kimlik bilgilerinizle giriş yapın.
Veritabanını tıklayın (örn. Id3456_cksoft), daha sonra SQL üzerine tıklayın ve aşağıdaki kodu yapıştırın
NOT EXISTS OLMADAN TABLO OLUŞTURMA users(
userIdint (11) NOT NULL AUTO_INCREMENT,
userNamevarchar (30) NOT NULL,
userEmailvarchar (60) NOT NULL,
userPassvarchar (255) NOT NULL,
PRİMER KEY ( userId),
UNIQUE KEY userEmail( userEmail)
) ENGINE = InnoDB VARSAYILAN CHARSET = utf8 AUTO_INCREMENT = 1;
Sonra GİT e tıklayın
Sonuç:
Kullanıcı bilgilerini saklamamız gereken bir tablo oluşturduk .
HTML ve PHP
Veritabanına bağlanma
Dbconnect.php adlı bir dosya oluşturun ve içine şu kodu ekleyin
<?php
error_reporting( ~E_DEPRECATED & ~E_NOTICE );
define('DBHOST', 'localhost');
define('DBUSER', 'root');
define('DBPASS', '1234');
define('DBNAME', 'dbtest');
$conn = mysqli_connect(DBHOST,DBUSER,DBPASS);
$dbcon = mysqli_select_db($conn,DBNAME);
if ( !$conn ) {
die("Connection failed : " . mysqli_error());
}
if ( !$dbcon ) {
die("Database Connection failed : " . mysqli_error());
}
?>
Şimdi şunu değiştirin:
+ DBUSER, 'cPanel'>> 'Veritabanlarını yönet' bulunan veritabanı kullanıcısı ile.
+ DBPASS ile veritabanı şifrenizi.
+ DBNAME, 'cPanel' de bulunan veritabanı adınızla>> 'Veritabanlarını yönetin'.
Giriş sayfası
Login.php adlı bir dosya oluşturun ve şu kodu ekleyin:
<?php
ob_start();
session_start();
include_once 'dbconnect.php';
if ( isset($_SESSION['user'])!="" ) {
header("Location: home.php");
exit;
}
$error = false;
if( isset($_POST['btn-login']) ) {
$email = trim($_POST['email']);
$email = strip_tags($email);
$email = htmlspecialchars($email);
$pass = trim($_POST['pass']);
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass);
if(empty($email)){
$error = true;
$emailError = "Please enter your email address.";
} else if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
$error = true;
$emailError = "Please enter a valid email address.";
}
if(empty($pass)){
$error = true;
$passError = "Please enter your password.";
}
if (!$error) {
$password = hash('sha256', $pass);
$res=mysqli_query($conn,"SELECT userId, userName, userPass FROM users WHERE userEmail='$email'");
$row=mysqli_fetch_array($res);
$count = mysqli_num_rows($res);
if( $count == 1 && $row['userPass']==$password ) {
$_SESSION['user'] = $row['userId'];
header("Location: home.php");
} else {
$errMSG = "Incorrect Credentials, Please try again...";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>000Webhost membership system</title>
</head>
<body>
<div class="container">
<div id="login-form">
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off">
<div class="col-md-12">
<div class="form-group">
<h2 class="">Sign In.</h2>
</div>
<div class="form-group">
<hr />
</div>
<?php
if ( isset($errMSG) ) {
?>
<div class="form-group">
<div class="alert alert-danger">
<span class="glyphicon glyphicon-info-sign"></span> <?php echo $errMSG; ?>
</div>
</div>
<?php
}
?>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
<input type="email" name="email" class="form-control" placeholder="Your Email" value="<?php echo $email; ?>" maxlength="40" />
</div>
<span class="text-danger"><?php echo $emailError; ?></span>
</div>
<div class="form-group">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="pass" class="form-control" placeholder="Your Password" maxlength="15" />
</div>
<span class="text-danger"><?php echo $passError; ?></span>
</div>
<div class="form-group">
<hr />
</div>
<div class="form-group">
<button type="submit" class="btn btn-block btn-primary" name="btn-login">Sign In</button>
</div>
<div class="form-group">
<hr />
</div>
<div class="form-group">
<a href="signup.php">Sign Up Here...</a>
</div>
</div>
</form>
</div>
</div>
</body>
</html>
<?php ob_end_flush(); ?>
Kayıt sayfası
Signup.php adlı bir dosya oluşturun ve şu kodu ekleyin:
<?php
ob_start();
session_start();
if( isset($_SESSION['user'])!="" ){
header("Location: home.php");
}
include_once 'dbconnect.php';
$error = false;
if ( isset($_POST['btn-signup']) ) {
$name = trim($_POST['name']);
$name = strip_tags($name);
$name = htmlspecialchars($name);
$email = trim($_POST['email']);
$email = strip_tags($email);
$email = htmlspecialchars($email);
$pass = trim($_POST['pass']);
$pass = strip_tags($pass);
$pass = htmlspecialchars($pass);
if (empty($name)) {
$error = true;
$nameError = "Please enter your full name.";
} else if (strlen($name) < 3) {
$error = true;
$nameError = "Name must have atleat 3 characters.";
} else if (!preg_match("/^[a-zA-Z ]+$/",$name)) {
$error = true;
$nameError = "Name must contain alphabets and space.";
}
if ( !filter_var($email,FILTER_VALIDATE_EMAIL) ) {
$error = true;
$emailError = "Please enter valid email address.";
} else {
$query = "SELECT userEmail FROM users WHERE userEmail='$email'";
$result = mysqli_query($conn,$query);
$count = mysqli_num_rows($result);
if($count!=0){
$error = true;
$emailError = "Provided Email is already in use.";
}
}
if (empty($pass)){
$error = true;
$passError = "Please enter password.";
} else if(strlen($pass) < 6) {
$error = true;
$passError = "Password must have atleast 6 characters.";
}
$password = hash('sha256', $pass);
if( !$error ) {
$query = "INSERT INTO users(userName,userEmail,userPass) VALUES('$name','$email','$password')";
$res = mysqli_query($conn,$query);
if ($res) {
$errTyp = "success";
$errMSG = "Successfully registered, you may login now";
unset($name);
unset($email);
unset($pass);
} else {
$errTyp = "danger";
$errMSG = "Something went wrong, try again later...";
}
}
}
?>
<!DOCTYPE html>
<html>
<head>
<title>Sign Up - 000webhost membership system</title>
</head>
<body content="width=device-width,initial-scale=1.0, maximum-scale=1.0, user-scalable=no">
<center>
<form method="post" action="<?php echo htmlspecialchars($_SERVER['PHP_SELF']); ?>" autocomplete="off"> <h2 class="">Sign Up.</h2>
<hr />
<?php
if ( isset($errMSG) ) {
?>
<span class="glyphicon glyphicon-info-sign"></span> <?php echo $errMSG; ?>
</div>
</div>
<?php
}
?>
<span class="input-group-addon"><span class="glyphicon glyphicon-user"></span></span>
<input type="text" name="name" class="form-control" placeholder="Enter Name" maxlength="50" value="<?php echo $name ?>" />
<span class="text-danger"><?php echo $nameError; ?></span>
<br>
<span class="input-group-addon"><span class="glyphicon glyphicon-envelope"></span></span>
<input type="email" name="email" class="form-control" placeholder="Enter Your Email" maxlength="40" value="<?php echo $email ?>" />
<span class="text-danger"><?php echo $emailError; ?></span>
</div>
<br>
<span class="input-group-addon"><span class="glyphicon glyphicon-lock"></span></span>
<input type="password" name="pass" class="form-control" placeholder="Enter Password" maxlength="15" />
<span class="text-danger"><?php echo $passError; ?></span>
<br>
<div class="form-group">
<hr />
<button type="submit" class="btn btn-block btn-primary" name="btn-signup">Sign Up</button>
<hr />
<a href="login.php">Already have an account? Sign in !</a>
</form>
</center>
</body>
</html>
<?php ob_end_flush(); ?>
Ana sayfa
Başarılı bir oturum açtıktan sonra kullanıcı ana sayfa adı verilen bir sayfaya yönlendirilir. Home.php adlı bir dosya oluşturun ve şu kodu ekleyin:
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
if( !isset($_SESSION['user']) ) {
header("Location: login.php");
exit;
}
$res=mysqli_query($conn,"SELECT * FROM users WHERE userId=".$_SESSION['user']);
$userRow=mysqli_fetch_array($res);
?>
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>Welcome - <?php echo $userRow['userName']; ?></title>
</head>
<body>
<h1>This page is only visible for logged in users<h1>
<a href="logout.php?logout">Logout</a>
</body>
</html>
<?php ob_end_flush(); ?>
Çıkış sayfası
Logout.php adlı bir dosya oluşturun ve şu kodu ekleyin:
<?php
session_start();
if (!isset($_SESSION['user'])) {
header("Location: index.php");
} else if(isset($_SESSION['user'])!="") {
header("Location: home.php");
}
if (isset($_GET['logout'])) {
unset($_SESSION['user']);
session_unset();
session_destroy();
header("Location: login.php");
exit;
}
?>
Sonuç:
5 dosyayı yarattık:
+ dbconnect.php veritabanına bağlanmak ve doğru veritabanını seçmek
+ login.php kullanıcıların oturum
açması + signup.php kullanıcıların kaydolması için
+ home.php oturum açmış kullanıcılar
+ logout.php kullanıcılardan çıkmak için
DİKKAT EDİN
Bu kod parçasını, oturum açmış kullanıcıların yalnızca erişmesini istediğiniz her sayfanın üst kısmına ekleyin
<?php
ob_start();
session_start();
require_once 'dbconnect.php';
if( !isset($_SESSION['user']) ) {
header("Location: index.php");
exit;
}
$res=mysqli_query($conn,"SELECT * FROM users WHERE userId=".$_SESSION['user']);
$userRow=mysqli_fetch_array($res);
?>
Kaynak: https://immibbilisim.com/
https://immibbilisim.com/blog/422/php-ile-uyelik-sistemi
Yorumlar
Yorum Gönder