PHP ile Üyelik Sistemi

PHP ile Üyelik Sistemi

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


  1. PhpMyAdmin'e gidin ve veritabanı kimlik bilgilerinizle giriş yapın.

  2. 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 userEmailuserEmail)
    ) 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);
?>

SONUNDA


Umarım bu eğitici yazımızda hoşlanırsınız.
Daha fazla yardıma ihtiyacınız olursa, burada yeni bir yorum oluşturun ve size yardımcı olmaktan memnuniyet duyarız!

Henüz Yorum Yapılmamış, İlk Yorumu Siz Yapın

Yorum Yollayın