Php İle Ü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

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